Re: [BUG] ASUS ProArt PX13 HN7306WU: amd_pmc s2idle S0ix corrupts AMD 1022:150b root port, NVIDIA dGPU returns header type 7f

From: Mario Limonciello

Date: Fri Apr 03 2026 - 17:29:05 EST


On 4/3/26 4:05 PM, Mario Limonciello wrote:
On 4/3/26 3:47 PM, Joyful Lee wrote:
On Fri, Apr 3, 2026 at 4:03 PM Mario Limonciello
<mario.limonciello@xxxxxxx> wrote:
Can you do the exact same on the same branch/commit but without pciehp
enabled?  It will make comparison of all the impacts (not just this root
port) a lot easier.

Here you go. Unfortunately it's not *exactly* the same because I had to
disable the nvidia driver to get a result.

Thanks - the most obvious observation is what you already noted - without hotplug support the root port skips PM all together.

[24.575705] pcieport 0000:00:01.2: PCI PM: Suspend power state: D0
[24.575707] pcieport 0000:00:01.2: PCI PM: Skipped
[24.575709] pcieport 0000:00:01.1: PCI PM: Suspend power state: D0
[24.575709] pcieport 0000:00:01.1: PCI PM: Skipped

vs

[29.279987] pcieport 0000:00:01.1: power state changed by ACPI to D3cold
[29.279991] pcieport 0000:00:01.1: PCI PM: Suspend power state: D3cold
[29.280214] pcieport 0000:00:01.2: power state changed by ACPI to D3cold
[29.280219] pcieport 0000:00:01.2: PCI PM: Suspend power state: D3cold

The hotplug support seems to apply to 3 ports.

  0000:00:01.1 (Bus 01):
  - Slot Capabilities: 0x00040060
  - Flags: HotPlug+ Surprise+ LLActRep+

  0000:00:01.2 (Bus 61):
  - Slot Capabilities: 0x00040060
  - Flags: HotPlug+ Surprise+ LLActRep+

  0000:00:03.1 (Bus c4):
  - Slot Capabilities: 0x000425e0
  - Flags: HotPlug+ Surprise+ LLActRep+
  - This port also has bandwidth control enabled: bwctrl: enabled with IRQ 38

The port stays in D0 because the child (the GPU) stays in D0 for suspend.

  [24.599889] pcieport 0000:00:03.1: PCI PM: Suspend power state: D0


  [24.599890] pcieport 0000:00:03.1: PCI PM: Skipped

So I would say we should look at what the GPU isn't going to D3 for suspend for the next clue.

OK - so the issue comes from acpi_pci_bridge_d3() which is called from platform_pci_bridge_d3():

if (acpi_pci_disabled || !dev->is_pciehp)
return false;