trap_handler: Set status.skip_export when halting a wave
When inspecting waves on architectures where SPI may not initialize TTMP registers, the debugger cannot reliably know if the trap handler was entered and if it saved valuable information in TTMP registers. This patch uses the status.skip_export bit (unused by the compute shaders) to indicate that it got executed before halting a wave. This is done except for gfx940, where ttmp11[31] can be used (as long as TTMP registers are always initialized by SPI for this architecture). It could be possible to be more selective as architectures always initializing TTMP registers do not require this step, but always doing is makes maintenance simpler. Change-Id: I5c4148c78062f7ffa049ac7856c2edc82dbc77d1
이 커밋은 다음에 포함됨:
1 부모
ed462035fa
커밋
5d3f6a63f1
2 파일이 변경됨
+10
-2
검색과 일치하는 파일 없음
@@ -81,8 +81,10 @@ __attribute__((noinline)) static void _loader_debug_state() {
|
||||
// 6: New trap handler ABI. ttmp6[25:0] contains dispatch index modulo queue size
|
||||
// 7: New trap handler ABI. Send interrupts as a bitmask, coalescing concurrent exceptions.
|
||||
// 8: New trap handler ABI. for gfx940: Initialize ttmp[4:5] if ttmp11[31] == 0.
|
||||
// 9: New trap handler API. For gfx11: Save PC in ttmp11[22:7] ttmp6[31:0], and park the wave if stopped.
|
||||
HSA_API r_debug _amdgpu_r_debug = {9,
|
||||
// 9: New trap handler ABI. For gfx11: Save PC in ttmp11[22:7] ttmp6[31:0], and park the wave if stopped.
|
||||
// 10: New trap handler ABI. Set status.skip_export when halting the wave.
|
||||
// For gfx940, set ttmp6[31] = 0 if ttmp11[31] == 0.
|
||||
HSA_API r_debug _amdgpu_r_debug = {10,
|
||||
nullptr,
|
||||
reinterpret_cast<uintptr_t>(&_loader_debug_state),
|
||||
r_debug::RT_CONSISTENT,
|
||||
|
||||
새 이슈에서 참조
사용자 차단