Suspend problems with LPSS on Alder Lake CPU

Hi folks,

(my 1st post, please be gentle :slight_smile:

Currently running Release: 21.2.1 (Qonos) / with 5.15.12.1 kernel

I’ve upgraded CPU and motherboard on my PC, to i7-12700kf and z690 (board: gigabyte z690 gaming x ddr4 with F6 bios which is the latest currently).

Since the upgrade been having problems with resume from s3 suspend in Linux (tried 5.13, 5.14, 5.15 and couple of RC of 5.16).

Simptoms: PC would start resuming - i.e. fans would start spinning, disk would blink once, but then it just sits there - monitor still on power saving, keyboard dead, ethernet network link is down.

After a lot of experimentation i found that resume starts working if i disable ‘IOAPIC 24-119’ in BIOS. Which got me thinking ‘noapic’ kernel parameter would help as well (and it did)… then i noticed that both approaches effectively lead to intel_lpss_pci failing to initialize… I.e. if intel_lpss_pci is failing then resume from suspend is working…

Even if pc boots with intel_lpss_pci (which properly initializes) and then rmmod it before suspend - resume still works.

Of course this solves the immediate problem, but the engineer in me is craving to understand whats broken with lpss - if i understand correctly it is needed for i2c, spi and that sort of things… this is desktop, so no touchpads or backlight, no inbuilt wireless etc - perhaps monitoring sensors would be impacted. I wonder if there is a way to debug or understand better what is wrong with lpss?

For reference here is part of dmesg from when everything is enabled, lpss inits (but resume fails)

[    0.000000] Linux version 5.15.12-1-MANJARO (builduser@fv-az39-353) (gcc (GCC) 11.1.0, GNU ld (GNU Binutils) 2.36.1) #1 SMP PREEMPT Wed Dec 29 18:08:07 UTC 2021
...
[    6.808962] intel-pmt 0000:00:0a.0: Watcher not supported
[    6.808965] intel-pmt 0000:00:0a.0: Crashlog not supported
[    6.976571] intel-lpss 0000:00:15.0: enabling device (0004 -> 0006)
[    6.976812] idma64 idma64.0: Found Intel integrated DMA 64-bit
[    6.996786] intel-lpss 0000:00:15.1: enabling device (0004 -> 0006)
[    6.997019] idma64 idma64.1: Found Intel integrated DMA 64-bit
[    7.020079] intel-lpss 0000:00:15.2: enabling device (0004 -> 0006)
[    7.021574] idma64 idma64.2: Found Intel integrated DMA 64-bit
[    7.057110] intel-lpss 0000:00:15.3: enabling device (0004 -> 0006)
[    7.057967] idma64 idma64.3: Found Intel integrated DMA 64-bit
[    7.086751] intel-lpss 0000:00:19.0: enabling device (0004 -> 0006)
[    7.088289] idma64 idma64.4: Found Intel integrated DMA 64-bit
[    7.113555] intel-lpss 0000:00:19.1: enabling device (0004 -> 0006)
[    7.114906] idma64 idma64.5: Found Intel integrated DMA 64-bit

For comparison here is what happens with ‘noapic’ (same kernel)

[    7.316448] intel-lpss 0000:00:15.0: enabling device (0004 -> 0006)
[    7.316610] intel-lpss 0000:00:15.0: can't derive routing for PCI INT A
[    7.316611] intel-lpss 0000:00:15.0: PCI INT A: no GSI
[    7.316629] intel-lpss: probe of 0000:00:15.0 failed with error -22
[    7.333092] intel-lpss 0000:00:15.1: enabling device (0004 -> 0006)
[    7.333264] intel-lpss 0000:00:15.1: can't derive routing for PCI INT B
[    7.333266] intel-lpss 0000:00:15.1: PCI INT B: not connected
[    7.333289] intel-lpss: probe of 0000:00:15.1 failed with error -22
[    7.349784] intel-lpss 0000:00:15.2: enabling device (0004 -> 0006)
[    7.349851] intel-lpss 0000:00:15.2: can't derive routing for PCI INT C
[    7.349852] intel-lpss 0000:00:15.2: PCI INT C: not connected
[    7.349871] intel-lpss: probe of 0000:00:15.2 failed with error -22
[    7.366532] intel-lpss 0000:00:15.3: enabling device (0004 -> 0006)
[    7.366995] intel-lpss 0000:00:15.3: can't derive routing for PCI INT D
[    7.367000] intel-lpss 0000:00:15.3: PCI INT D: not connected
[    7.367051] intel-lpss: probe of 0000:00:15.3 failed with error -22
[    7.383339] intel-lpss 0000:00:19.0: enabling device (0004 -> 0006)
[    7.383928] intel-lpss 0000:00:19.0: can't derive routing for PCI INT A
[    7.383938] intel-lpss 0000:00:19.0: PCI INT A: not connected
[    7.383993] intel-lpss: probe of 0000:00:19.0 failed with error -22
[    7.399750] intel-lpss 0000:00:19.1: enabling device (0004 -> 0006)
[    7.399870] intel-lpss 0000:00:19.1: can't derive routing for PCI INT B
[    7.399872] intel-lpss 0000:00:19.1: PCI INT B: not connected
[    7.399897] intel-lpss: probe of 0000:00:19.1 failed with error -22
[    7.400622] ACPI: \_SB_.LNKB: BIOS reported IRQ 1, using IRQ 10
[    7.400625] ACPI: \_SB_.LNKB: Enabled at IRQ 10

there are a few ACPI issues thrown, i wonder if there is any connection to resume:

[    0.262732] ACPI BIOS Error (bug): Failure creating named object [\ADBG], AE_ALREADY_EXISTS (20210730/dswload2-326)
[    0.262736] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20210730/psobject-220)
[    0.262738] ACPI: Skipping parse of AML opcode: Method (0x0014)
[    0.272561] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PC00.I2C1.TPL1], AE_NOT_FOUND (20210730/dswload2-162)
[    0.272564] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20210730/psobject-220)
[    0.272565] ACPI: Skipping parse of AML opcode: Scope (0x0010)
[    0.279360] ACPI: 16 ACPI AML tables successfully acquired and loaded

