aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1297-drm-amdkfd-Make-trap-handler-buffer-RO.patch b/common/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/common/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
+