Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add gfx11 hw debug mode enable and disable calls

Implement the per-device calls to enable or disable HW debug mode
for GFX11.

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>

authored by

Jonathan Kim and committed by
Alex Deucher
33f3437a be6f9403

+38
+38
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c
··· 607 607 adev->gfxhub.funcs->setup_vm_pt_regs(adev, vmid, page_table_base); 608 608 } 609 609 610 + /* 611 + * Returns TRAP_EN, EXCP_EN and EXCP_REPLACE. 612 + * 613 + * restore_dbg_registers is ignored here but is a general interface requirement 614 + * for devices that support GFXOFF and where the RLC save/restore list 615 + * does not support hw registers for debugging i.e. the driver has to manually 616 + * initialize the debug mode registers after it has disabled GFX off during the 617 + * debug session. 618 + */ 619 + static uint32_t kgd_gfx_v11_enable_debug_trap(struct amdgpu_device *adev, 620 + bool restore_dbg_registers, 621 + uint32_t vmid) 622 + { 623 + uint32_t data = 0; 624 + 625 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, TRAP_EN, 1); 626 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, EXCP_EN, 0); 627 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, EXCP_REPLACE, 0); 628 + 629 + return data; 630 + } 631 + 632 + /* Returns TRAP_EN, EXCP_EN and EXCP_REPLACE. */ 633 + static uint32_t kgd_gfx_v11_disable_debug_trap(struct amdgpu_device *adev, 634 + bool keep_trap_enabled, 635 + uint32_t vmid) 636 + { 637 + uint32_t data = 0; 638 + 639 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, TRAP_EN, keep_trap_enabled); 640 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, EXCP_EN, 0); 641 + data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, EXCP_REPLACE, 0); 642 + 643 + return data; 644 + } 645 + 610 646 const struct kfd2kgd_calls gfx_v11_kfd2kgd = { 611 647 .program_sh_mem_settings = program_sh_mem_settings_v11, 612 648 .set_pasid_vmid_mapping = set_pasid_vmid_mapping_v11, ··· 659 623 .wave_control_execute = wave_control_execute_v11, 660 624 .get_atc_vmid_pasid_mapping_info = NULL, 661 625 .set_vm_context_page_table_base = set_vm_context_page_table_base_v11, 626 + .enable_debug_trap = kgd_gfx_v11_enable_debug_trap, 627 + .disable_debug_trap = kgd_gfx_v11_disable_debug_trap 662 628 };