[lkml]   [2008]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: 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.

 \ /
  Last update: 2008-05-07 19:07    [W:0.074 / U:0.436 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site