Re: [PATCH] drm/amdgpu: Disable runtime PM for externally attached dGPUs
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <CADnq5_MKdA0SY5vSoCdMEe+W73pt1Ut3Cu0+xnp=j+Kh=ndWDA@mail.gmail.com> |
On Wed, Aug 12, 2026 at 11:23 AM Wang, Yang(Kevin) <[email protected]> wrote: > > AMD General > > > -----Original Message----- > > From: Alex Deucher <[email protected]> > > Sent: Wednesday, August 12, 2026 10:30 PM > > To: Wang, Yang(Kevin) <[email protected]> > > Cc: [email protected]; Deucher, Alexander > > <[email protected]>; Zhang, Hawking > > <[email protected]>; Feng, Kenneth <[email protected]>; Li, > > Candice <[email protected]> > > Subject: Re: [PATCH] drm/amdgpu: Disable runtime PM for externally > > attached dGPUs > > > > On Wed, Aug 12, 2026 at 4:45 AM Yang Wang <[email protected]> > > wrote: > > > > > > pci_is_thunderbolt_attached() requires an upstream PCI bridge with > > > is_thunderbolt set from an Intel Thunderbolt VSEC. This does not cover > > > the affected ASM4242 USB4 PCI hierarchy: > > > > > > 00:02.2 > > > \- 0f:00.0 [1b21:2421] > > > +- 10:01.0 [1b21:2423] -> 45:00.0 -> 46:00.0 > > > | -> 47:00.0 -> 48:00.0 -> 49:00.0 [1002:7590] > > > \- 10:03.0 -> 76:00.0 [1b21:2425] USB4 Host Router > > > > > > The host router is outside the GPU upstream bridge chain, leaving no > > > ancestor with is_thunderbolt set. PCI core propagates DEVICE_REMOVABLE > > > below the external-facing PCIe tunnel. Disable Runtime PM when either > > > pci_is_thunderbolt_attached() or dev_is_removable() is true. > > > > > > > I could see BOCO being an issue, but shouldn't BACO work? That should be > > self contained to the driver. > > We reproduced the failure on the affected ASM4242 USB4 eGPU topology. > Before applying the workaround, the driver selected BACO: > > amdgpu 0000:49:00.0: Using BACO for runtime pm > amdgpu 0000:49:00.0: Failed to exit BACO state! > > The failure therefore occurs in the BACO runtime‑resume path, not in a validated BOCO or _PR3 path. > > We do not have an actual test case to verify the BOCO case, but it should be disabled together for safety. > Note that the final target state for BOCO is D3cold, while D3hot is an intermediate state. > It could also be problematic if the device cannot fully transition into D3cold, (though this is only my guess and not yet confirmed) > > So, should we keep pursuing this issue, or limit our workaround scope to BAMXCO only? > This change is fine for now as it fixes the issue, but it would be nice to understand if there is a fundamental compatibility issue with BACO and USB4 in general. Alex > Best Regards, > Kevin > > > Best Regards, > Kevin > > > > Alex > > > > > Signed-off-by: Yang Wang <[email protected]> > > > --- > > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 +++++++ > > > 1 file changed, 7 insertions(+) > > > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > index 8ebe24d59ab6..a4b4f9645c84 100644 > > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > @@ -609,6 +609,13 @@ void > > amdgpu_device_detect_runtime_pm_mode(struct amdgpu_device *adev) > > > int bamaco_support; > > > > > > adev->pm.rpm_mode = AMDGPU_RUNPM_NONE; > > > + if (pci_is_thunderbolt_attached(adev->pdev) || > > > + dev_is_removable(&adev->pdev->dev)) { > > > + dev_info(adev->dev, > > > + "Runtime PM disabled for externally attached device\n"); > > > + return; > > > + } > > > + > > > bamaco_support = amdgpu_device_supports_baco(adev); > > > > > > switch (amdgpu_runtime_pm) { > > > -- > > > 2.54.0 > > >