spin_lock already locked error
Ken Steele
kls at pt.com
Thu Mar 15 19:54:39 UTC 2007
I'm seeing a spin_lock error running the latest Red Hat EL 4 (
2.6.9-42.0.10.EL ) on a uniprocessor AMD x86_64 machine. I have verified
that CONFIG_PREEMPT and CONFIG_SMP are not defined. I use a global
spin_lock ( spin_lock_irqsave / spin_lock_irqrestore ) in the ISR routine
and several other functions. While executing in one of the functions, the
ISR routine is called and we get an error that the spin_lock is already
locked ( shown below ):
*** MUTEX_ENTER ***
***TRY_ISR_ENTER **
Kernel panic - not syncing:
/work/ken/drivers/mps/drv/Linux/mps_linux.c:853:
spin_lock(/work/ken/drivers/mps/drv/Linux/mps_linux.c:ffffffffa0337240)
already locked by /work/ken/drivers/mps/drv/Linux/mps_ioctl.c/1034
Badness in panic at kernel/panic.c:117
I have read many places that on a uniprocessor machine with CONFIG_PREEMPT
not defined, that spin_lock_irqsave reduces to just disabling interrupts.
What I am seeing here is that not only is spin_lock_irqsave not disabling
interrupts ( we get in the ISR routine in the middle of executing another
function ) it also checks to see if the spin_lock is taken, which is not
right for the non-preemptive kernel. Any ideas as to what is going on?
This same code works fine in an SMP environment.
More information about the redhat-list
mailing list