* [PATCH 0/2] PCI/PM: Disable bridge D3 on a few devices
@ 2026-11-02 13:57 Mario Limonciello
2026-11-02 13:57 ` [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1 Mario Limonciello
2026-11-02 13:57 ` [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports Mario Limonciello
0 siblings, 2 replies; 7+ messages in thread
From: Mario Limonciello @ 2026-11-02 13:57 UTC (permalink / raw)
To: Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki
Cc: linux-pci, linux-pm, linux-kernel, Mario Limonciello,
Joshua Perry, stable, Tony Murray
A few devices have been reported over the past few cycles
to have problems with bridges at D3. This series adds them
to the block list for the feature. See individual patches
for details.
Signed-off-by: Mario Limonciello <superm1@kernel.org>
---
Mario Limonciello (2):
PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1
PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
drivers/pci/pci.c | 36 +++++++++++++++++++++++++++++++++---
1 file changed, 33 insertions(+), 3 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261028-superm1-kbz-222179-4898547adf80
Best regards,
--
Mario Limonciello <superm1@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1
2026-11-02 13:57 [PATCH 0/2] PCI/PM: Disable bridge D3 on a few devices Mario Limonciello
@ 2026-11-02 13:57 ` Mario Limonciello
2026-11-02 14:01 ` sashiko-bot
2026-11-02 14:10 ` Rafael J. Wysocki (Intel)
2026-11-02 13:57 ` [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports Mario Limonciello
1 sibling, 2 replies; 7+ messages in thread
From: Mario Limonciello @ 2026-11-02 13:57 UTC (permalink / raw)
To: Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki
Cc: linux-pci, linux-pm, linux-kernel, Mario Limonciello,
Joshua Perry, stable
On the Lenovo ThinkCentre M90n-1 (board 314D), suspending the empty
Root Port 9 turns off a clock needed by the onboard RTL8168 behind
Root Port 12. The NIC becomes inaccessible and r8169 fails to probe
with "Unable to change power state from D3cold to D0".
The RP09.PXP_._OFF method gates PCH SRC clock 1, which also supplies
the NIC behind Root Port 12. Keeping Root Port 9 in D0 preserves
that clock and allows the NIC to probe. Commit 4d4c10f763d7 ("PCI:
Explicitly put devices into D0 when initializing") exposed the firmware
bug on every boot by ensuring that the first runtime suspend executes
the power resource's _OFF method.
Add the board to bridge_d3_blacklist to prevent bridge D3 transitions.
Check the blacklist before platform_pci_bridge_d3(), since ACPI allows
D3 on the affected hotplug port and would otherwise bypass the quirk.
Fixes: 4d4c10f763d7 ("PCI: Explicitly put devices into D0 when initializing")
Reported-by: Joshua Perry <josh@6bit.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222179
Cc: stable@vger.kernel.org
Signed-off-by: Mario Limonciello <superm1@kernel.org>
---
drivers/pci/pci.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7c6f2aba81443..17ec7f065682d 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3028,6 +3028,17 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
DMI_MATCH(DMI_BOARD_VERSION, "95.33"),
},
},
+ {
+ /*
+ * Suspending Root Port 9 gates a clock used by the onboard
+ * RTL8168 behind Root Port 12, making the NIC inaccessible.
+ */
+ .ident = "Lenovo ThinkCentre M90n-1",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_BOARD_NAME, "314D"),
+ },
+ },
#endif
{ }
};
@@ -3073,6 +3084,10 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
if (bridge->is_thunderbolt)
return true;
+ /* Firmware D3 support does not override known platform bugs. */
+ if (dmi_check_system(bridge_d3_blacklist))
+ return false;
+
/* Platform might know better if the bridge supports D3 */
if (platform_pci_bridge_d3(bridge))
return true;
@@ -3085,9 +3100,6 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
if (IS_ENABLED(CONFIG_X86) && bridge->is_pciehp)
return false;
- if (dmi_check_system(bridge_d3_blacklist))
- return false;
-
/*
* Out of caution, we only allow PCIe ports from 2015 or newer
* into D3 on x86.
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
2026-11-02 13:57 [PATCH 0/2] PCI/PM: Disable bridge D3 on a few devices Mario Limonciello
2026-11-02 13:57 ` [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1 Mario Limonciello
@ 2026-11-02 13:57 ` Mario Limonciello
2026-11-02 14:04 ` sashiko-bot
2026-11-02 14:12 ` Rafael J. Wysocki (Intel)
1 sibling, 2 replies; 7+ messages in thread
From: Mario Limonciello @ 2026-11-02 13:57 UTC (permalink / raw)
To: Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki
Cc: linux-pci, linux-pm, linux-kernel, Mario Limonciello, Tony Murray
HP Spectre x360 Convertible 15-ch0xx is an Intel Kaby Lake-G system that
contains an AMD Polaris Radeon dGPU.
Attempting to use the dGPU fails with the following sequence:
```
amdgpu 0000:01:00.0: not ready 1023ms after resume; waiting
amdgpu 0000:01:00.0: not ready 2047ms after resume; waiting
amdgpu 0000:01:00.0: not ready 4095ms after resume; waiting
amdgpu 0000:01:00.0: not ready 8191ms after resume; waiting
amdgpu 0000:01:00.0: not ready 16383ms after resume; waiting
amdgpu 0000:01:00.0: not ready 32767ms after resume; waiting
amdgpu 0000:01:00.0: not ready 65535ms after resume; giving up
amdgpu 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
[drm:atom_op_jump [amdgpu]] *ERROR* atombios stuck in loop for more than 20secs aborting
```
The issue is that the Root Port the dGPU is connected to can't handle the
transition from D3cold to D0 so the dGPU can't properly exit runtime PM.
The existing logic in pci_bridge_d3_possible() checks for systems that are
newer than 2015 to decide that D3 is safe, but this system appears not to
work properly.
Add the system to bridge_d3_blacklist to prevent D3cold from being used.
Reported-and-tested-by: Tony Murray <murraytony@gmail.com>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3389
Signed-off-by: Mario Limonciello <superm1@kernel.org>
---
drivers/pci/pci.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 17ec7f065682d..151b98757ba57 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3039,6 +3039,24 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
DMI_MATCH(DMI_BOARD_NAME, "314D"),
},
},
+ {
+ /*
+ * Changing power state of root port dGPU is connected fails
+ * https://gitlab.freedesktop.org/drm/amd/-/issues/3229
+ */
+ .ident = "HP Spectre x360 Convertible 15-ch0xx",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
+ DMI_MATCH(DMI_BOARD_NAME, "83BB"),
+ },
+ },
+ {
+ .ident = "HP ZBook 15 G4",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
+ DMI_MATCH(DMI_BOARD_NAME, "HP ZBook 15 G4"),
+ },
+ },
#endif
{ }
};
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1
2026-11-02 13:57 ` [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1 Mario Limonciello
@ 2026-11-02 14:01 ` sashiko-bot
2026-11-02 14:10 ` Rafael J. Wysocki (Intel)
1 sibling, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-11-02 14:01 UTC (permalink / raw)
To: Mario Limonciello; +Cc: linux-pci
> On the Lenovo ThinkCentre M90n-1 (board 314D), suspending the empty
> Root Port 9 turns off a clock needed by the onboard RTL8168 behind
> Root Port 12. The NIC becomes inaccessible and r8169 fails to probe
> with "Unable to change power state from D3cold to D0".
>
> The RP09.PXP_._OFF method gates PCH SRC clock 1, which also supplies
> the NIC behind Root Port 12. Keeping Root Port 9 in D0 preserves
> that clock and allows the NIC to probe. Commit 4d4c10f763d7 ("PCI:
> Explicitly put devices into D0 when initializing") exposed the firmware
> bug on every boot by ensuring that the first runtime suspend executes
> the power resource's _OFF method.
>
> Add the board to bridge_d3_blacklist to prevent bridge D3 transitions.
> Check the blacklist before platform_pci_bridge_d3(), since ACPI allows
> D3 on the affected hotplug port and would otherwise bypass the quirk.
>
> Fixes: 4d4c10f763d7 ("PCI: Explicitly put devices into D0 when initializing")
> Reported-by: Joshua Perry <josh@6bit.com>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222179
> Cc: stable@vger.kernel.org
> Signed-off-by: Mario Limonciello <superm1@kernel.org>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261102-superm1-kbz-222179-v1-0-c91a664ba251@kernel.org?part=1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
2026-11-02 13:57 ` [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports Mario Limonciello
@ 2026-11-02 14:04 ` sashiko-bot
2026-11-02 14:12 ` Rafael J. Wysocki (Intel)
1 sibling, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-11-02 14:04 UTC (permalink / raw)
To: Mario Limonciello; +Cc: linux-pci
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] PCI/PM: undocumented HP ZBook 15 G4 quirk with wrong DMI_BOARD_NAME match
- [Low] PCI/PM: wrong GitLab issue URL in comment for HP Spectre x360 quirk
--
commit e809ddf27f4e25c996dc6c51452553c16b6c434f
Author: Mario Limonciello <superm1@kernel.org>
PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
This commit adds DMI entries to bridge_d3_blacklist in drivers/pci/pci.c to
prevent PCIe Root Ports from entering D3cold on the HP Spectre x360
Convertible 15-ch0xx, where the AMD Polaris Radeon dGPU fails to transition
back from D3cold to D0 during runtime PM resume.
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 17ec7f065682d..151b98757ba57 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -3039,6 +3039,24 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
> DMI_MATCH(DMI_BOARD_NAME, "314D"),
> },
> },
> + {
> + /*
> + * Changing power state of root port dGPU is connected fails
> + * https://gitlab.freedesktop.org/drm/amd/-/issues/3229
> + */
[Severity: Low]
This isn't a bug, but the comment in bridge_d3_blacklist in
drivers/pci/pci.c points to issue 3229 (which belongs to the earlier
Hewlett-Packard HP Pavilion 17 Notebook PC/1972 entry). Should this
reference https://gitlab.freedesktop.org/drm/amd/-/issues/3389 to match the
Closes tag in the commit message?
> + .ident = "HP Spectre x360 Convertible 15-ch0xx",
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
> + DMI_MATCH(DMI_BOARD_NAME, "83BB"),
> + },
> + },
> + {
> + .ident = "HP ZBook 15 G4",
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
> + DMI_MATCH(DMI_BOARD_NAME, "HP ZBook 15 G4"),
> + },
> + },
[Severity: Medium]
Was the HP ZBook 15 G4 entry in bridge_d3_blacklist in drivers/pci/pci.c
included here intentionally, given that the commit message only describes the
HP Spectre x360 Convertible 15-ch0xx?
Also, when pci_bridge_d3_possible() calls
dmi_check_system(bridge_d3_blacklist), will DMI_MATCH(DMI_BOARD_NAME,
"HP ZBook 15 G4") ever match on target hardware? On HP systems,
DMI_BOARD_NAME holds a 4-character hex board ID (such as "83BB" or "1972" in
the preceding entries), while "HP ZBook 15 G4" is the marketing string
stored in DMI_PRODUCT_NAME.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261102-superm1-kbz-222179-v1-0-c91a664ba251@kernel.org?part=2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1
2026-11-02 13:57 ` [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1 Mario Limonciello
2026-11-02 14:01 ` sashiko-bot
@ 2026-11-02 14:10 ` Rafael J. Wysocki (Intel)
1 sibling, 0 replies; 7+ messages in thread
From: Rafael J. Wysocki (Intel) @ 2026-11-02 14:10 UTC (permalink / raw)
To: Mario Limonciello
Cc: Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki, linux-pci,
linux-pm, linux-kernel, Joshua Perry, stable
On Mon, Nov 2, 2026 at 2:57 PM Mario Limonciello <superm1@kernel.org> wrote:
>
> On the Lenovo ThinkCentre M90n-1 (board 314D), suspending the empty
> Root Port 9 turns off a clock needed by the onboard RTL8168 behind
> Root Port 12. The NIC becomes inaccessible and r8169 fails to probe
> with "Unable to change power state from D3cold to D0".
>
> The RP09.PXP_._OFF method gates PCH SRC clock 1, which also supplies
> the NIC behind Root Port 12. Keeping Root Port 9 in D0 preserves
> that clock and allows the NIC to probe. Commit 4d4c10f763d7 ("PCI:
> Explicitly put devices into D0 when initializing") exposed the firmware
> bug on every boot by ensuring that the first runtime suspend executes
> the power resource's _OFF method.
>
> Add the board to bridge_d3_blacklist to prevent bridge D3 transitions.
> Check the blacklist before platform_pci_bridge_d3(), since ACPI allows
> D3 on the affected hotplug port and would otherwise bypass the quirk.
>
> Fixes: 4d4c10f763d7 ("PCI: Explicitly put devices into D0 when initializing")
> Reported-by: Joshua Perry <josh@6bit.com>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222179
> Cc: stable@vger.kernel.org
> Signed-off-by: Mario Limonciello <superm1@kernel.org>
As per the discussion in the bug entry
Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
> ---
> drivers/pci/pci.c | 18 +++++++++++++++---
> 1 file changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 7c6f2aba81443..17ec7f065682d 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -3028,6 +3028,17 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
> DMI_MATCH(DMI_BOARD_VERSION, "95.33"),
> },
> },
> + {
> + /*
> + * Suspending Root Port 9 gates a clock used by the onboard
> + * RTL8168 behind Root Port 12, making the NIC inaccessible.
> + */
> + .ident = "Lenovo ThinkCentre M90n-1",
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_BOARD_NAME, "314D"),
> + },
> + },
> #endif
> { }
> };
> @@ -3073,6 +3084,10 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
> if (bridge->is_thunderbolt)
> return true;
>
> + /* Firmware D3 support does not override known platform bugs. */
> + if (dmi_check_system(bridge_d3_blacklist))
> + return false;
> +
> /* Platform might know better if the bridge supports D3 */
> if (platform_pci_bridge_d3(bridge))
> return true;
> @@ -3085,9 +3100,6 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
> if (IS_ENABLED(CONFIG_X86) && bridge->is_pciehp)
> return false;
>
> - if (dmi_check_system(bridge_d3_blacklist))
> - return false;
> -
> /*
> * Out of caution, we only allow PCIe ports from 2015 or newer
> * into D3 on x86.
>
> --
> 2.53.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
2026-11-02 13:57 ` [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports Mario Limonciello
2026-11-02 14:04 ` sashiko-bot
@ 2026-11-02 14:12 ` Rafael J. Wysocki (Intel)
1 sibling, 0 replies; 7+ messages in thread
From: Rafael J. Wysocki (Intel) @ 2026-11-02 14:12 UTC (permalink / raw)
To: Mario Limonciello
Cc: Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki, linux-pci,
linux-pm, linux-kernel, Tony Murray
On Mon, Nov 2, 2026 at 2:57 PM Mario Limonciello <superm1@kernel.org> wrote:
>
> HP Spectre x360 Convertible 15-ch0xx is an Intel Kaby Lake-G system that
> contains an AMD Polaris Radeon dGPU.
> Attempting to use the dGPU fails with the following sequence:
>
> ```
> amdgpu 0000:01:00.0: not ready 1023ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 2047ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 4095ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 8191ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 16383ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 32767ms after resume; waiting
> amdgpu 0000:01:00.0: not ready 65535ms after resume; giving up
> amdgpu 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
> [drm:atom_op_jump [amdgpu]] *ERROR* atombios stuck in loop for more than 20secs aborting
> ```
>
> The issue is that the Root Port the dGPU is connected to can't handle the
> transition from D3cold to D0 so the dGPU can't properly exit runtime PM.
>
> The existing logic in pci_bridge_d3_possible() checks for systems that are
> newer than 2015 to decide that D3 is safe, but this system appears not to
> work properly.
>
> Add the system to bridge_d3_blacklist to prevent D3cold from being used.
>
> Reported-and-tested-by: Tony Murray <murraytony@gmail.com>
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3389
> Signed-off-by: Mario Limonciello <superm1@kernel.org>
Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
> ---
> drivers/pci/pci.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 17ec7f065682d..151b98757ba57 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -3039,6 +3039,24 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
> DMI_MATCH(DMI_BOARD_NAME, "314D"),
> },
> },
> + {
> + /*
> + * Changing power state of root port dGPU is connected fails
> + * https://gitlab.freedesktop.org/drm/amd/-/issues/3229
> + */
> + .ident = "HP Spectre x360 Convertible 15-ch0xx",
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
> + DMI_MATCH(DMI_BOARD_NAME, "83BB"),
> + },
> + },
> + {
> + .ident = "HP ZBook 15 G4",
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
> + DMI_MATCH(DMI_BOARD_NAME, "HP ZBook 15 G4"),
> + },
> + },
> #endif
> { }
> };
>
> --
> 2.53.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-11-02 14:12 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 13:57 [PATCH 0/2] PCI/PM: Disable bridge D3 on a few devices Mario Limonciello
2026-11-02 13:57 ` [PATCH 1/2] PCI/PM: Disable bridge D3 on Lenovo ThinkCentre M90n-1 Mario Limonciello
2026-11-02 14:01 ` sashiko-bot
2026-11-02 14:10 ` Rafael J. Wysocki (Intel)
2026-11-02 13:57 ` [PATCH 2/2] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports Mario Limonciello
2026-11-02 14:04 ` sashiko-bot
2026-11-02 14:12 ` Rafael J. Wysocki (Intel)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.