aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch')
-rw-r--r--common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch113
1 files changed, 0 insertions, 113 deletions
diff --git a/common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch b/common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch
deleted file mode 100644
index 999f4af5..00000000
--- a/common/recipes-kernel/linux/files/0135-drm-amdkfd-Implement-un-register-debugger-IOCTLs.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 037ed9a2ac262e496bb0ddc924895e5f72969961 Mon Sep 17 00:00:00 2001
-From: Yair Shachar <yair.shachar@amd.com>
-Date: Wed, 20 May 2015 14:08:55 +0300
-Subject: [PATCH 0135/1050] drm/amdkfd: Implement (un)register debugger IOCTLs
-
-v2: rename get_dbgmgr_mutex to kfd_get_dbgmgr_mutex to namespace it
-
-Signed-off-by: Yair Shachar <yair.shachar@amd.com>
-Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
----
- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 72 +++++++++++++++++++++++++++++++-
- 1 file changed, 70 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-index b358e91..54a3e29 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-@@ -35,6 +35,7 @@
- #include <asm/processor.h>
- #include "kfd_priv.h"
- #include "kfd_device_queue_manager.h"
-+#include "kfd_dbgmgr.h"
-
- static long kfd_ioctl(struct file *, unsigned int, unsigned long);
- static int kfd_open(struct inode *, struct file *);
-@@ -435,7 +436,53 @@ out:
- static int kfd_ioctl_dbg_register(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- long status = -EFAULT;
-+ struct kfd_ioctl_dbg_register_args *args = data;
-+ struct kfd_dev *dev;
-+ struct kfd_dbgmgr *dbgmgr_ptr;
-+ struct kfd_process_device *pdd;
-+ bool create_ok;
-+ long status = 0;
-+
-+ dev = kfd_device_by_id(args->gpu_id);
-+ if (dev == NULL)
-+ return -EINVAL;
-+
-+ if (dev->device_info->asic_family == CHIP_CARRIZO) {
-+ pr_debug("kfd_ioctl_dbg_register not supported on CZ\n");
-+ return -EINVAL;
-+ }
-+
-+ mutex_lock(kfd_get_dbgmgr_mutex());
-+ mutex_lock(&p->mutex);
-+
-+ /*
-+ * make sure that we have pdd, if this the first queue created for
-+ * this process
-+ */
-+ pdd = kfd_bind_process_to_device(dev, p);
-+ if (IS_ERR(pdd)) {
-+ mutex_unlock(&p->mutex);
-+ mutex_unlock(kfd_get_dbgmgr_mutex());
-+ return PTR_ERR(pdd);
-+ }
-+
-+ if (dev->dbgmgr == NULL) {
-+ /* In case of a legal call, we have no dbgmgr yet */
-+ create_ok = kfd_dbgmgr_create(&dbgmgr_ptr, dev);
-+ if (create_ok) {
-+ status = kfd_dbgmgr_register(dbgmgr_ptr, p);
-+ if (status != 0)
-+ kfd_dbgmgr_destroy(dbgmgr_ptr);
-+ else
-+ dev->dbgmgr = dbgmgr_ptr;
-+ }
-+ } else {
-+ pr_debug("debugger already registered\n");
-+ status = -EINVAL;
-+ }
-+
-+ mutex_unlock(&p->mutex);
-+ mutex_unlock(kfd_get_dbgmgr_mutex());
-
- return status;
- }
-@@ -443,7 +490,28 @@ static int kfd_ioctl_dbg_register(struct file *filep,
- static int kfd_ioctl_dbg_unrgesiter(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- long status = -EFAULT;
-+ struct kfd_ioctl_dbg_unregister_args *args = data;
-+ struct kfd_dev *dev;
-+ long status;
-+
-+ dev = kfd_device_by_id(args->gpu_id);
-+ if (dev == NULL)
-+ return -EINVAL;
-+
-+ if (dev->device_info->asic_family == CHIP_CARRIZO) {
-+ pr_debug("kfd_ioctl_dbg_unrgesiter not supported on CZ\n");
-+ return -EINVAL;
-+ }
-+
-+ mutex_lock(kfd_get_dbgmgr_mutex());
-+
-+ status = kfd_dbgmgr_unregister(dev->dbgmgr, p);
-+ if (status == 0) {
-+ kfd_dbgmgr_destroy(dev->dbgmgr);
-+ dev->dbgmgr = NULL;
-+ }
-+
-+ mutex_unlock(kfd_get_dbgmgr_mutex());
-
- return status;
- }
---
-1.9.1
-