Semaphore lock up in SMP environment

From: Venkatesh Ramamurthy (Venkateshr@ami.com)
Date: Mon Mar 27 2000 - 11:05:01 EST


I am having a problem of disabled interrupts when i use down() in SMP
environment. I found out the following document in gcom.com web site
regarding the semaphore analysis by David Grothe.

This is what i found ....
 
"The semaphore algorithm was changed so that it buzzes a lock in the
 SMP case of down() and always disables interrupts ".

now my exact problem ....

 I am using semaphore in our SCSI/RAID driver (which is part of standard
linux
 kernel) which uses down/up semaphore primitives.

 I call up() in our ISR to release the semaphore flag . Since down() in SMP
 disable interrupts , there is no way my ISR is fired which releases the
flag
 and so freezes the system.

 i have verified that ISR is not called .

 Is there any other way to enable interrupts in down(). I know that it may
 side-effects.

 The non-SMP version of the driver works fine . even the SMP kernel with one
processor freezes.

TIA
Venkatesh
American Megatrends Inc.,

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:20 EST