linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
@ 2024-06-29  0:17 superm1
  2024-07-09  2:57 ` Mario Limonciello
  0 siblings, 1 reply; 2+ messages in thread
From: superm1 @ 2024-06-29  0:17 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: open list:PCI SUBSYSTEM, open list, Mario Limonciello,
	Tony Murray

From: Mario Limonciello <mario.limonciello@amd.com>

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 <mario.limonciello@amd.com>
---
 drivers/pci/pci.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 35fb1f17a589..65e3a550052f 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -2965,6 +2965,17 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
 			DMI_MATCH(DMI_BOARD_VERSION, "95.33"),
 		},
 	},
+	{
+		/*
+		 * 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"),
+		},
+	},
 #endif
 	{ }
 };
-- 
2.43.0


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

* Re: [PATCH] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports
  2024-06-29  0:17 [PATCH] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports superm1
@ 2024-07-09  2:57 ` Mario Limonciello
  0 siblings, 0 replies; 2+ messages in thread
From: Mario Limonciello @ 2024-07-09  2:57 UTC (permalink / raw)
  To: superm1, Bjorn Helgaas; +Cc: open list:PCI SUBSYSTEM, open list, Tony Murray

On 6/28/2024 19:17, superm1@kernel.org wrote:
> From: Mario Limonciello <mario.limonciello@amd.com>
> 
> 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 <mario.limonciello@amd.com>
> ---
>   drivers/pci/pci.c | 11 +++++++++++
>   1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 35fb1f17a589..65e3a550052f 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -2965,6 +2965,17 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
>   			DMI_MATCH(DMI_BOARD_VERSION, "95.33"),
>   		},
>   	},
> +	{
> +		/*
> +		 * 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"),
> +		},
> +	},
>   #endif
>   	{ }
>   };

Bjorn,

Ping on this one.  It's a trivial quirk that Tony and I already root 
caused on Gitlab, I'd hope this can be squeezed in.

Thanks,

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

end of thread, other threads:[~2024-07-09  2:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-29  0:17 [PATCH] PCI/PM: Avoid D3cold for HP Spectre x360 Convertible 15-ch0xx PCIe Ports superm1
2024-07-09  2:57 ` Mario Limonciello

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).