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

drm/amdkfd: Contain MMHUB number in mmhub_v9_4_setup_vm_pt_regs()

Adjust the exposed function prototype so that the caller does not need
to know the MMHUB number.

Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Yong Zhao and committed by
Alex Deucher
6dcab16b f275cde7

+16 -14
+2 -4
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
··· 40 40 #include "soc15d.h" 41 41 #include "mmhub_v1_0.h" 42 42 #include "gfxhub_v1_0.h" 43 - #include "gmc_v9_0.h" 43 + #include "mmhub_v9_4.h" 44 44 45 45 46 46 enum hqd_dequeue_request_type { ··· 774 774 * on GFX8 and older. 775 775 */ 776 776 if (adev->asic_type == CHIP_ARCTURUS) { 777 - /* Two MMHUBs */ 778 - mmhub_v9_4_setup_vm_pt_regs(adev, 0, vmid, page_table_base); 779 - mmhub_v9_4_setup_vm_pt_regs(adev, 1, vmid, page_table_base); 777 + mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base); 780 778 } else 781 779 mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base); 782 780
-8
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
··· 36 36 37 37 extern const struct amd_ip_funcs gmc_v9_0_ip_funcs; 38 38 extern const struct amdgpu_ip_block_version gmc_v9_0_ip_block; 39 - 40 - /* amdgpu_amdkfd*.c */ 41 - void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, 42 - uint64_t value); 43 - void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, 44 - uint64_t value); 45 - void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid, 46 - uint32_t vmid, uint64_t value); 47 39 #endif
+12 -2
drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
··· 54 54 return base; 55 55 } 56 56 57 - void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid, 57 + static void mmhub_v9_4_setup_hubid_vm_pt_regs(struct amdgpu_device *adev, int hubid, 58 58 uint32_t vmid, uint64_t value) 59 59 { 60 60 /* two registers distance between mmVML2VC0_VM_CONTEXT0_* to ··· 80 80 { 81 81 uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo); 82 82 83 - mmhub_v9_4_setup_vm_pt_regs(adev, hubid, 0, pt_base); 83 + mmhub_v9_4_setup_hubid_vm_pt_regs(adev, hubid, 0, pt_base); 84 84 85 85 WREG32_SOC15_OFFSET(MMHUB, 0, 86 86 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32, ··· 99 99 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32, 100 100 hubid * MMHUB_INSTANCE_REGISTER_OFFSET, 101 101 (u32)(adev->gmc.gart_end >> 44)); 102 + } 103 + 104 + void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, 105 + uint64_t page_table_base) 106 + { 107 + int i; 108 + 109 + for (i = 0; i < MMHUB_NUM_INSTANCES; i++) 110 + mmhub_v9_4_setup_hubid_vm_pt_regs(adev, i, vmid, 111 + page_table_base); 102 112 } 103 113 104 114 static void mmhub_v9_4_init_system_aperture_regs(struct amdgpu_device *adev,
+2
drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
··· 34 34 int mmhub_v9_4_set_clockgating(struct amdgpu_device *adev, 35 35 enum amd_clockgating_state state); 36 36 void mmhub_v9_4_get_clockgating(struct amdgpu_device *adev, u32 *flags); 37 + void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, 38 + uint64_t page_table_base); 37 39 38 40 #endif