aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch225
1 files changed, 225 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch
new file mode 100644
index 00000000..deb670f1
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4142-drm-amdkfd-No-longer-support-debug-reg-data-vars.patch
@@ -0,0 +1,225 @@
+From 6d39c416f207a26d59b46ecff9aeb6023b29043d Mon Sep 17 00:00:00 2001
+From: Philip Cox <Philip.Cox@amd.com>
+Date: Wed, 14 Aug 2019 09:05:52 -0400
+Subject: [PATCH 4142/4736] drm/amdkfd: No longer support debug reg data vars
+
+The KFD debugger uses data0/data1 for the debug trap handler, we
+we need to prevent the them being updated from userspace.
+
+Change-Id: I91086062c744a70a2706050aa35f61014551c5ef
+Signed-off-by: Philip Cox <Philip.Cox@amd.com>
+---
+ .../drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c | 1 -
+ .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 22 ----------------
+ .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h | 3 ---
+ drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 6 -----
+ .../gpu/drm/amd/include/kgd_kfd_interface.h | 3 ---
+ include/uapi/linux/kfd_ioctl.h | 26 +++++++------------
+ 6 files changed, 9 insertions(+), 52 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
+index db39c6653cce..7288810e0df5 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
+@@ -288,7 +288,6 @@ const struct kfd2kgd_calls arcturus_kfd2kgd = {
+ .get_hive_id = amdgpu_amdkfd_get_hive_id,
+ .enable_debug_trap = kgd_gfx_v9_enable_debug_trap,
+ .disable_debug_trap = kgd_gfx_v9_disable_debug_trap,
+- .set_debug_trap_data = kgd_gfx_v9_set_debug_trap_data,
+ .set_wave_launch_trap_override = kgd_gfx_v9_set_wave_launch_trap_override,
+ .set_wave_launch_mode = kgd_gfx_v9_set_wave_launch_mode,
+ .get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+index 530b8ada1f8f..dae572c776cc 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+@@ -845,9 +845,6 @@ uint32_t kgd_gfx_v9_enable_debug_trap(struct kgd_dev *kgd,
+ data = REG_SET_FIELD(data, SPI_GDBG_WAVE_CNTL, STALL_RA, 1);
+ WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_WAVE_CNTL), data);
+
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA0), 0);
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA1), 0);
+-
+ data = 0;
+ WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_MASK), data);
+
+@@ -864,9 +861,6 @@ uint32_t kgd_gfx_v9_disable_debug_trap(struct kgd_dev *kgd)
+
+ mutex_lock(&adev->grbm_idx_mutex);
+
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA0), 0);
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA1), 0);
+-
+ WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_MASK), 0);
+
+ mutex_unlock(&adev->grbm_idx_mutex);
+@@ -874,21 +868,6 @@ uint32_t kgd_gfx_v9_disable_debug_trap(struct kgd_dev *kgd)
+ return 0;
+ }
+
+-uint32_t kgd_gfx_v9_set_debug_trap_data(struct kgd_dev *kgd,
+- int trap_data0,
+- int trap_data1)
+-{
+- struct amdgpu_device *adev = get_amdgpu_device(kgd);
+-
+- mutex_lock(&adev->grbm_idx_mutex);
+-
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA0), trap_data0);
+- WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_DATA1), trap_data1);
+-
+- mutex_unlock(&adev->grbm_idx_mutex);
+- return 0;
+-}
+-
+ uint32_t kgd_gfx_v9_set_wave_launch_trap_override(struct kgd_dev *kgd,
+ uint32_t trap_override,
+ uint32_t trap_mask)
+@@ -1037,7 +1016,6 @@ const struct kfd2kgd_calls gfx_v9_kfd2kgd = {
+ .get_hive_id = amdgpu_amdkfd_get_hive_id,
+ .enable_debug_trap = kgd_gfx_v9_enable_debug_trap,
+ .disable_debug_trap = kgd_gfx_v9_disable_debug_trap,
+- .set_debug_trap_data = kgd_gfx_v9_set_debug_trap_data,
+ .set_wave_launch_trap_override = kgd_gfx_v9_set_wave_launch_trap_override,
+ .set_wave_launch_mode = kgd_gfx_v9_set_wave_launch_mode,
+ .get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
+index 7611ba466aa4..2b41d810c68e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
+@@ -67,9 +67,6 @@ uint32_t kgd_gfx_v9_enable_debug_trap(struct kgd_dev *kgd,
+ uint32_t trap_debug_wave_launch_mode,
+ uint32_t vmid);
+ uint32_t kgd_gfx_v9_disable_debug_trap(struct kgd_dev *kgd);
+-uint32_t kgd_gfx_v9_set_debug_trap_data(struct kgd_dev *kgd,
+- int trap_data0,
+- int trap_data1);
+ uint32_t kgd_gfx_v9_set_wave_launch_trap_override(struct kgd_dev *kgd,
+ uint32_t trap_override,
+ uint32_t trap_mask);
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+index c60c4480d124..52acb0064939 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+@@ -2763,12 +2763,6 @@ static int kfd_ioctl_dbg_set_debug_trap(struct file *filep,
+ }
+ break;
+
+- case KFD_IOC_DBG_TRAP_SET_TRAP_DATA:
+- r = dev->kfd2kgd->set_debug_trap_data(dev->kgd,
+- data1,
+- data2);
+- break;
+-
+ case KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE:
+ r = dev->kfd2kgd->set_wave_launch_trap_override(
+ dev->kgd,
+diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+index db00c2ec9277..975961a298d9 100644
+--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
++++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+@@ -327,9 +327,6 @@ struct kfd2kgd_calls {
+ uint32_t trap_debug_wave_launch_mode,
+ uint32_t vmid);
+ uint32_t (*disable_debug_trap)(struct kgd_dev *kgd);
+- uint32_t (*set_debug_trap_data)(struct kgd_dev *kgd,
+- int trap_data0,
+- int trap_data1);
+ uint32_t (*set_wave_launch_trap_override)(struct kgd_dev *kgd,
+ uint32_t trap_override,
+ uint32_t trap_mask);
+diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h
+index 8c9a5ab34d9e..760b3d6159fa 100644
+--- a/include/uapi/linux/kfd_ioctl.h
++++ b/include/uapi/linux/kfd_ioctl.h
+@@ -28,8 +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 2
++#define KFD_IOCTL_DBG_MAJOR_VERSION 1
++#define KFD_IOCTL_DBG_MINOR_VERSION 0
+
+ struct kfd_ioctl_get_version_args {
+ __u32 major_version; /* from KFD */
+@@ -219,21 +219,13 @@ struct kfd_ioctl_dbg_wave_control_args {
+ */
+ #define KFD_IOC_DBG_TRAP_ENABLE 0
+
+-/* KFD_IOC_DBG_TRAP_SET_TRAP_DATA:
+- * ptr: unused
+- * data1: SPI_GDBG_TRAP_DATA0
+- * data2: SPI_GDBG_TRAP_DATA1
+- * data3: unused
+- */
+-#define KFD_IOC_DBG_TRAP_SET_TRAP_DATA 1
+-
+ /* KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE:
+ * ptr: unused
+ * data1: override mode: 0=OR, 1=REPLACE
+ * data2: mask
+ * data3: unused
+ */
+-#define KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE 2
++#define KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE 1
+
+ /* KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_MODE:
+ * ptr: unused
+@@ -241,7 +233,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: unused
+ * data3: unused
+ */
+-#define KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_MODE 3
++#define KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_MODE 2
+
+ /* KFD_IOC_DBG_TRAP_NODE_SUSPEND:
+ * ptr: pointer to an array of Queues IDs
+@@ -249,7 +241,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: number of queues
+ * data3: grace period
+ */
+-#define KFD_IOC_DBG_TRAP_NODE_SUSPEND 4
++#define KFD_IOC_DBG_TRAP_NODE_SUSPEND 3
+
+ /* KFD_IOC_DBG_TRAP_NODE_RESUME:
+ * ptr: pointer to an array of Queues IDs
+@@ -257,7 +249,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: number of queues
+ * data3: unused
+ */
+-#define KFD_IOC_DBG_TRAP_NODE_RESUME 5
++#define KFD_IOC_DBG_TRAP_NODE_RESUME 4
+
+ /* KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT:
+ * ptr: unused
+@@ -265,7 +257,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: flags (IN)
+ * data3: suspend[2:2], event type [1:0] (OUT)
+ */
+-#define KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT 6
++#define KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT 5
+
+ /* KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT:
+ * ptr: user buffer (IN)
+@@ -273,7 +265,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: number of queue snapshots (IN/OUT) - 0 for IN ignores buffer writes
+ * data3: unused
+ */
+-#define KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT 7
++#define KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT 6
+
+ /* KFD_IOC_DBG_TRAP_GET_VERSION:
+ * prt: unsused
+@@ -281,7 +273,7 @@ struct kfd_ioctl_dbg_wave_control_args {
+ * data2: minor version (OUT)
+ * data3: unused
+ */
+-#define KFD_IOC_DBG_TRAP_GET_VERSION 8
++#define KFD_IOC_DBG_TRAP_GET_VERSION 7
+
+ struct kfd_ioctl_dbg_trap_args {
+ __u64 ptr; /* to KFD -- used for pointer arguments: queue arrays */
+--
+2.17.1
+