RE: Need for a new spinlock API?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: kernelnewbies-bounce@xxxxxxxxxxxx 
> [mailto:kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of Rajat Jain
> Sent: Thursday, March 22, 2007 6:43 AM
> To: Arjan van de Ven
> Cc: anubhav rakshit; kernel mail; newbie
> Subject: Re: Need for a new spinlock API?
> 
> Hi Arjan,
> 
> > > > > We often have a case where a driver wants to access its data 
> > > > > structure in process context as well as in interrupt 
> context (in 
> > > > > its ISR). In such scenarios, we generally use 
> > > > > spin_lock_irqsave() to grab the lock as well as 
> disable all the 
> > > > > local interrupts. AFAIK, disabling of local interrupts is 
> > > > > required so as to avoid running your ISR (which needs 
> the lock) 
> > > > > while process context is holding the lock. However, this also 
> > > > > disables any other ISRs (which DO NOT need the lock) 
> on the local processor.
> > > > >
> > > > > Isn't this sub-optimal? Shouldn't there be a finer 
> grained locking?
> > > >
> > > > actually it's optimal.
> > > how is it optimal,when all  you require is to disable 
> just one particular IRQ?
> >
> > because if you don't disable all you increase hold times, which 
> > increases contention. Contention is BAD.
> 
> Do you mean the lock hold time here? How is lock hold time 
> affected by whether we disable just one or all the irqs?

The lock hold time may increase if you are in one ISR holding a lock and
some other interrupt occurs. Processor will now call ISR linked to that
interrupt (nested interrupts) assuming that priority of newly arrived
interrupt is more.

> 
> Secondly, is it possible AT ALL to disable a particular irq 
> at the local CPU?

It depends on the interrupt controller implementation in h/w. In most
cases it should be possible. Most of them are quite programmable where
you can mask out, disable, enable any interrupt line, set the priority
of the interrupt line. 

Ajay.

> 
> Thanks,
> 
> Rajat
> 
> --
> To unsubscribe from this list: send an email with 
> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please 
> read the FAQ at http://kernelnewbies.org/FAQ
> 

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux