mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
drm/amd/amdgpu: disable ASPM in some situations
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>
This commit is contained in:
parent
0ec7535f5b
commit
c770ef1967
|
|
@ -85,6 +85,7 @@
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_X86)
|
#if IS_ENABLED(CONFIG_X86)
|
||||||
#include <asm/intel-family.h>
|
#include <asm/intel-family.h>
|
||||||
|
#include <asm/cpu_device_id.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MODULE_FIRMWARE("amdgpu/vega10_gpu_info.bin");
|
MODULE_FIRMWARE("amdgpu/vega10_gpu_info.bin");
|
||||||
|
|
@ -1873,6 +1874,35 @@ static bool amdgpu_device_pcie_dynamic_switching_supported(struct amdgpu_device
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool amdgpu_device_aspm_support_quirk(struct amdgpu_device *adev)
|
||||||
|
{
|
||||||
|
#if IS_ENABLED(CONFIG_X86)
|
||||||
|
struct cpuinfo_x86 *c = &cpu_data(0);
|
||||||
|
|
||||||
|
if (!(amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 0) ||
|
||||||
|
amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 1)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (c->x86 == 6 &&
|
||||||
|
adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN5) {
|
||||||
|
switch (c->x86_model) {
|
||||||
|
case VFM_MODEL(INTEL_ALDERLAKE):
|
||||||
|
case VFM_MODEL(INTEL_ALDERLAKE_L):
|
||||||
|
case VFM_MODEL(INTEL_RAPTORLAKE):
|
||||||
|
case VFM_MODEL(INTEL_RAPTORLAKE_P):
|
||||||
|
case VFM_MODEL(INTEL_RAPTORLAKE_S):
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* amdgpu_device_should_use_aspm - check if the device should program ASPM
|
* amdgpu_device_should_use_aspm - check if the device should program ASPM
|
||||||
*
|
*
|
||||||
|
|
@ -1897,6 +1927,8 @@ bool amdgpu_device_should_use_aspm(struct amdgpu_device *adev)
|
||||||
}
|
}
|
||||||
if (adev->flags & AMD_IS_APU)
|
if (adev->flags & AMD_IS_APU)
|
||||||
return false;
|
return false;
|
||||||
|
if (amdgpu_device_aspm_support_quirk(adev))
|
||||||
|
return false;
|
||||||
return pcie_aspm_enabled(adev->pdev);
|
return pcie_aspm_enabled(adev->pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user