diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 17 | 
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 039b90cdc3bc..45f0188c4273 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c @@ -81,6 +81,10 @@  #include "mxgpu_vi.h"  #include "amdgpu_dm.h" +#if IS_ENABLED(CONFIG_X86) +#include <asm/intel-family.h> +#endif +  #define ixPCIE_LC_L1_PM_SUBSTATE	0x100100C6  #define PCIE_LC_L1_PM_SUBSTATE__LC_L1_SUBSTATES_OVERRIDE_EN_MASK	0x00000001L  #define PCIE_LC_L1_PM_SUBSTATE__LC_PCI_PM_L1_2_OVERRIDE_MASK	0x00000002L @@ -1134,13 +1138,24 @@ static void vi_enable_aspm(struct amdgpu_device *adev)  		WREG32_PCIE(ixPCIE_LC_CNTL, data);  } +static bool aspm_support_quirk_check(void) +{ +#if IS_ENABLED(CONFIG_X86) +	struct cpuinfo_x86 *c = &cpu_data(0); + +	return !(c->x86 == 6 && c->x86_model == INTEL_FAM6_ALDERLAKE); +#else +	return true; +#endif +} +  static void vi_program_aspm(struct amdgpu_device *adev)  {  	u32 data, data1, orig;  	bool bL1SS = false;  	bool bClkReqSupport = true; -	if (!amdgpu_device_should_use_aspm(adev)) +	if (!amdgpu_device_should_use_aspm(adev) || !aspm_support_quirk_check())  		return;  	if (adev->flags & AMD_IS_APU ||  | 
