OSDN Git Service

drm/amdgpu: add kgd hw debug mode setting interface
authorJonathan Kim <jonathan.kim@amd.com>
Wed, 30 Mar 2022 18:54:16 +0000 (14:54 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 16:34:53 +0000 (12:34 -0400)
Introduce the require KGD debug calls that will execute hardware debug
mode setting.

Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/include/kgd_kfd_interface.h

index 8cb3dbc..d0df338 100644 (file)
@@ -291,6 +291,40 @@ struct kfd2kgd_calls {
                        uint32_t vmid, uint64_t page_table_base);
        uint32_t (*read_vmid_from_vmfault_reg)(struct amdgpu_device *adev);
 
+       uint32_t (*enable_debug_trap)(struct amdgpu_device *adev,
+                                       bool restore_dbg_registers,
+                                       uint32_t vmid);
+       uint32_t (*disable_debug_trap)(struct amdgpu_device *adev,
+                                       bool keep_trap_enabled,
+                                       uint32_t vmid);
+       int (*validate_trap_override_request)(struct amdgpu_device *adev,
+                                       uint32_t trap_override,
+                                       uint32_t *trap_mask_supported);
+       uint32_t (*set_wave_launch_trap_override)(struct amdgpu_device *adev,
+                                            uint32_t vmid,
+                                            uint32_t trap_override,
+                                            uint32_t trap_mask_bits,
+                                            uint32_t trap_mask_request,
+                                            uint32_t *trap_mask_prev,
+                                            uint32_t kfd_dbg_trap_cntl_prev);
+       uint32_t (*set_wave_launch_mode)(struct amdgpu_device *adev,
+                                       uint8_t wave_launch_mode,
+                                       uint32_t vmid);
+       uint32_t (*set_address_watch)(struct amdgpu_device *adev,
+                                       uint64_t watch_address,
+                                       uint32_t watch_address_mask,
+                                       uint32_t watch_id,
+                                       uint32_t watch_mode,
+                                       uint32_t debug_vmid);
+       uint32_t (*clear_address_watch)(struct amdgpu_device *adev,
+                       uint32_t watch_id);
+       void (*get_iq_wait_times)(struct amdgpu_device *adev,
+                       uint32_t *wait_times);
+       void (*build_grace_period_packet_info)(struct amdgpu_device *adev,
+                       uint32_t wait_times,
+                       uint32_t grace_period,
+                       uint32_t *reg_offset,
+                       uint32_t *reg_data);
        void (*get_cu_occupancy)(struct amdgpu_device *adev, int pasid,
                        int *wave_cnt, int *max_waves_per_cu, uint32_t inst);
        void (*program_trap_handler_settings)(struct amdgpu_device *adev,