diff options
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.patch | 120 |
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 + |