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