diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch new file mode 100644 index 00000000..ae9abeda --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch @@ -0,0 +1,80 @@ +From 5f44dcc5014c9b6b947a47f4bc93e3ca94867000 Mon Sep 17 00:00:00 2001 +From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> +Date: Thu, 15 Jun 2017 11:36:06 -0400 +Subject: [PATCH 1297/4131] drm/amdkfd: Make trap handler buffer RO + +BUG: SWDEV-110763 + +Change-Id: I3e6881d1d22dd2192a23c9f78339d9c52feaf3d2 +Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_process.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c +index 205aed4..d1ef118 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c +@@ -120,7 +120,7 @@ static void kfd_process_free_gpuvm(struct kgd_mem *mem, + */ + static int kfd_process_alloc_gpuvm(struct kfd_process *p, + struct kfd_dev *kdev, uint64_t gpu_va, uint32_t size, +- void **kptr, struct kfd_process_device *pdd) ++ void **kptr, struct kfd_process_device *pdd, uint32_t flags) + { + int err; + void *mem = NULL; +@@ -128,10 +128,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process *p, + err = kdev->kfd2kgd->alloc_memory_of_gpu(kdev->kgd, gpu_va, size, + pdd->vm, + (struct kgd_mem **)&mem, NULL, kptr, +- ALLOC_MEM_FLAGS_GTT | +- ALLOC_MEM_FLAGS_NONPAGED | +- ALLOC_MEM_FLAGS_EXECUTE_ACCESS | +- ALLOC_MEM_FLAGS_NO_SUBSTITUTE); ++ flags); + if (err) + goto err_alloc_mem; + +@@ -177,6 +174,9 @@ static int kfd_process_reserve_ib_mem(struct kfd_process *p) + struct kfd_dev *kdev = NULL; + struct qcm_process_device *qpd = NULL; + void *kaddr; ++ uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_NONPAGED | ++ ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ++ ALLOC_MEM_FLAGS_EXECUTE_ACCESS; + + list_for_each_entry_safe(pdd, temp, &p->per_device_data, + per_device_list) { +@@ -188,7 +188,7 @@ static int kfd_process_reserve_ib_mem(struct kfd_process *p) + if (qpd->ib_base) { /* is dGPU */ + ret = kfd_process_alloc_gpuvm(p, kdev, + qpd->ib_base, kdev->ib_size, +- &kaddr, pdd); ++ &kaddr, pdd, flags); + if (!ret) + qpd->ib_kaddr = kaddr; + else +@@ -505,6 +505,10 @@ static int kfd_process_init_cwsr(struct kfd_process *p, struct file *filep) + struct kfd_dev *dev = NULL; + struct qcm_process_device *qpd = NULL; + void *kaddr; ++ uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_NONPAGED | ++ ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ++ ALLOC_MEM_FLAGS_READONLY | ++ ALLOC_MEM_FLAGS_EXECUTE_ACCESS; + + list_for_each_entry_safe(pdd, temp, &p->per_device_data, + per_device_list) { +@@ -515,7 +519,7 @@ static int kfd_process_init_cwsr(struct kfd_process *p, struct file *filep) + if (qpd->cwsr_base) { + /* cwsr_base is only set for DGPU */ + ret = kfd_process_alloc_gpuvm(p, dev, qpd->cwsr_base, +- dev->cwsr_size, &kaddr, pdd); ++ dev->cwsr_size, &kaddr, pdd, flags); + if (!ret) { + qpd->cwsr_kaddr = kaddr; + qpd->tba_addr = qpd->cwsr_base; +-- +2.7.4 + |