[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