On SMP boxes I am seeing panics in the following code fragment,
from scsi.c in the function scsi_do_cmd.
The SCSI_SLEEP macro has a in_interrupt() detection call which hits.
while (SCSI_BLOCK((Scsi_Device *) NULL, host)) {
spin_unlock(&io_request_lock); /* FIXME!!! */
SCSI_SLEEP(&host->host_wait, SCSI_BLOCK((Scsi_Device *) NULL, host));
spin_lock_irq(&io_request_lock); /* FIXME!!! */
}
This comment is above that code...
/*
* We must prevent reentrancy to the lowlevel host driver. This prevents
* it - we enter a loop until the host we want to talk to is not busy.
* Race conditions are prevented, as interrupts are disabled in between the
* time we check for the host being not busy, and the time we mark it busy
* ourselves.
*/
What I'd like to know is why the FIXME statements were put in this
code and why are the spin_unlock/spin_lock_irq calls not symetrical in
their use.
--
Mark Veteikis [EMAIL PROTECTED] 1-214-654-5257
Interphase Corp. 13800 Senlac Dallas Tx. 75234
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]