Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/pm/ci: Disable MCLK DPM on problematic CI ASICs

There are two known cases where MCLK DPM can causes issues:

Radeon R9 M380 found in iMac computers from 2015.
The SMU in this GPU just hangs as soon as we send it the
PPSMC_MSG_MCLKDPM_Enable command, even when MCLK switching is
disabled, and even when we only populate one MCLK DPM level.
Apply workaround to all devices with the same subsystem ID.

Radeon R7 260X due to old memory controller microcode.
We only flash the MC ucode when it isn't set up by the VBIOS,
therefore there is no way to make sure that it has the correct
ucode version.

I verified that this patch fixes the SMU hang on the R9 M380
which would previously fail to boot. This also fixes the UVD
initialization error on that GPU which happened because the
SMU couldn't ungate the UVD after it hung.

Fixes: 86457c3b21cb ("drm/amd/powerplay: Add support for CI asics to hwmgr")
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Timur Kristóf and committed by
Alex Deucher
9851f29c 894f0d34

+15
+15
drivers/gpu/drm/amd/pm/powerplay/hwmgr/hwmgr.c
··· 104 104 PP_GFXOFF_MASK); 105 105 hwmgr->pp_table_version = PP_TABLE_V0; 106 106 hwmgr->od_enabled = false; 107 + switch (hwmgr->chip_id) { 108 + case CHIP_BONAIRE: 109 + /* R9 M380 in iMac 2015: SMU hangs when enabling MCLK DPM 110 + * R7 260X cards with old MC ucode: MCLK DPM is unstable 111 + */ 112 + if (adev->pdev->subsystem_vendor == 0x106B || 113 + adev->pdev->device == 0x6658) { 114 + dev_info(adev->dev, "disabling MCLK DPM on quirky ASIC"); 115 + adev->pm.pp_feature &= ~PP_MCLK_DPM_MASK; 116 + hwmgr->feature_mask &= ~PP_MCLK_DPM_MASK; 117 + } 118 + break; 119 + default: 120 + break; 121 + } 107 122 smu7_init_function_pointers(hwmgr); 108 123 break; 109 124 case AMDGPU_FAMILY_CZ: