[openib-general] Re: spinlock wrong CPU on CPU#1, ib_addr
Sean Hefty
mshefty at ichips.intel.com
Thu Dec 1 10:28:00 PST 2005
Or Gerlitz wrote:
> BUG: spinlock wrong CPU on CPU#1, ib_addr/3866 lock: ffffffff88073428,
> .magic: dead4ead, .owner: ib_addr/3866, .owner_cpu: 0
>
> Call Trace:<ffffffff80258400>{_raw_spin_unlock+112}
> <ffffffff88065bcc>{:ib_iser:iser_adaptor_find_by_device+188}
Based on my efforts trying to decipher the code, it looks like the
adaptor_list_lock in iser_adaptor_find_device() was acquired while running on
CPU 0, but an attempt was made to release it on CPU 1. I think that the .owner
field above is simply referring to the fact that the thread was created by the
ib_addr module.
Maybe someone more familiar with the spinlock code can confirm this? Also, what
happens if an interrupt occurs on the processor while this spinlock is held? A
couple of things to try would be: changing from spin_lock to the
spin_lock_irqsave, or using a mutex.
I didn't notice where there were any errors in ib_addr, the CMA, or iSER. Maybe
this is an issue in the spinlock debugging code? How easily is this reproduced?
Does the system continue to operate after you see this?
- Sean
More information about the general
mailing list