In particular that TPL1 - is that a trackpad? Odd - this is desktop computer, build from individual pieces - pretty sure it doesn’t have a trackpad or touchscreen. Can it be a remnant living in the ACPI/BIOS? Since it mentions I2C - i wonder if this not something that combined lpss may lead to hang during resume? Is there any way to test this idea (if it is no wildly off of course :slight_smile:

Could the search for TPL come from these

...
[    0.194029] ACPI: Added _OSI(Module Device)
[    0.194029] ACPI: Added _OSI(Processor Device)
[    0.194029] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.194029] ACPI: Added _OSI(Processor Aggregator Device)
[    0.194029] ACPI: Added _OSI(Linux-Dell-Video)
[    0.194029] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.194029] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)

last 3 mainly? I haven’t yet found how to stop these…

System in question

CPU: 12-core (8-mt/4-st) 12th Gen Intel Core i7-12700KF (-MST AMCP-)
speed/min/max: 800/800/5000:3800 MHz Kernel: 5.16.0-1-MANJARO x86_64 Up: 12m
Mem: 1689.8/31938.6 MiB (5.3%) Storage: 3.19 TiB (0.3% used) Procs: 348
Shell: Bash inxi: 3.3.11
4 Likes

Hi @kiloba, and welcome!

Thank you for all the info, it is really good to have it. I doubt I’ll be able to help, however. But I can point you in this direction, [HowTo] Provide System Information and in this one [HowTo] post screenshots and links if applicable.

I’ll also give you a tip for the future: when posting terminal output, please wrap the text in three backticks (```) both before and after the pasted text. Like this:

```
pasted text
```

This will just cause it to render like this:

Quis tincidunt
cursus quisque
proin
sollicitudin
proin gravida
eros id nunc eros proin ex lorem.

Instead of like this:

Quis tincidunt cursus quisque proin sollicitudin proin gravida eros id nunc eros proin ex lorem.

thereby increasing legibility and thus making it easier for those trying to be of assistance.

(If you could go ahead and edit your post according to that, it’d be great.)

you have to wait patches kernels linux for that ,
and stay on version 5.16 stable coming.

Thank you both for guidance and advice! I have updated the post to quote the ternimal outputs better, added some system info and installed 5.16 which just came out. Didn’t make a difference :slight_smile: Will try to read the sources of intel_lpss_pci, doesn’t seem to long…

1 Like

Does anyone know if there is a patch in the works for this? Issue persists on 5.16 stable

I’m so glad I eventually found your post, I’ve been having similar issues but on the Gigabyte B660M. Glad to report that disabling “IOAPIC 24-119” works for me too. Again a big thank you for doing the experimentation to find a workaround.

1 Like

Thanks man. Work for me. After a lot of solution I tested, adding noapic to the kernel work for me.

there are 2 patches on suspend/resume in version 6.1.12
in https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.12

Revert “PCI/ASPM: Refactor L1 PM Substates Control Register programming”
Revert “PCI/ASPM: Save L1 PM Substates Capability for suspend/resume”

kernel version 6.1.12 is in Testing

Hi fellow!!! I have the same issue, my Asus ExpertBook B1500C doesnt´t wake up after suspension…how did you solve this issue??