[6761] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

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

home help back first fref pref prev next nref lref last post