[6761] in linux-scsi channel archive
SMP/FIXMEs?
daemon@ATHENA.MIT.EDU (Mark Veteikis)
Tue Jun 29 10:26:02 1999
From: Mark Veteikis <mark@iphase.com>
To: linux-scsi@vger.rutgers.edu
Date: Tue, 29 Jun 1999 09:21:55 -0500 (CDT)
Cc: mark@iphase.com (Mark Veteikis)
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 mark@iphase.com 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 majordomo@vger.rutgers.edu