Commit 6e807535 authored by Guchun Chen's avatar Guchun Chen Committed by Alex Deucher

drm/amdgpu: add check before enabling/disabling broadcast mode

When security violation from new vbios happens, data fabric is
risky to stop working. So prevent the direct access to DF
mmFabricConfigAccessControl from the new vbios and onwards.
Signed-off-by: default avatarGuchun Chen <guchun.chen@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b53bd16f
...@@ -268,23 +268,29 @@ static void df_v3_6_update_medium_grain_clock_gating(struct amdgpu_device *adev, ...@@ -268,23 +268,29 @@ static void df_v3_6_update_medium_grain_clock_gating(struct amdgpu_device *adev,
{ {
u32 tmp; u32 tmp;
/* Put DF on broadcast mode */ if (adev->cg_flags & AMD_CG_SUPPORT_DF_MGCG) {
adev->df_funcs->enable_broadcast_mode(adev, true); /* Put DF on broadcast mode */
adev->df_funcs->enable_broadcast_mode(adev, true);
if (enable && (adev->cg_flags & AMD_CG_SUPPORT_DF_MGCG)) {
tmp = RREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater); if (enable) {
tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; tmp = RREG32_SOC15(DF, 0,
tmp |= DF_V3_6_MGCG_ENABLE_15_CYCLE_DELAY; mmDF_PIE_AON0_DfGlobalClkGater);
WREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater, tmp); tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK;
} else { tmp |= DF_V3_6_MGCG_ENABLE_15_CYCLE_DELAY;
tmp = RREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater); WREG32_SOC15(DF, 0,
tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; mmDF_PIE_AON0_DfGlobalClkGater, tmp);
tmp |= DF_V3_6_MGCG_DISABLE; } else {
WREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater, tmp); tmp = RREG32_SOC15(DF, 0,
} mmDF_PIE_AON0_DfGlobalClkGater);
tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK;
tmp |= DF_V3_6_MGCG_DISABLE;
WREG32_SOC15(DF, 0,
mmDF_PIE_AON0_DfGlobalClkGater, tmp);
}
/* Exit broadcast mode */ /* Exit broadcast mode */
adev->df_funcs->enable_broadcast_mode(adev, false); adev->df_funcs->enable_broadcast_mode(adev, false);
}
} }
static void df_v3_6_get_clockgating_state(struct amdgpu_device *adev, static void df_v3_6_get_clockgating_state(struct amdgpu_device *adev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment