{
        void __iomem *regs = thrd->dmac->base;
        u8 insn[6] = {0, 0, 0, 0, 0, 0};
+       u32 inten = readl(regs + INTEN);
 
        if (_state(thrd) == PL330_STATE_FAULT_COMPLETING)
                UNTIL(thrd, PL330_STATE_FAULTING | PL330_STATE_KILLING);
 
        _emit_KILL(0, insn);
 
-       /* Stop generating interrupts for SEV */
-       writel(readl(regs + INTEN) & ~(1 << thrd->ev), regs + INTEN);
-
        _execute_DBGINSN(thrd, insn, is_manager(thrd));
+
+       /* clear the event */
+       if (inten & (1 << thrd->ev))
+               writel(1 << thrd->ev, regs + INTCLR);
+       /* Stop generating interrupts for SEV */
+       writel(inten & ~(1 << thrd->ev), regs + INTEN);
 }
 
 /* Start doing req 'idx' of thread 'thrd' */