On Mon, 2018-10-01 at 09:16 +0200, Juergen Gross wrote:
/* If irq pending already clear it and return. */
/* Guard against reentry. */
local_irq_save(flags);
/* If irq pending already clear it. */ if (xen_test_irq_pending(irq)) { xen_clear_irq_pending(irq);
return;
} else if (READ_ONCE(*byte) == val) {
/* Block until irq becomes pending (or a spurious wakeup) */
xen_poll_irq(irq); }
Does this still allow other IRQs to wake it from xen_poll_irq()?
In the case where process-context code is spinning for a lock without disabling interrupts, we *should* allow interrupts to occur still... does this?