mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Re: [BUG] Genesys GL9750 (17a0:9750) does not respond after its PCIe  slot is powered back on from D3cold, on s2idle resume and at runtime  (ASUS Vivobook 14 Flip TP3407SA, kernel 7.3.1)
       [not found] <x4G_0cgWnHWJtmgP4iX3hFfwwbWDyVuO9Ps8Pv_Rnq4VguufBRLzZex1IxGuTtaYfU7tS7U8RbKjB2I54HxfEmPk3gzKWvYDAyuZXrtWbDU=@protonmail.com>
@ 2026-11-05  3:32 ` Kyle Baedke
  2026-11-05  6:04   ` Adrian Hunter
  0 siblings, 1 reply; 2+ messages in thread
From: Kyle Baedke @ 2026-11-05  3:32 UTC (permalink / raw)
  To: adrian.hunter, bhelgaas, rafael
  Cc: linux-mmc, linux-pci, linux-acpi, linux-kernel



On Wednesday, November 4th, 2026 at 2:52 PM, Kyle Baedke <kylebaedke@protonmail.com> wrote:
First copy was in html mode this should be in plaintext
> The GL9750 SD host controller in my laptop is dead after its PCIe slot has
> been powered off and back on through the root port's ACPI power resource.
> This happens on resume from s2idle, and I can also reproduce it at runtime
> with no sleep involved. In both cases the link below the root port never
> comes up, so the device reads as all-ones. The sdhci errors are a
> consequence of that. I'm writing to the sdhci maintainers because the
> device is driven by sdhci-pci-gli, but the failure occurs before the
> driver can talk to the device.
> 
> == System ==
> 
>   Laptop:    ASUS Vivobook 14 Flip TP3407SA
>   BIOS:      TP3407SA.308, 03/05/2026 (the latest available)
>   Kernel:    7.3.1 (NixOS 26.11), x86_64
>   Device:    0000:2c:00.0  Genesys Logic GL9750 [17a0:9750] rev 1,
>              subsystem 1043:202f
>   Upstream:  root port 0000:00:1c.4 (ACPI \_SB.PC00.RP05), link 2.5GT/s x1
>   Cmdline:   intel_iommu=on iommu=pt pcie_aspm.policy=powersave
>              (the relevant parameters)
>   Sleep:     /sys/power/mem_sleep = [s2idle] deep. Selecting "deep" (S3)
>              hangs the machine and needs power to be cut to recover, so
>              s2idle is the only usable sleep mode.
> 
> The root port's ACPI node has power resources (power_resources_D0 and
> power_resources_D3hot in sysfs). The endpoint's ACPI node has none.
> 
> Other firmware/kernel messages seen at boot:
> 
>   ACPI: \_SB_.PEPD: Duplicate LPS0 _DSM functions (mask: 0x1)
>   pci 0000:00:1c.4: mask Replay Timer Timeout Correctable Errors due to
>       0000:2c:00.0 hardware defect
> 
> == Symptom ==
> 
> After the slot is powered back on, config space reads of the device return
> ffff, the port's Link Status stays 0x1011 (Data Link Layer Link Active = 0,
> not training), and sdhci reports:
> 
>   mmc0: sdhci: Version: 0x0000ffff   (register dump is all 0xff)
>   mmc0: enable PCI MSI failed, error=-22
>   mmc0: Reset 0x1 never completed.
>   mmc0: 3.3V regulator output did not become stable
>   mmc0: Controller never released inhibit bit(s).
> 
> On a healthy boot the port's Link Status is 0x3011.
> 
> == Resume trace ==
> 
> Captured with rtcwake -m mem -s 15 (s2idle), pm_debug_messages=1 and
> dynamic debug enabled for drivers/pci/*, drivers/acpi/power.c and
> drivers/acpi/device_pm.c:
> 
>   [  145.370215] sdhci-pci 0000:2c:00.0: PCI PM: Suspend power state: D3hot
>   [  145.406917] ACPI: \_SB_.PC00.RP05.PXP_: ACPI: PM: Power resource turned off
>   [  145.406948] pcieport 0000:00:1c.4: PCI PM: Suspend power state: D3cold
>   ...
>   [  159.865842] ACPI: \_SB_.PC00.RP05: PM: Power state change: D3cold -> D0
>   [  160.263869] ACPI: \_SB_.PC00.RP05.PXP_: ACPI: PM: Power resource turned on
>   [  160.264234] ACPI: \_SB_.PC00.RP05: PM: Power state changed to D0
>   [  160.264241] pcieport 0000:00:1c.4: power state changed by ACPI to D0
>   [  160.276459] pcieport 0000:00:1c.4: ready 0ms after power up D3hot->D0uninitialized
>   [  160.276866] pcieport 0000:00:1c.4: waiting 100 ms for downstream link, after activation
>   [  161.297053] pcieport 0000:00:1c.4: Data Link Layer Link Active not set in 100 msec
>   [  161.303943] sdhci-pci 0000:2c:00.0: restore config 0x3c: 0xffffffff -> 0x000001ff
>   [  161.321478] mmc0: enable PCI MSI failed, error=-22
>   [  161.421611] mmc0: Reset 0x1 never completed.
>   [  161.741170] mmc0: 3.3V regulator output did not become stable
> 
> The slot was off for about 15 s (145.407 to 160.264), so this is not a
> short-off-time problem.
> 
> == Reproduction without suspend ==
> 
> From a healthy boot (device alive, no SD card inserted):
> 
>   echo 1    > /sys/bus/pci/devices/0000:2c:00.0/remove
>   echo 1    > /sys/bus/pci/devices/0000:00:1c.4/d3cold_allowed
>   echo auto > /sys/bus/pci/devices/0000:00:1c.4/power/control
>   # the root port's power_state reached D3cold after about 2 s
>   sleep 1
>   echo on   > /sys/bus/pci/devices/0000:00:1c.4/power/control
>   # port is D0 again, but its Link Status is 0x1011 (DLActive = 0)
>   echo 1    > /sys/bus/pci/rescan     # repeated once per second for 15 s
> 
> The device never reappears, and Link Status stays 0x1011 for the whole
> 15 s. This uses only a 1 s off time.
> 
> == What I tried ==
> 
> Suspend variants, each run with rtcwake -m mem -s 15 (s2idle), no SD card
> inserted. All of these failed on the first cycle:
> 
>   - no changes
>   - endpoint power/control=on
>   - root port power/control=on
>   - endpoint link/l1_2_aspm and link/l1_2_pcipm set to 0
>   - endpoint link/l1_aspm, l1_1_aspm, l1_2_aspm, l1_1_pcipm, l1_2_pcipm
>     all set to 0
>   - endpoint removed before suspend, rescanned after resume
> 
> This one passed 10/10 cycles (device alive 2 s and 8 s after resume, port
> Link Status 0x3011 each time):
> 
>   - d3cold_allowed=0 on both the endpoint and the root port, set just
>     before suspend and restored to 1 right after resume
> 
> Recovery attempted after a failed resume, with the root port held in D0
> (power/control=on) and the rescan polled for 15 s per stage. None brought
> the device back, and Link Status stayed 0x1011 throughout:
> 
>   - remove + rescan
>   - secondary bus reset on the root port, then rescan
>   - Link Disable / enable on the root port, then rescan
> 
> == Questions ==
> 
> 1. Is this a known issue with this device or this platform's slot power-on
>    method?
> 2. What additional tracing would help (ACPI AML debugging, GPIO/pinctrl
>    state before and after the power resource turns on, anything else)?
> 
> I can build and test patches on this machine.
> 
> Thanks,
> Kyle
> 
> Sent with Proton Mail secure email.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [BUG] Genesys GL9750 (17a0:9750) does not respond after its PCIe slot is powered back on from D3cold, on s2idle resume and at runtime (ASUS Vivobook 14 Flip TP3407SA, kernel 7.3.1)
  2026-11-05  3:32 ` [BUG] Genesys GL9750 (17a0:9750) does not respond after its PCIe slot is powered back on from D3cold, on s2idle resume and at runtime (ASUS Vivobook 14 Flip TP3407SA, kernel 7.3.1) Kyle Baedke
@ 2026-11-05  6:04   ` Adrian Hunter
  0 siblings, 0 replies; 2+ messages in thread
From: Adrian Hunter @ 2026-11-05  6:04 UTC (permalink / raw)
  To: Ben Chuang
  Cc: linux-mmc, bhelgaas, rafael, linux-pci, linux-acpi, linux-kernel,
	Kyle Baedke, VictorShih[施勝文]

+ Ben Chuang

On 05/11/2026 05:32, Kyle Baedke wrote:
> 
> 
> On Wednesday, November 4th, 2026 at 2:52 PM, Kyle Baedke <kylebaedke@protonmail.com> wrote:
> First copy was in html mode this should be in plaintext
>> The GL9750 SD host controller in my laptop is dead after its PCIe slot has
>> been powered off and back on through the root port's ACPI power resource.
>> This happens on resume from s2idle, and I can also reproduce it at runtime
>> with no sleep involved. In both cases the link below the root port never
>> comes up, so the device reads as all-ones. The sdhci errors are a
>> consequence of that. I'm writing to the sdhci maintainers because the
>> device is driven by sdhci-pci-gli, but the failure occurs before the
>> driver can talk to the device.
>>
>> == System ==
>>
>>   Laptop:    ASUS Vivobook 14 Flip TP3407SA
>>   BIOS:      TP3407SA.308, 03/05/2026 (the latest available)
>>   Kernel:    7.3.1 (NixOS 26.11), x86_64
>>   Device:    0000:2c:00.0  Genesys Logic GL9750 [17a0:9750] rev 1,
>>              subsystem 1043:202f
>>   Upstream:  root port 0000:00:1c.4 (ACPI \_SB.PC00.RP05), link 2.5GT/s x1
>>   Cmdline:   intel_iommu=on iommu=pt pcie_aspm.policy=powersave
>>              (the relevant parameters)
>>   Sleep:     /sys/power/mem_sleep = [s2idle] deep. Selecting "deep" (S3)
>>              hangs the machine and needs power to be cut to recover, so
>>              s2idle is the only usable sleep mode.
>>
>> The root port's ACPI node has power resources (power_resources_D0 and
>> power_resources_D3hot in sysfs). The endpoint's ACPI node has none.
>>
>> Other firmware/kernel messages seen at boot:
>>
>>   ACPI: \_SB_.PEPD: Duplicate LPS0 _DSM functions (mask: 0x1)
>>   pci 0000:00:1c.4: mask Replay Timer Timeout Correctable Errors due to
>>       0000:2c:00.0 hardware defect
>>
>> == Symptom ==
>>
>> After the slot is powered back on, config space reads of the device return
>> ffff, the port's Link Status stays 0x1011 (Data Link Layer Link Active = 0,
>> not training), and sdhci reports:
>>
>>   mmc0: sdhci: Version: 0x0000ffff   (register dump is all 0xff)
>>   mmc0: enable PCI MSI failed, error=-22
>>   mmc0: Reset 0x1 never completed.
>>   mmc0: 3.3V regulator output did not become stable
>>   mmc0: Controller never released inhibit bit(s).
>>
>> On a healthy boot the port's Link Status is 0x3011.
>>
>> == Resume trace ==
>>
>> Captured with rtcwake -m mem -s 15 (s2idle), pm_debug_messages=1 and
>> dynamic debug enabled for drivers/pci/*, drivers/acpi/power.c and
>> drivers/acpi/device_pm.c:
>>
>>   [  145.370215] sdhci-pci 0000:2c:00.0: PCI PM: Suspend power state: D3hot
>>   [  145.406917] ACPI: \_SB_.PC00.RP05.PXP_: ACPI: PM: Power resource turned off
>>   [  145.406948] pcieport 0000:00:1c.4: PCI PM: Suspend power state: D3cold
>>   ...
>>   [  159.865842] ACPI: \_SB_.PC00.RP05: PM: Power state change: D3cold -> D0
>>   [  160.263869] ACPI: \_SB_.PC00.RP05.PXP_: ACPI: PM: Power resource turned on
>>   [  160.264234] ACPI: \_SB_.PC00.RP05: PM: Power state changed to D0
>>   [  160.264241] pcieport 0000:00:1c.4: power state changed by ACPI to D0
>>   [  160.276459] pcieport 0000:00:1c.4: ready 0ms after power up D3hot->D0uninitialized
>>   [  160.276866] pcieport 0000:00:1c.4: waiting 100 ms for downstream link, after activation
>>   [  161.297053] pcieport 0000:00:1c.4: Data Link Layer Link Active not set in 100 msec
>>   [  161.303943] sdhci-pci 0000:2c:00.0: restore config 0x3c: 0xffffffff -> 0x000001ff
>>   [  161.321478] mmc0: enable PCI MSI failed, error=-22
>>   [  161.421611] mmc0: Reset 0x1 never completed.
>>   [  161.741170] mmc0: 3.3V regulator output did not become stable
>>
>> The slot was off for about 15 s (145.407 to 160.264), so this is not a
>> short-off-time problem.
>>
>> == Reproduction without suspend ==
>>
>> From a healthy boot (device alive, no SD card inserted):
>>
>>   echo 1    > /sys/bus/pci/devices/0000:2c:00.0/remove
>>   echo 1    > /sys/bus/pci/devices/0000:00:1c.4/d3cold_allowed
>>   echo auto > /sys/bus/pci/devices/0000:00:1c.4/power/control
>>   # the root port's power_state reached D3cold after about 2 s
>>   sleep 1
>>   echo on   > /sys/bus/pci/devices/0000:00:1c.4/power/control
>>   # port is D0 again, but its Link Status is 0x1011 (DLActive = 0)
>>   echo 1    > /sys/bus/pci/rescan     # repeated once per second for 15 s
>>
>> The device never reappears, and Link Status stays 0x1011 for the whole
>> 15 s. This uses only a 1 s off time.
>>
>> == What I tried ==
>>
>> Suspend variants, each run with rtcwake -m mem -s 15 (s2idle), no SD card
>> inserted. All of these failed on the first cycle:
>>
>>   - no changes
>>   - endpoint power/control=on
>>   - root port power/control=on
>>   - endpoint link/l1_2_aspm and link/l1_2_pcipm set to 0
>>   - endpoint link/l1_aspm, l1_1_aspm, l1_2_aspm, l1_1_pcipm, l1_2_pcipm
>>     all set to 0
>>   - endpoint removed before suspend, rescanned after resume
>>
>> This one passed 10/10 cycles (device alive 2 s and 8 s after resume, port
>> Link Status 0x3011 each time):
>>
>>   - d3cold_allowed=0 on both the endpoint and the root port, set just
>>     before suspend and restored to 1 right after resume
>>
>> Recovery attempted after a failed resume, with the root port held in D0
>> (power/control=on) and the rescan polled for 15 s per stage. None brought
>> the device back, and Link Status stayed 0x1011 throughout:
>>
>>   - remove + rescan
>>   - secondary bus reset on the root port, then rescan
>>   - Link Disable / enable on the root port, then rescan
>>
>> == Questions ==
>>
>> 1. Is this a known issue with this device or this platform's slot power-on
>>    method?
>> 2. What additional tracing would help (ACPI AML debugging, GPIO/pinctrl
>>    state before and after the power resource turns on, anything else)?
>>
>> I can build and test patches on this machine.
>>
>> Thanks,
>> Kyle
>>
>> Sent with Proton Mail secure email.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-05  6:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <x4G_0cgWnHWJtmgP4iX3hFfwwbWDyVuO9Ps8Pv_Rnq4VguufBRLzZex1IxGuTtaYfU7tS7U8RbKjB2I54HxfEmPk3gzKWvYDAyuZXrtWbDU=@protonmail.com>
2026-11-05  3:32 ` [BUG] Genesys GL9750 (17a0:9750) does not respond after its PCIe slot is powered back on from D3cold, on s2idle resume and at runtime (ASUS Vivobook 14 Flip TP3407SA, kernel 7.3.1) Kyle Baedke
2026-11-05  6:04   ` Adrian Hunter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®