2007-11-21 20:04:57

by Marin Mitov

[permalink] [raw]
Subject: Re: some thoughts about TSC based delay_tsc()

On Wednesday 21 November 2007 09:27:54 pm you wrote:
> * Marin Mitov <[email protected]> wrote:
> > Hi Ingo,
> >
> > The patch is quite good ;-) but we forget when it is needed :-( In
> > fact we need it only for PREEMPT SMP kernels - it could hurt PREEMPT
> > UP kernels (no migration possible), so no need for
> > preempt_disable()/preempt_enable().
> >
> > In short the old version of delay_tsc() is good for UP kernels and NON
> > PREEMPT SMP kernels too.
>
> please reply to the public list, so that discussions do not get lost.
>
> i dont think there's any problem: udelay() is about _wasting_ cycles -
> it's what drivers use for short delays.

Sure for the thread executing udelay(), but not for the other ready threads
which should also wait till preempt_enable() to grab the same cpu even
for PREEMPT (UP or SMP) kernels (or I misunderstand something?).

Marin
>
> Ingo



2007-11-21 20:10:18

by Ingo Molnar

[permalink] [raw]
Subject: Re: some thoughts about TSC based delay_tsc()


* Marin Mitov <[email protected]> wrote:

> On Wednesday 21 November 2007 09:27:54 pm you wrote:
> > * Marin Mitov <[email protected]> wrote:
> > > Hi Ingo,
> > >
> > > The patch is quite good ;-) but we forget when it is needed :-( In
> > > fact we need it only for PREEMPT SMP kernels - it could hurt
> > > PREEMPT UP kernels (no migration possible), so no need for
> > > preempt_disable()/preempt_enable().
> > >
> > > In short the old version of delay_tsc() is good for UP kernels and
> > > NON PREEMPT SMP kernels too.
> >
> > please reply to the public list, so that discussions do not get lost.
> >
> > i dont think there's any problem: udelay() is about _wasting_ cycles -
> > it's what drivers use for short delays.
>
> Sure for the thread executing udelay(), but not for the other ready
> threads which should also wait till preempt_enable() to grab the same
> cpu even for PREEMPT (UP or SMP) kernels (or I misunderstand
> something?).

on non-PREEMPT kernels there's no real difference between old and and
new code because the kernel is not preemptible. So we can use the new
code unconditionally.

Ingo