Re: [PATCH] local_irq_disable removal

From: Esben Nielsen
Date: Sun Jun 12 2005 - 06:16:48 EST


On Sun, 12 Jun 2005, Ingo Molnar wrote:

>
> * Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>
> > On Sat, 2005-06-11 at 13:51 -0700, Daniel Walker wrote:
> > > On Sat, 11 Jun 2005, Ingo Molnar wrote:
> >
> > > Interesting .. So "cli" takes 7 cycles , "sti" takes 7 cycles. The current
> > > method does "lea" which takes 1 cycle, and "or" which takes 1 cycle. I'm
> > > not sure if there is any function call overhead .. So the soft replacment
> > > of cli/sti is 70% faster on a per instruction level .. So it's at least
> > > not any slower .. Does everyone agree on that?
> >
> > No, because x86 is not the whole universe
>
> x86 is actually a 'worst-case', because it has one of the cheapest CPU
> level cli/sti implementations. Usually it's the hard-local_irq_disable()
> overhead on non-x86 platforms that is a problem. (ARM iirc) So in this
> sense the soft-flag should be a win on most sane architectures.
>
> Ingo

I am surprised that is should actually be faster, but I give in to the
experts. I will see if I can find time to perform a test or I should spend
it on something else.

That said, this long discussion have not been a complete waste of time: I
think this thread have learned us that we do have different goals and
clarifies stuff.

I am not happy about the soft-irq thing. Mostly due to naming.
local_irq_disable() is really just preempt_disable() with some extra stuff
to make it backward combatible.
I still believe local_irq_disable() (also in the soft version) should be
completely forbidden when PREEMPT_RT is set. All places using it should be
replaced with a mutex or a ???_local_irq_disable() to mark that the code
have been reviewed for PREEMPT_RT. With your argument above
???_local_irq_disable() should really be preempt_disable() as that is
faster.

Esben

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/