From 423eb437f13dab64aec713218132b7f4972e5ab5 Mon Sep 17 00:00:00 2001 From: changzhu Date: Tue, 20 Aug 2019 19:13:46 +0800 Subject: [PATCH 3480/4256] drm/amdkfd: fix kfd SWDEV-200283 test issue Change-Id: I4db96b1e066b62d83cc2d83553a09bf24ad1a369 Signed-off-by: changzhu Reviewed-by: Le Ma --- .../drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c | 7 +++++ .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 27 ++++++++++--------- .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h | 20 ++++++++++++++ include/uapi/linux/kfd_ioctl.h | 3 --- 4 files changed, 41 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c index 4d9101834ba7..7ef62f62abf9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c @@ -315,6 +315,13 @@ static const struct kfd2kgd_calls kfd2kgd = { .invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs, .invalidate_tlbs_vmid = kgd_gfx_v9_invalidate_tlbs_vmid, .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, + .build_grace_period_packet_info = kgd_gfx_v9_build_grace_period_packet_info, }; struct kfd2kgd_calls *amdgpu_amdkfd_arcturus_get_functions(void) 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 c98b57a5e9b2..8d80e6b7d684 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -68,12 +68,6 @@ static const uint32_t watchRegs[MAX_WATCH_ADDRESSES * ADDRESS_WATCH_REG_MAX] = { mmTCP_WATCH3_ADDR_H, mmTCP_WATCH3_ADDR_L, mmTCP_WATCH3_CNTL }; -static void kgd_build_grace_period_packet_info(struct kgd_dev *kgd, - uint32_t wait_times, - uint32_t grace_period, - uint32_t *reg_offset, - uint32_t *reg_data); - /* Because of REG_GET_FIELD() being used, we put this function in the * asic specific file. */ @@ -842,7 +836,7 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd, watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + reg_offset]; } -static uint32_t kgd_enable_debug_trap(struct kgd_dev *kgd, +uint32_t kgd_gfx_v9_enable_debug_trap(struct kgd_dev *kgd, uint32_t trap_debug_wave_launch_mode, uint32_t vmid) { @@ -876,7 +870,7 @@ static uint32_t kgd_enable_debug_trap(struct kgd_dev *kgd, return 0; } -static uint32_t kgd_disable_debug_trap(struct kgd_dev *kgd) +uint32_t kgd_gfx_v9_disable_debug_trap(struct kgd_dev *kgd) { struct amdgpu_device *adev = get_amdgpu_device(kgd); @@ -892,7 +886,7 @@ static uint32_t kgd_disable_debug_trap(struct kgd_dev *kgd) return 0; } -static uint32_t kgd_set_debug_trap_data(struct kgd_dev *kgd, +uint32_t kgd_gfx_v9_set_debug_trap_data(struct kgd_dev *kgd, int trap_data0, int trap_data1) { @@ -907,7 +901,7 @@ static uint32_t kgd_set_debug_trap_data(struct kgd_dev *kgd, return 0; } -static uint32_t kgd_set_wave_launch_trap_override(struct kgd_dev *kgd, +uint32_t kgd_gfx_v9_set_wave_launch_trap_override(struct kgd_dev *kgd, uint32_t trap_override, uint32_t trap_mask) { @@ -936,7 +930,7 @@ static uint32_t kgd_set_wave_launch_trap_override(struct kgd_dev *kgd, return 0; } -static uint32_t kgd_set_wave_launch_mode(struct kgd_dev *kgd, +uint32_t kgd_gfx_v9_set_wave_launch_mode(struct kgd_dev *kgd, uint8_t wave_launch_mode, uint32_t vmid) { @@ -980,7 +974,7 @@ static uint32_t kgd_set_wave_launch_mode(struct kgd_dev *kgd, * sem_rearm_wait_time -- Wait Count for Semaphore re-arm. * deq_retry_wait_time -- Wait Count for Global Wave Syncs. */ -static void kgd_get_iq_wait_times(struct kgd_dev *kgd, +void kgd_gfx_v9_get_iq_wait_times(struct kgd_dev *kgd, uint32_t *wait_times) { @@ -1023,7 +1017,7 @@ void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmi gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base); } -static void kgd_build_grace_period_packet_info(struct kgd_dev *kgd, +void kgd_gfx_v9_build_grace_period_packet_info(struct kgd_dev *kgd, uint32_t wait_times, uint32_t grace_period, uint32_t *reg_offset, @@ -1065,6 +1059,13 @@ static const struct kfd2kgd_calls kfd2kgd = { .invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs, .invalidate_tlbs_vmid = kgd_gfx_v9_invalidate_tlbs_vmid, .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, + .build_grace_period_packet_info = kgd_gfx_v9_build_grace_period_packet_info, }; struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void) 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 26d8879bff9d..a1c5789b5c36 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h @@ -67,3 +67,23 @@ int kgd_gfx_v9_invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid); int kgd_gfx_v9_invalidate_tlbs_vmid(struct kgd_dev *kgd, uint16_t vmid); int kgd_gfx_v9_get_tile_config(struct kgd_dev *kgd, struct tile_config *config); +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); +uint32_t kgd_gfx_v9_set_wave_launch_mode(struct kgd_dev *kgd, + uint8_t wave_launch_mode, + uint32_t vmid); +void kgd_gfx_v9_get_iq_wait_times(struct kgd_dev *kgd, + uint32_t *wait_times); +void kgd_gfx_v9_build_grace_period_packet_info(struct kgd_dev *kgd, + uint32_t wait_times, + uint32_t grace_period, + uint32_t *reg_offset, + uint32_t *reg_data); diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h index 617c07047d55..42551e2c6d59 100644 --- a/include/uapi/linux/kfd_ioctl.h +++ b/include/uapi/linux/kfd_ioctl.h @@ -679,9 +679,6 @@ struct kfd_ioctl_cross_memory_copy_args { #define AMDKFD_IOC_CROSS_MEMORY_COPY \ AMDKFD_IOWR(0x22, struct kfd_ioctl_cross_memory_copy_args) -#define AMDKFD_IOC_DBG_TRAP \ - AMDKFD_IOW(0x21, struct kfd_ioctl_dbg_trap_args) - #define AMDKFD_COMMAND_START 0x01 #define AMDKFD_COMMAND_END 0x23 -- 2.17.1