365df27e4b
the handler and disable them again right after the handler returns. we don't want another hardware interrupt coming in while we're mucking with the list pointers. also, clear the intrhand's ih_pending pointer before calling the handler rather than after, so that if another interrupt comes in while the handler is running, we can put the intrhand back on the list so it will be called again. in send_softint(), disable interrupts via %pstate instead of %pil, so that hardware interrupts at higher levels are blocked while we manipulate the intrpending list. also, if the intrhand already has ih_pending set, don't bother poking the SET_SOFTINT register again, since being on the list implies that there is already a softint pending in the hardware. these appear to fix PR 21750 (the "sleep forever" problem). while I'm here, remove more vestiges of the !INTRLIST softint stuff (code and comments). and in sparc64_ipi_flush_all(), interrupts are already disabled so we don't need to fiddle with %pstate. |
||
---|---|---|
.. | ||
compile | ||
conf | ||
dev | ||
include | ||
sparc64 | ||
stand | ||
Makefile |