aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch120
1 files changed, 120 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch
new file mode 100644
index 00000000..38e0fdfc
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3922-drm-amdkfd-add-pre-alpha-debugger-versioning.patch
@@ -0,0 +1,120 @@
+From ac678417637b2f032450126406f891471201fabc Mon Sep 17 00:00:00 2001
+From: Jonathan Kim <jonathan.kim@amd.com>
+Date: Fri, 20 Sep 2019 15:02:47 -0400
+Subject: [PATCH 3922/4256] drm/amdkfd: add pre-alpha debugger versioning
+
+add temporary ioctl option in dbg trap to get pre-alpha debugger
+feature version
+
+Change-Id: Iffa579056b89088da0cc1863bf6833b9e710a1ee
+Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 24 +++++++++++++++---------
+ include/uapi/linux/kfd_ioctl.h | 10 ++++++++++
+ 2 files changed, 25 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+index 838a8d46ba47..1713413e5ce5 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+@@ -2611,8 +2611,8 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ uint32_t data1;
+ uint32_t data2;
+ uint32_t data3;
+- bool is_suspend_or_resume;
+- bool is_q_snapshot;
++ bool need_device;
++ bool need_qid_array;
+
+ debug_trap_action = args->op;
+ gpu_id = args->gpu_id;
+@@ -2626,13 +2626,16 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ goto out;
+ }
+
+- is_suspend_or_resume =
++ need_device =
++ debug_trap_action != KFD_IOC_DBG_TRAP_NODE_SUSPEND &&
++ debug_trap_action != KFD_IOC_DBG_TRAP_NODE_RESUME &&
++ debug_trap_action != KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT &&
++ debug_trap_action != KFD_IOC_DBG_TRAP_GET_VERSION;
++
++ need_qid_array =
+ debug_trap_action == KFD_IOC_DBG_TRAP_NODE_SUSPEND ||
+ debug_trap_action == KFD_IOC_DBG_TRAP_NODE_RESUME;
+
+- is_q_snapshot =
+- debug_trap_action == KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT;
+-
+ pid = find_get_pid(args->pid);
+ if (!pid) {
+ pr_err("Cannot find pid info for %i\n",
+@@ -2666,7 +2669,7 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+
+ mutex_lock(&target->mutex);
+
+- if (!(is_suspend_or_resume || is_q_snapshot)) {
++ if (need_device) {
+
+ dev = kfd_device_by_id(args->gpu_id);
+ if (!dev) {
+@@ -2710,7 +2713,7 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ r = -EINVAL;
+ goto unlock_out;
+ }
+- } else if (!is_q_snapshot) {
++ } else if (need_qid_array) {
+ /* data 2 has the number of queue IDs */
+ size_t queue_id_array_size = sizeof(uint32_t) * data2;
+
+@@ -2728,7 +2731,6 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ }
+ }
+
+-
+ switch (debug_trap_action) {
+ case KFD_IOC_DBG_TRAP_ENABLE:
+ switch (data1) {
+@@ -2814,6 +2816,10 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ if (r > 0)
+ r = 0;
+
++ break;
++ case KFD_IOC_DBG_TRAP_GET_VERSION:
++ args->data1 = KFD_IOCTL_DBG_MAJOR_VERSION;
++ args->data2 = KFD_IOCTL_DBG_MINOR_VERSION;
+ break;
+ default:
+ pr_err("Invalid option: %i\n", debug_trap_action);
+diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h
+index be91603f2c0f..e126cfcb0bbe 100644
+--- a/include/uapi/linux/kfd_ioctl.h
++++ b/include/uapi/linux/kfd_ioctl.h
+@@ -28,6 +28,8 @@
+
+ #define KFD_IOCTL_MAJOR_VERSION 1
+ #define KFD_IOCTL_MINOR_VERSION 2
++#define KFD_IOCTL_DBG_MAJOR_VERSION 0
++#define KFD_IOCTL_DBG_MINOR_VERSION 1
+
+ struct kfd_ioctl_get_version_args {
+ __u32 major_version; /* from KFD */
+@@ -273,6 +275,14 @@ struct kfd_ioctl_dbg_wave_control_args {
+ */
+ #define KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT 7
+
++/* KFD_IOC_DBG_TRAP_GET_VERSION:
++ * prt: unsused
++ * data1: major version (OUT)
++ * data2: minor version (OUT)
++ * data3: unused
++ */
++#define KFD_IOC_DBG_TRAP_GET_VERSION 8
++
+ struct kfd_ioctl_dbg_trap_args {
+ __u64 ptr; /* to KFD -- used for pointer arguments: queue arrays */
+ __u32 pid; /* to KFD */
+--
+2.17.1
+