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

drm/amdgpu: Skip access PF-only registers on gfx10/gfxhub2_1 under SRIOV

[Why]
RLCG interface returns "out-of-range" error under SRIOV VF when accessing
PF-only registers.

[How]
Skip access PF-only registers on gfx10/gfxhub2_1 under SRIOV.

Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: ZhenGuo Yin <zhenguo.yin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

ZhenGuo Yin and committed by
Alex Deucher
56b30ac8 f679fd60

+9 -2
+6 -2
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
··· 3657 3657 3658 3658 static void gfx_v10_0_init_golden_registers(struct amdgpu_device *adev) 3659 3659 { 3660 + if (amdgpu_sriov_vf(adev)) 3661 + return; 3662 + 3660 3663 switch (amdgpu_ip_version(adev, GC_HWIP, 0)) { 3661 3664 case IP_VERSION(10, 1, 10): 3662 3665 soc15_program_register_sequence(adev, ··· 4985 4982 u32 tmp; 4986 4983 int i; 4987 4984 4988 - WREG32_FIELD15(GC, 0, GRBM_CNTL, READ_TIMEOUT, 0xff); 4985 + if (!amdgpu_sriov_vf(adev)) 4986 + WREG32_FIELD15(GC, 0, GRBM_CNTL, READ_TIMEOUT, 0xff); 4989 4987 4990 4988 gfx_v10_0_setup_rb(adev); 4991 4989 gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info); ··· 7167 7163 if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(10, 3, 0)) 7168 7164 gfx_v10_3_program_pbb_mode(adev); 7169 7165 7170 - if (amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(10, 3, 0)) 7166 + if (amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(10, 3, 0) && !amdgpu_sriov_vf(adev)) 7171 7167 gfx_v10_3_set_power_brake_sequence(adev); 7172 7168 7173 7169 return r;
+3
drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c
··· 155 155 { 156 156 uint64_t value; 157 157 158 + if (amdgpu_sriov_vf(adev)) 159 + return; 160 + 158 161 /* Program the AGP BAR */ 159 162 WREG32_SOC15(GC, 0, mmGCMC_VM_AGP_BASE, 0); 160 163 WREG32_SOC15(GC, 0, mmGCMC_VM_AGP_BOT, adev->gmc.agp_start >> 24);