On Wed, May 20, 2026 at 12:04 PM Mario Limonciello <[email protected]> wrote: > > _PR3 detection was changed in commit 134b8c5d8674e ("drm/amd: Fix > detection of _PR3 on the PCIe root port") to look at the root port > of the topology containing the GPU. This however was too far because > it ignored whether or not all the intermediary bridges could power > off the device. The original design in commit b10c1c5b3a4e3 ("drm/amdgpu: > add check for ACPI power resources") was too narrow because it matched > the switches internal to the GPU. > > Use the goldilocks approach and look for the first bridge outside of the > GPU and check for _PR3 on that device. > > Fixes: 134b8c5d8674e ("drm/amd: Fix detection of _PR3 on the PCIe root port") > Signed-off-by: Mario Limonciello <[email protected]>
Series is: Reviewed-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index b6a24faaf78dd..7319467b11a94 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -1939,7 +1939,6 @@ static struct pci_dev *amdgpu_device_find_parent(struct > amdgpu_device *adev) > static int amdgpu_device_ip_early_init(struct amdgpu_device *adev) > { > struct amdgpu_ip_block *ip_block; > - struct pci_dev *parent; > bool total, skip_bios; > uint32_t bios_flags; > int i, r; > @@ -2026,10 +2025,8 @@ static int amdgpu_device_ip_early_init(struct > amdgpu_device *adev) > !dev_is_removable(&adev->pdev->dev)) > adev->flags |= AMD_IS_PX; > > - if (!(adev->flags & AMD_IS_APU)) { > - parent = pcie_find_root_port(adev->pdev); > - adev->has_pr3 = parent ? pci_pr3_present(parent) : false; > - } > + if (!(adev->flags & AMD_IS_APU)) > + adev->has_pr3 = > pci_pr3_present(amdgpu_device_find_parent(adev)); > > adev->pm.pp_feature = amdgpu_pp_feature_mask; > if (amdgpu_sriov_vf(adev) || sched_policy == KFD_SCHED_POLICY_NO_HWS) > -- > 2.43.0 >
