aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch
new file mode 100644
index 00000000..313c9714
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2929-drm-amdkfd-Expose-function-mmhub_v9_4_setup_vm_pt_re.patch
@@ -0,0 +1,76 @@
+From 334710f5267f50c1fcf8e0c2798ad70a9259fd78 Mon Sep 17 00:00:00 2001
+From: Yong Zhao <Yong.Zhao@amd.com>
+Date: Thu, 15 Nov 2018 12:59:34 -0500
+Subject: [PATCH 2929/2940] drm/amdkfd: Expose function
+ mmhub_v9_4_setup_vm_pt_regs() for kfd to use
+
+Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
+Signed-off-by: Oak Zeng <Oak.Zeng@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h | 7 +++++++
+ drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c | 17 ++++++++++++-----
+ 2 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
+index 5c8deac65580..971c0840358f 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
+@@ -37,4 +37,11 @@
+ extern const struct amd_ip_funcs gmc_v9_0_ip_funcs;
+ extern const struct amdgpu_ip_block_version gmc_v9_0_ip_block;
+
++/* amdgpu_amdkfd*.c */
++void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
++ uint64_t value);
++void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
++ uint64_t value);
++void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
++ uint32_t vmid, uint64_t value);
+ #endif
+diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
+index aa9b43b6ba6b..7f79fa4b6ad1 100644
+--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
++++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
+@@ -46,18 +46,23 @@ u64 mmhub_v9_4_get_fb_location(struct amdgpu_device *adev)
+ return base;
+ }
+
+-static void mmhub_v9_4_init_gart_pt_regs(struct amdgpu_device *adev, int hubid)
++void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
++ uint32_t vmid, uint64_t value)
+ {
+- uint64_t value = amdgpu_gmc_pd_addr(adev->gart.bo);
++ /* two registers distance between mmVML2VC0_VM_CONTEXT0_* to
++ * mmVML2VC0_VM_CONTEXT1_*
++ */
++ int dist = mmVML2VC0_VM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32
++ - mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32;
+
+ WREG32_SOC15_OFFSET(MMHUB, 0,
+ mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32,
+- hubid * MMHUB_INSTANCE_REGISTER_OFFSET,
++ dist * vmid + hubid * MMHUB_INSTANCE_REGISTER_OFFSET,
+ lower_32_bits(value));
+
+ WREG32_SOC15_OFFSET(MMHUB, 0,
+ mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32,
+- hubid * MMHUB_INSTANCE_REGISTER_OFFSET,
++ dist * vmid + hubid * MMHUB_INSTANCE_REGISTER_OFFSET,
+ upper_32_bits(value));
+
+ }
+@@ -65,7 +70,9 @@ static void mmhub_v9_4_init_gart_pt_regs(struct amdgpu_device *adev, int hubid)
+ static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,
+ int hubid)
+ {
+- mmhub_v9_4_init_gart_pt_regs(adev, hubid);
++ uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo);
++
++ mmhub_v9_4_setup_vm_pt_regs(adev, hubid, 0, pt_base);
+
+ WREG32_SOC15_OFFSET(MMHUB, 0,
+ mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32,
+--
+2.17.1
+