kfdtest: fix trap on wave start and end
The debugger override will set the initial request mask to the
previously set request mask so use a different mask to assert
enablement.
Trap on wave start and end also run back to back, so fix the
previous override mask check as well.
In addition, unlike instruction traps, trap on wave start and end
will not require a rewind of the program counter on wave exit.
[ROCm/ROCR-Runtime commit: c710a06ee0]
This commit is contained in:
committed by
Kim, Jonathan
parent
6195f65f9e
commit
20d9a9a15a
@@ -361,10 +361,8 @@ TEST_F(KFDDBGTest, HitTrapOnWaveStartEndEvent) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
uint32_t enableMask = !!!(i % 2) ? KFD_DBG_TRAP_MASK_TRAP_ON_WAVE_START :
|
||||
KFD_DBG_TRAP_MASK_TRAP_ON_WAVE_END;
|
||||
uint32_t supportedMask = enableMask;
|
||||
debug->SetWaveLaunchOverride(KFD_DBG_TRAP_OVERRIDE_OR,
|
||||
&enableMask,
|
||||
&supportedMask);
|
||||
uint32_t supportedMask = enableMask, reqMask = enableMask;
|
||||
debug->SetWaveLaunchOverride(KFD_DBG_TRAP_OVERRIDE_OR, &reqMask, &supportedMask);
|
||||
|
||||
if (!!!(supportedMask & enableMask)) {
|
||||
EXPECT_SUCCESS(queue.Destroy());
|
||||
@@ -374,7 +372,8 @@ TEST_F(KFDDBGTest, HitTrapOnWaveStartEndEvent) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
ASSERT_EQ(enableMask, 0); // previous set mask
|
||||
// previous set mask
|
||||
ASSERT_EQ(reqMask, !!!(i % 2) ? 0 : KFD_DBG_TRAP_MASK_TRAP_ON_WAVE_START);
|
||||
|
||||
Dispatch *dispatch;
|
||||
dispatch = new Dispatch(isaBuf);
|
||||
|
||||
@@ -1130,6 +1130,11 @@ const char *TrapHandlerIsa =
|
||||
s_waitcnt lgkmcnt(0)
|
||||
s_mov_b32 m0, ttmp2
|
||||
v_mov_b32 v4, ttmp1
|
||||
.if (.amdgcn.gfx_generation_number >= 12)
|
||||
s_getreg_b32 ttmp14, hwreg(HW_REG_EXCP_FLAG_PRIV)
|
||||
s_and_b32 ttmp2, ttmp14, 0x300
|
||||
s_cbranch_scc1 RESTORE_AND_EXIT
|
||||
.endif
|
||||
/* restore and increment program counter to skip shader trap jump*/
|
||||
s_add_u32 ttmp0, ttmp0, 4
|
||||
s_addc_u32 ttmp1, ttmp1, 0
|
||||
|
||||
Reference in New Issue
Block a user