trap_handler.s: Clear PERF_SNAPSHOT/HOST_TRAP before returning

Make sure to clear the HOST_TRAP and PERF_SNAPSHOT bits before returning
from the second level trap handler.  As those bits are sticky, this
ensures future re-entry to the trap handler (for context save for
example) will not be confused with a sampling trap.

Change-Id: I05e5e58779a650b324ac6e30d574dc6931340f13
Signed-off-by: Lancelot SIX <lancelot.six@amd.com>


[ROCm/ROCR-Runtime commit: eece210a5c]
Этот коммит содержится в:
Lancelot SIX
2025-03-20 17:37:22 +00:00
коммит произвёл Six, Lancelot
родитель 74b69e1840
Коммит 23254f7a1d
+3
Просмотреть файл
@@ -54,6 +54,7 @@
.set SQ_WAVE_TRAPSTS_XNACK_ERROR_SHIFT , 28
.set SQ_WAVE_TRAPSTS_MATH_EXCP , 0x7F
.set SQ_WAVE_TRAPSTS_PERF_SNAPSHOT_SHIFT , 26
.set SQ_WAVE_TRAPSTS_HOST_TRAP_SHIFT , 22
.set SQ_WAVE_MODE_EXCP_EN_SHIFT , 12
.set SQ_WAVE_MODE_EXCP_EN_SIZE , 8
.set TRAP_ID_ABORT , 2
@@ -284,6 +285,7 @@ trap_entry:
s_load_dwordx2 ttmp[2:3], ttmp[14:15], 0 glc // ttmp[14:15]=*host_trap_buffers
.if .amdgcn.gfx_generation_minor >= 4
s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, SQ_WAVE_TRAPSTS_HOST_TRAP_SHIFT, 1), 0
s_bitset0_b32 ttmp13, TTMP13_PCS_IS_STOCHASTIC
s_bitset1_b32 ttmp13, TTMP13_PCS_IS_HOSTTRAP // set bit 22 in TTMP13
.else
@@ -323,6 +325,7 @@ trap_entry:
s_cbranch_scc0 .no_skip_debugtrap
// Handle stochastic trap
s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, SQ_WAVE_TRAPSTS_PERF_SNAPSHOT_SHIFT, 1), 0
s_load_dwordx2 ttmp[2:3], ttmp[14:15], 0x8 glc // ttmp[14:15]=*stoch_trap_buf
s_bitset0_b32 ttmp13, TTMP13_PCS_IS_HOSTTRAP
s_bitset1_b32 ttmp13, TTMP13_PCS_IS_STOCHASTIC // set bit 25 in TTMP13