aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch395
1 files changed, 395 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch
new file mode 100644
index 00000000..112faf00
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3820-drm-amdgpu-cleanup-mtype-mapping.patch
@@ -0,0 +1,395 @@
+From d178e867b2fc43900e5abd09c7c53ac9e3566367 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Mon, 2 Sep 2019 14:52:30 +0200
+Subject: [PATCH 3820/4256] drm/amdgpu: cleanup mtype mapping
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Unify how we map the UAPI flags to the PTE hardware flags for a mapping.
+
+Only the MTYPE is actually ASIC dependent, all other flags should be
+copied over 1 to 1 and ASIC differences are handled later on.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+---
+ .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 32 +++++++++++++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h | 1 +
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h | 7 ++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++-
+ drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 40 +++++-------------
+ drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 16 -------
+ drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 16 -------
+ drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 18 --------
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 42 +++++--------------
+ 10 files changed, 59 insertions(+), 121 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 92af06fa011a..9ffe63377c99 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -412,7 +412,7 @@ static uint64_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem)
+ AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC;
+ }
+
+- return amdgpu_gmc_get_pte_flags(adev, mapping_flags);
++ return amdgpu_gem_va_map_flags(adev, mapping_flags);
+ }
+
+ /* add_bo_to_vm - Add a BO to a VM
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+index cbd09e9b1092..59a1e73f4056 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+@@ -617,6 +617,34 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev,
+ DRM_ERROR("Couldn't update BO_VA (%d)\n", r);
+ }
+
++/**
++ * amdgpu_gem_va_map_flags - map GEM UAPI flags into hardware flags
++ *
++ * @adev: amdgpu_device pointer
++ * @flags: GEM UAPI flags
++ *
++ * Returns the GEM UAPI flags mapped into hardware for the ASIC.
++ */
++uint64_t amdgpu_gem_va_map_flags(struct amdgpu_device *adev, uint32_t flags)
++{
++ uint64_t pte_flag = 0;
++
++ if (flags & AMDGPU_VM_PAGE_EXECUTABLE)
++ pte_flag |= AMDGPU_PTE_EXECUTABLE;
++ if (flags & AMDGPU_VM_PAGE_READABLE)
++ pte_flag |= AMDGPU_PTE_READABLE;
++ if (flags & AMDGPU_VM_PAGE_WRITEABLE)
++ pte_flag |= AMDGPU_PTE_WRITEABLE;
++ if (flags & AMDGPU_VM_PAGE_PRT)
++ pte_flag |= AMDGPU_PTE_PRT;
++
++ if (adev->gmc.gmc_funcs->map_mtype)
++ pte_flag |= amdgpu_gmc_map_mtype(adev,
++ flags & AMDGPU_VM_MTYPE_MASK);
++
++ return pte_flag;
++}
++
+ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *filp)
+ {
+@@ -711,7 +739,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
+
+ switch (args->operation) {
+ case AMDGPU_VA_OP_MAP:
+- va_flags = amdgpu_gmc_get_pte_flags(adev, args->flags);
++ va_flags = amdgpu_gem_va_map_flags(adev, args->flags);
+ r = amdgpu_vm_bo_map(adev, bo_va, args->va_address,
+ args->offset_in_bo, args->map_size,
+ va_flags);
+@@ -726,7 +754,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
+ args->map_size);
+ break;
+ case AMDGPU_VA_OP_REPLACE:
+- va_flags = amdgpu_gmc_get_pte_flags(adev, args->flags);
++ va_flags = amdgpu_gem_va_map_flags(adev, args->flags);
+ r = amdgpu_vm_bo_replace_map(adev, bo_va, args->va_address,
+ args->offset_in_bo, args->map_size,
+ va_flags);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
+index 206c5fa2c18f..ff7f8de62655 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
+@@ -69,6 +69,7 @@ int amdgpu_gem_mmap_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *filp);
+ int amdgpu_gem_wait_idle_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *filp);
++uint64_t amdgpu_gem_va_map_flags(struct amdgpu_device *adev, uint32_t flags);
+ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *filp);
+ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
+index df012766d907..a669c5826415 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
+@@ -99,9 +99,8 @@ struct amdgpu_gmc_funcs {
+ unsigned pasid);
+ /* enable/disable PRT support */
+ void (*set_prt)(struct amdgpu_device *adev, bool enable);
+- /* set pte flags based per asic */
+- uint64_t (*get_vm_pte_flags)(struct amdgpu_device *adev,
+- uint32_t flags);
++ /* map mtype to hardware flags */
++ uint64_t (*map_mtype)(struct amdgpu_device *adev, uint32_t flags);
+ /* get the pde for a given mc addr */
+ void (*get_vm_pde)(struct amdgpu_device *adev, int level,
+ u64 *dst, u64 *flags);
+@@ -185,8 +184,8 @@ struct amdgpu_gmc {
+ #define amdgpu_gmc_flush_gpu_tlb(adev, vmid, vmhub, type) ((adev)->gmc.gmc_funcs->flush_gpu_tlb((adev), (vmid), (vmhub), (type)))
+ #define amdgpu_gmc_emit_flush_gpu_tlb(r, vmid, addr) (r)->adev->gmc.gmc_funcs->emit_flush_gpu_tlb((r), (vmid), (addr))
+ #define amdgpu_gmc_emit_pasid_mapping(r, vmid, pasid) (r)->adev->gmc.gmc_funcs->emit_pasid_mapping((r), (vmid), (pasid))
++#define amdgpu_gmc_map_mtype(adev, flags) (adev)->gmc.gmc_funcs->map_mtype((adev),(flags))
+ #define amdgpu_gmc_get_vm_pde(adev, level, dst, flags) (adev)->gmc.gmc_funcs->get_vm_pde((adev), (level), (dst), (flags))
+-#define amdgpu_gmc_get_pte_flags(adev, flags) (adev)->gmc.gmc_funcs->get_vm_pte_flags((adev),(flags))
+
+ /**
+ * amdgpu_gmc_vram_full_visible - Check if full VRAM is visible through the BAR
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index db1fe417fc95..d85753632840 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1585,8 +1585,10 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev,
+ if (!(mapping->flags & AMDGPU_PTE_WRITEABLE))
+ flags &= ~AMDGPU_PTE_WRITEABLE;
+
+- flags &= ~AMDGPU_PTE_EXECUTABLE;
+- flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
++ if (adev->asic_type >= CHIP_TONGA) {
++ flags &= ~AMDGPU_PTE_EXECUTABLE;
++ flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
++ }
+
+ if (adev->asic_type >= CHIP_NAVI10) {
+ flags &= ~AMDGPU_PTE_MTYPE_NV10_MASK;
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+index 2f9f881b810d..ebc2abbbf039 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+@@ -397,43 +397,23 @@ static void gmc_v10_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid
+ * 1 system
+ * 0 valid
+ */
+-static uint64_t gmc_v10_0_get_vm_pte_flags(struct amdgpu_device *adev,
+- uint32_t flags)
+-{
+- uint64_t pte_flag = 0;
+-
+- if (flags & AMDGPU_VM_PAGE_EXECUTABLE)
+- pte_flag |= AMDGPU_PTE_EXECUTABLE;
+- if (flags & AMDGPU_VM_PAGE_READABLE)
+- pte_flag |= AMDGPU_PTE_READABLE;
+- if (flags & AMDGPU_VM_PAGE_WRITEABLE)
+- pte_flag |= AMDGPU_PTE_WRITEABLE;
+
+- switch (flags & AMDGPU_VM_MTYPE_MASK) {
++static uint64_t gmc_v10_0_map_mtype(struct amdgpu_device *adev, uint32_t flags)
++{
++ switch (flags) {
+ case AMDGPU_VM_MTYPE_DEFAULT:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+ case AMDGPU_VM_MTYPE_NC:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+ case AMDGPU_VM_MTYPE_WC:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_WC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_WC);
+ case AMDGPU_VM_MTYPE_CC:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_CC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_CC);
+ case AMDGPU_VM_MTYPE_UC:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_UC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_UC);
+ default:
+- pte_flag |= AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_NV10(MTYPE_NC);
+ }
+-
+- if (flags & AMDGPU_VM_PAGE_PRT)
+- pte_flag |= AMDGPU_PTE_PRT;
+-
+- return pte_flag;
+ }
+
+ static void gmc_v10_0_get_vm_pde(struct amdgpu_device *adev, int level,
+@@ -464,7 +444,7 @@ static const struct amdgpu_gmc_funcs gmc_v10_0_gmc_funcs = {
+ .flush_gpu_tlb = gmc_v10_0_flush_gpu_tlb,
+ .emit_flush_gpu_tlb = gmc_v10_0_emit_flush_gpu_tlb,
+ .emit_pasid_mapping = gmc_v10_0_emit_pasid_mapping,
+- .get_vm_pte_flags = gmc_v10_0_get_vm_pte_flags,
++ .map_mtype = gmc_v10_0_map_mtype,
+ .get_vm_pde = gmc_v10_0_get_vm_pde
+ };
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+index e60b6a5f170a..2b6a0d27f085 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+@@ -383,21 +383,6 @@ static uint64_t gmc_v6_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
+ return pd_addr;
+ }
+
+-static uint64_t gmc_v6_0_get_vm_pte_flags(struct amdgpu_device *adev,
+- uint32_t flags)
+-{
+- uint64_t pte_flag = 0;
+-
+- if (flags & AMDGPU_VM_PAGE_READABLE)
+- pte_flag |= AMDGPU_PTE_READABLE;
+- if (flags & AMDGPU_VM_PAGE_WRITEABLE)
+- pte_flag |= AMDGPU_PTE_WRITEABLE;
+- if (flags & AMDGPU_VM_PAGE_PRT)
+- pte_flag |= AMDGPU_PTE_PRT;
+-
+- return pte_flag;
+-}
+-
+ static void gmc_v6_0_get_vm_pde(struct amdgpu_device *adev, int level,
+ uint64_t *addr, uint64_t *flags)
+ {
+@@ -1159,7 +1144,6 @@ static const struct amdgpu_gmc_funcs gmc_v6_0_gmc_funcs = {
+ .emit_flush_gpu_tlb = gmc_v6_0_emit_flush_gpu_tlb,
+ .set_prt = gmc_v6_0_set_prt,
+ .get_vm_pde = gmc_v6_0_get_vm_pde,
+- .get_vm_pte_flags = gmc_v6_0_get_vm_pte_flags
+ };
+
+ static const struct amdgpu_irq_src_funcs gmc_v6_0_irq_funcs = {
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+index ef628f7b2a0e..5a47f5c4a118 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+@@ -460,21 +460,6 @@ static void gmc_v7_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+ amdgpu_ring_emit_wreg(ring, mmIH_VMID_0_LUT + vmid, pasid);
+ }
+
+-static uint64_t gmc_v7_0_get_vm_pte_flags(struct amdgpu_device *adev,
+- uint32_t flags)
+-{
+- uint64_t pte_flag = 0;
+-
+- if (flags & AMDGPU_VM_PAGE_READABLE)
+- pte_flag |= AMDGPU_PTE_READABLE;
+- if (flags & AMDGPU_VM_PAGE_WRITEABLE)
+- pte_flag |= AMDGPU_PTE_WRITEABLE;
+- if (flags & AMDGPU_VM_PAGE_PRT)
+- pte_flag |= AMDGPU_PTE_PRT;
+-
+- return pte_flag;
+-}
+-
+ static void gmc_v7_0_get_vm_pde(struct amdgpu_device *adev, int level,
+ uint64_t *addr, uint64_t *flags)
+ {
+@@ -1355,7 +1340,6 @@ static const struct amdgpu_gmc_funcs gmc_v7_0_gmc_funcs = {
+ .emit_flush_gpu_tlb = gmc_v7_0_emit_flush_gpu_tlb,
+ .emit_pasid_mapping = gmc_v7_0_emit_pasid_mapping,
+ .set_prt = gmc_v7_0_set_prt,
+- .get_vm_pte_flags = gmc_v7_0_get_vm_pte_flags,
+ .get_vm_pde = gmc_v7_0_get_vm_pde
+ };
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+index d42610450807..8519d1346a37 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+@@ -688,23 +688,6 @@ static void gmc_v8_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+ * 0 valid
+ */
+
+-static uint64_t gmc_v8_0_get_vm_pte_flags(struct amdgpu_device *adev,
+- uint32_t flags)
+-{
+- uint64_t pte_flag = 0;
+-
+- if (flags & AMDGPU_VM_PAGE_EXECUTABLE)
+- pte_flag |= AMDGPU_PTE_EXECUTABLE;
+- if (flags & AMDGPU_VM_PAGE_READABLE)
+- pte_flag |= AMDGPU_PTE_READABLE;
+- if (flags & AMDGPU_VM_PAGE_WRITEABLE)
+- pte_flag |= AMDGPU_PTE_WRITEABLE;
+- if (flags & AMDGPU_VM_PAGE_PRT)
+- pte_flag |= AMDGPU_PTE_PRT;
+-
+- return pte_flag;
+-}
+-
+ static void gmc_v8_0_get_vm_pde(struct amdgpu_device *adev, int level,
+ uint64_t *addr, uint64_t *flags)
+ {
+@@ -1728,7 +1711,6 @@ static const struct amdgpu_gmc_funcs gmc_v8_0_gmc_funcs = {
+ .emit_flush_gpu_tlb = gmc_v8_0_emit_flush_gpu_tlb,
+ .emit_pasid_mapping = gmc_v8_0_emit_pasid_mapping,
+ .set_prt = gmc_v8_0_set_prt,
+- .get_vm_pte_flags = gmc_v8_0_get_vm_pte_flags,
+ .get_vm_pde = gmc_v8_0_get_vm_pde
+ };
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+index fe63f64c4db3..c95e62023e5e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+@@ -609,47 +609,25 @@ static void gmc_v9_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+ * 0 valid
+ */
+
+-static uint64_t gmc_v9_0_get_vm_pte_flags(struct amdgpu_device *adev,
+- uint32_t flags)
++static uint64_t gmc_v9_0_map_mtype(struct amdgpu_device *adev, uint32_t flags)
+
+ {
+- uint64_t pte_flag = 0;
+-
+- if (flags & AMDGPU_VM_PAGE_EXECUTABLE)
+- pte_flag |= AMDGPU_PTE_EXECUTABLE;
+- if (flags & AMDGPU_VM_PAGE_READABLE)
+- pte_flag |= AMDGPU_PTE_READABLE;
+- if (flags & AMDGPU_VM_PAGE_WRITEABLE)
+- pte_flag |= AMDGPU_PTE_WRITEABLE;
+-
+- switch (flags & AMDGPU_VM_MTYPE_MASK) {
++ switch (flags) {
+ case AMDGPU_VM_MTYPE_DEFAULT:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+ case AMDGPU_VM_MTYPE_NC:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+ case AMDGPU_VM_MTYPE_WC:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_WC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_WC);
+ case AMDGPU_VM_MTYPE_RW:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_RW);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_RW);
+ case AMDGPU_VM_MTYPE_CC:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_CC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_CC);
+ case AMDGPU_VM_MTYPE_UC:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_UC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_UC);
+ default:
+- pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+- break;
++ return AMDGPU_PTE_MTYPE_VG10(MTYPE_NC);
+ }
+-
+- if (flags & AMDGPU_VM_PAGE_PRT)
+- pte_flag |= AMDGPU_PTE_PRT;
+-
+- return pte_flag;
+ }
+
+ static void gmc_v9_0_get_vm_pde(struct amdgpu_device *adev, int level,
+@@ -680,7 +658,7 @@ static const struct amdgpu_gmc_funcs gmc_v9_0_gmc_funcs = {
+ .flush_gpu_tlb = gmc_v9_0_flush_gpu_tlb,
+ .emit_flush_gpu_tlb = gmc_v9_0_emit_flush_gpu_tlb,
+ .emit_pasid_mapping = gmc_v9_0_emit_pasid_mapping,
+- .get_vm_pte_flags = gmc_v9_0_get_vm_pte_flags,
++ .map_mtype = gmc_v9_0_map_mtype,
+ .get_vm_pde = gmc_v9_0_get_vm_pde
+ };
+
+--
+2.17.1
+