On Sun, Feb 25, 2024 at 11:38:35PM +0100, Mathias De Weerdt wrote: > Hi > > I am writing to report a potential bug in the Linux kernel related to > waking from suspend on a system(Laptop) with a Genesys Logic GL9755 SD > Host Controller. Below are the details of the issue: Hi Mathias, thanks very much for this report. A few questions below. > Issue Description: > After suspending the system, waking it up takes an extended amount of > time, typically 1 to 2 minutes. The delay occurs consistently and is > observed in the dmesg logs. > > > System Information: > - OS: Arch Linux x86_64 > - Kernel: 6.7.5-arch1-1 and 6.7.6-arch1-1 > - SD Host Controller: Genesys Logic GL9755 SD Host Controller (PCI ID: > 17a0:9755) > > Observed Logs (dmesg): > [ 642.483972] sdhci-pci 0000:2f:00.0: not ready 1023ms after resume; waiting > [ 643.537370] sdhci-pci 0000:2f:00.0: not ready 2047ms after resume; waiting > [ 645.724028] sdhci-pci 0000:2f:00.0: not ready 4095ms after resume; waiting > [ 649.990655] sdhci-pci 0000:2f:00.0: not ready 8191ms after resume; waiting > [ 658.310658] sdhci-pci 0000:2f:00.0: not ready 16383ms after resume; waiting > [ 675.590673] sdhci-pci 0000:2f:00.0: not ready 32767ms after resume; waiting > [ 709.723965] sdhci-pci 0000:2f:00.0: not ready 65535ms after resume; giving up > [ 709.724183] sdhci-pci 0000:2f:00.0: Unable to change power state > from D3cold to D0, device inaccessible > > [ 709.931501] mmc0: enable PCI MSI failed, error=-22 > [ 710.031516] mmc0: Reset 0x1 never completed. > [ 710.031519] mmc0: sdhci: ============ SDHCI REGISTER DUMP =========== > [ 710.031522] mmc0: sdhci: Sys addr: 0xffffffff | Version: 0x0000ffff > [ 710.031525] mmc0: sdhci: Blk size: 0x0000ffff | Blk cnt: 0x0000ffff > [ 710.031527] mmc0: sdhci: Argument: 0xffffffff | Trn mode: 0x0000ffff > [ 710.031529] mmc0: sdhci: Present: 0xffffffff | Host ctl: 0x000000ff > [ 710.031532] mmc0: sdhci: Power: 0x000000ff | Blk gap: 0x000000ff > [ 710.031534] mmc0: sdhci: Wake-up: 0x000000ff | Clock: 0x0000ffff > [ 710.031536] mmc0: sdhci: Timeout: 0x000000ff | Int stat: 0xffffffff > [ 710.031539] mmc0: sdhci: Int enab: 0xffffffff | Sig enab: 0xffffffff > [ 710.031541] mmc0: sdhci: ACmd stat: 0x0000ffff | Slot int: 0x0000ffff > [ 710.031543] mmc0: sdhci: Caps: 0xffffffff | Caps_1: 0xffffffff > [ 710.031545] mmc0: sdhci: Cmd: 0x0000ffff | Max curr: 0xffffffff > [ 710.031547] mmc0: sdhci: Resp[0]: 0xffffffff | Resp[1]: 0xffffffff > [ 710.031549] mmc0: sdhci: Resp[2]: 0xffffffff | Resp[3]: 0xffffffff > [ 710.031551] mmc0: sdhci: Host ctl2: 0x0000ffff > [ 710.031554] mmc0: sdhci: ADMA Err: 0xffffffff | ADMA Ptr: 0xffffffffffffffff > [ 710.031555] mmc0: sdhci: ============================================ Reads to a device in D3cold (powered off) cause PCI errors, which typically result in ~0 return values like this. > [ 710.031558] sdhci-pci 0000:2f:00.0: PM: dpm_run_callback(): > pci_pm_resume+0x0/0xf0 returns -22 > [ 710.031567] sdhci-pci 0000:2f:00.0: PM: failed to resume async: error -22 > ... > [ 710.823719] random: crng reseeded on system resumption > [ 710.829332] mmc0: 3.3V regulator output did not become stable > [ 710.860354] PM: suspend exit > [ 710.974677] mmc0: Controller never released inhibit bit(s). > [ 710.974690] mmc0: sdhci: ============ SDHCI REGISTER DUMP =========== > [ 710.974698] mmc0: sdhci: Sys addr: 0xffffffff | Version: 0x0000ffff > [ 710.974709] mmc0: sdhci: Blk size: 0x0000ffff | Blk cnt: 0x0000ffff > [ 710.974712] mmc0: sdhci: Argument: 0xffffffff | Trn mode: 0x0000ffff > [ 710.974715] mmc0: sdhci: Present: 0xffffffff | Host ctl: 0x000000ff > [ 710.974717] mmc0: sdhci: Power: 0x000000ff | Blk gap: 0x000000ff > [ 710.974720] mmc0: sdhci: Wake-up: 0x000000ff | Clock: 0x0000ffff > [ 710.974723] mmc0: sdhci: Timeout: 0x000000ff | Int stat: 0xffffffff > [ 710.974725] mmc0: sdhci: Int enab: 0xffffffff | Sig enab: 0xffffffff > [ 710.974728] mmc0: sdhci: ACmd stat: 0x0000ffff | Slot int: 0x0000ffff > [ 710.974731] mmc0: sdhci: Caps: 0xffffffff | Caps_1: 0xffffffff > [ 710.974733] mmc0: sdhci: Cmd: 0x0000ffff | Max curr: 0xffffffff > [ 710.974736] mmc0: sdhci: Resp[0]: 0xffffffff | Resp[1]: 0xffffffff > [ 710.974738] mmc0: sdhci: Resp[2]: 0xffffffff | Resp[3]: 0xffffffff > [ 710.974740] mmc0: sdhci: Host ctl2: 0x0000ffff > [ 710.974743] mmc0: sdhci: ADMA Err: 0xffffffff | ADMA Ptr: 0xffffffffffffffff > [ 710.974744] mmc0: sdhci: ============================================ > [ 711.074847] mmc0: Reset 0x2 never completed. > ... > > > Additional Information: > - The delay persists even after attempting to blacklist the driver > (sdhci_pci). Using modprobe or kernel parameters. > - Secure boot and fast boot are disabled. > - There are no additional sleep state or configuration options in the BIOS. > - Output of `cat /sys/power/mem_sleep`: [s2idle] deep > > > Hardware Details: > 2f:00.0 SD Host controller [0805]: Genesys Logic, Inc GL9755 SD Host > Controller [17a0:9755] (rev 01) > Subsystem: ASUSTeK Computer Inc. GL9755 SD Host Controller [1043:202f] > Kernel driver in use: sdhci-pci > Kernel modules: sdhci_pci > > > Please let me know if there is any additional information needed from > my side to diagnose or resolve this issue. I am willing to provide any > log files or assist in testing patches. I assume this has never worked well, right? If it *has* worked better on an older kernel, this would be a regression, and it would be very helpful to know the newest kernel that works better, and we could bisect between that and the broken kernel. Can you please collect the complete dmesg log and the output of "sudo lspci -vvxxxx" after waking the system? These will have some details about the firmware that is probably involved in changing the power state from D3cold to D0, and also any errors logged when we try to read from the device. You can open a report at https://bugzilla.kernel.org and attach the logs there if they're too large for the mailing lists (http://vger.kernel.org/majordomo-info.html). Bjorn