On Mon, 3 May 2004, Robert Watson wrote: > On Mon, 3 May 2004, Bruce Evans wrote: > > Unsafe. SWIs are wrapped by Giant unless they are created using > > swi_add(... INTR_MPSAFE ...). There are 26 calls to swi_add() in the > > tree, and the slow progress of Giant removal is shown by only 3 of > > these using INTR_MPSAFE. The ones in sio are not in the 3. The 3 > > are all just for multiplexors that push down deciding whether to use > > Giant to lower layers: > > Actually, it's a little more complex than that: most of the callers if > swi_add() with INTR_MPSAFE are actually via bus_setup_intr() which accepts > similar flags. You'll find that a much larger number of interrupts are > capable of running mpsafe if you search for that. Also, unless Um, bus_setup_intr() is for hardware interrupts. It doesn't call swi_add(), since swi_add() is for software interrupts. Hardware interrupts were not being discussed here. You may be thinging of ithread_add_handler() which is a common core for swi_add() and bus_setup_intr(). BTW, there are about 34 broken drivers that use BUS_SETUP_INTR(device_get_parent(...), ...) instead of bus_setup_interrupt(). This just evades printing of the FAST/GIANT-LOCKED/MPSAFE boot message. BUS_SETUP_INTR() seems to be needed in only 10 files. BruceReceived on Mon May 03 2004 - 19:17:34 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:53 UTC