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
> > >

Reply via email to