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

drm/amdgpu/soc15: use common nbio callback to set remap offset

This fixes HDP flushes on systems with non-4K pages.

Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+1 -27
-4
drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
··· 276 276 277 277 if (def != data) 278 278 WREG32_PCIE(smnPCIE_CI_CNTL, data); 279 - 280 - if (amdgpu_sriov_vf(adev)) 281 - adev->rmmio_remap.reg_offset = SOC15_REG_OFFSET(NBIO, 0, 282 - mmBIF_BX_DEV0_EPF0_VF0_HDP_MEM_COHERENCY_FLUSH_CNTL) << 2; 283 279 } 284 280 285 281 #ifdef CONFIG_PCIEASPM
-3
drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
··· 273 273 274 274 static void nbio_v7_0_init_registers(struct amdgpu_device *adev) 275 275 { 276 - if (amdgpu_sriov_vf(adev)) 277 - adev->rmmio_remap.reg_offset = 278 - SOC15_REG_OFFSET(NBIO, 0, mmHDP_MEM_COHERENCY_FLUSH_CNTL) << 2; 279 276 } 280 277 281 278 #define MMIO_REG_HOLE_OFFSET (0x80000 - PAGE_SIZE)
-4
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
··· 343 343 { 344 344 uint32_t baco_cntl; 345 345 346 - if (amdgpu_sriov_vf(adev)) 347 - adev->rmmio_remap.reg_offset = SOC15_REG_OFFSET(NBIO, 0, 348 - mmBIF_BX_DEV0_EPF0_VF0_HDP_MEM_COHERENCY_FLUSH_CNTL) << 2; 349 - 350 346 if (amdgpu_ip_version(adev, NBIO_HWIP, 0) == IP_VERSION(7, 4, 4) && 351 347 !amdgpu_sriov_vf(adev)) { 352 348 baco_cntl = RREG32_SOC15(NBIO, 0, mmBACO_CNTL);
-6
drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c
··· 422 422 u32 inst_mask; 423 423 int i; 424 424 425 - if (amdgpu_sriov_vf(adev)) 426 - adev->rmmio_remap.reg_offset = 427 - SOC15_REG_OFFSET( 428 - NBIO, 0, 429 - regBIF_BX_DEV0_EPF0_VF0_HDP_MEM_COHERENCY_FLUSH_CNTL) 430 - << 2; 431 425 WREG32_SOC15(NBIO, 0, regXCC_DOORBELL_FENCE, 432 426 0xff & ~(adev->gfx.xcc_mask)); 433 427
+1 -10
drivers/gpu/drm/amd/amdgpu/soc15.c
··· 931 931 932 932 static int soc15_common_early_init(void *handle) 933 933 { 934 - #define MMIO_REG_HOLE_OFFSET (0x80000 - PAGE_SIZE) 935 934 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 936 935 937 - if (!amdgpu_sriov_vf(adev)) { 938 - adev->rmmio_remap.reg_offset = MMIO_REG_HOLE_OFFSET; 939 - adev->rmmio_remap.bus_addr = adev->rmmio_base + MMIO_REG_HOLE_OFFSET; 940 - } 936 + adev->nbio.funcs->set_reg_remap(adev); 941 937 adev->smc_rreg = NULL; 942 938 adev->smc_wreg = NULL; 943 939 adev->pcie_rreg = &amdgpu_device_indirect_rreg; ··· 1184 1188 AMD_PG_SUPPORT_JPEG; 1185 1189 /*TODO: need a new external_rev_id for GC 9.4.4? */ 1186 1190 adev->external_rev_id = adev->rev_id + 0x46; 1187 - /* GC 9.4.3 uses MMIO register region hole at a different offset */ 1188 - if (!amdgpu_sriov_vf(adev)) { 1189 - adev->rmmio_remap.reg_offset = 0x1A000; 1190 - adev->rmmio_remap.bus_addr = adev->rmmio_base + 0x1A000; 1191 - } 1192 1191 break; 1193 1192 default: 1194 1193 /* FIXME: not supported yet */