Skip to content

Commit 1f9b3e7

Browse files
Kenneth Fenggregkh
authored andcommitted
drm/amd/amdgpu: disable ASPM in some situations
[ Upstream commit c770ef1 ] disable ASPM with some ASICs on some specific platforms. required from PCIe controller owner. Signed-off-by: Kenneth Feng <kenneth.feng@amd.com> Reviewed-by: Yang Wang <kevinyang.wang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 8f18703 commit 1f9b3e7

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484

8585
#if IS_ENABLED(CONFIG_X86)
8686
#include <asm/intel-family.h>
87+
#include <asm/cpu_device_id.h>
8788
#endif
8889

8990
MODULE_FIRMWARE("amdgpu/vega10_gpu_info.bin");
@@ -1758,6 +1759,35 @@ static bool amdgpu_device_pcie_dynamic_switching_supported(struct amdgpu_device
17581759
return true;
17591760
}
17601761

1762+
static bool amdgpu_device_aspm_support_quirk(struct amdgpu_device *adev)
1763+
{
1764+
#if IS_ENABLED(CONFIG_X86)
1765+
struct cpuinfo_x86 *c = &cpu_data(0);
1766+
1767+
if (!(amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 0) ||
1768+
amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 1)))
1769+
return false;
1770+
1771+
if (c->x86 == 6 &&
1772+
adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN5) {
1773+
switch (c->x86_model) {
1774+
case VFM_MODEL(INTEL_ALDERLAKE):
1775+
case VFM_MODEL(INTEL_ALDERLAKE_L):
1776+
case VFM_MODEL(INTEL_RAPTORLAKE):
1777+
case VFM_MODEL(INTEL_RAPTORLAKE_P):
1778+
case VFM_MODEL(INTEL_RAPTORLAKE_S):
1779+
return true;
1780+
default:
1781+
return false;
1782+
}
1783+
} else {
1784+
return false;
1785+
}
1786+
#else
1787+
return false;
1788+
#endif
1789+
}
1790+
17611791
/**
17621792
* amdgpu_device_should_use_aspm - check if the device should program ASPM
17631793
*
@@ -1782,6 +1812,8 @@ bool amdgpu_device_should_use_aspm(struct amdgpu_device *adev)
17821812
}
17831813
if (adev->flags & AMD_IS_APU)
17841814
return false;
1815+
if (amdgpu_device_aspm_support_quirk(adev))
1816+
return false;
17851817
return pcie_aspm_enabled(adev->pdev);
17861818
}
17871819

0 commit comments

Comments
 (0)