Re: [patch] voluntary-preempt-2.6.8.1-P1

Ingo Molnar
2004-08-16T04:43:48Z

* Lee Revell <rlrevell@joe-job.com> wrote:

> > > Anyway, the change to sched.c fixes the mlockall bug, it works
> > > perfectly now. Thanks!
> >
> > great! This fix also means that we've got one more lock-break in the
> > ext3 journalling code and one more lock-break in dcache.c. I've released
> > -P1 with the fix included:
> >
> > http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.8.1-P1
> >
>
> The highest latency I am seeing now is the rhine_check_duplex problem.
> Should I try making mdio_delay an NOOP?

there's no mdio_delay() in via-rhine.c AFAICS. Could you add a pair of
touch-latency calls to around this code in mdio_read():

+ touch_preempt_timing();
/* Wait for a previous command to complete. */
while ((readb(ioaddr + MIICmd) & 0x60) && --boguscnt > 0)
+ touch_preempt_timing();

i suspect it's this one that introduces the biggest delay. Also:

+ touch_preempt_timing();
while ((readb(ioaddr + MIICmd) & 0x40) && --boguscnt > 0)
;
+ touch_preempt_timing();

assuming that the latencies still show up even if delimited like this.
(note that this only changes the way the latency is tracked - the
latency itself is still there so this isnt a fix.)

Ingo