> -----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 the line "unsubscribe linux-newbie" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs