Messages in this thread | | | Date | Wed, 7 May 2008 10:04:39 -0700 (PDT) | From | Christoph Lameter <> | Subject | Re: Spinlocks waiting with interrupts disabled / preempt disabled. |
| |
On Wed, 7 May 2008, Ingo Molnar wrote:
> > + return flags; > > + local_irq_restore(flags); > > + while (!write_can_lock(lock)) > > + cpu_relax(); > > + goto retry; > > } > > EXPORT_SYMBOL(_write_lock_irqsave); > > hm, this is done on a too high level and will turn off some debugging > code. I.e. if we dont just loop long but truly deadlock here we wont > call lib/spinlock_debug.c's _raw_write_lock() code that does some sanity > checks in the debug case.
Right. I guessed that given the gazillion helper functions and wanted to know how to address this in the right way.
> so how about doing this on a deeper level and adding a new > __raw_write_lock_flags() primitive that would look at the flags value > and could enable interrupts in the lowlevel code?
Ok will look at that. Note that this is not unique to _write_lock_irqsave but all other locks that disable interrupts seem to have the same issue.
We are likely going to duplicate a lot of functions.
| |