cvs commit: src/sys/alpha/alpha machdep.c src/sys/alpha/include cpuconf.h src/sys/alpha/pci lca.c lcareg.h

John Baldwin jhb at FreeBSD.org
Tue Feb 1 10:13:36 PST 2005


On Tuesday 01 February 2005 10:28 am, Bernd Walter wrote:
> On Tue, Feb 01, 2005 at 06:49:33AM -0500, John Baldwin wrote:
> > On Monday 31 January 2005 06:07 pm, Bernd Walter wrote:
> > > ticso       2005-01-31 23:07:42 UTC
> > >
> > >   FreeBSD src repository
> > >
> > >   Modified files:
> > >     sys/alpha/alpha      machdep.c
> > >     sys/alpha/include    cpuconf.h
> > >     sys/alpha/pci        lca.c lcareg.h
> > >   Log:
> > >   add cpu_idle support for 21066A based lca systems
> > >
> > >   Revision  Changes    Path
> > >   1.229     +9 -1      src/sys/alpha/alpha/machdep.c
> > >   1.14      +1 -0      src/sys/alpha/include/cpuconf.h
> > >   1.21      +29 -0     src/sys/alpha/pci/lca.c
> > >   1.4       +2 -0      src/sys/alpha/pci/lcareg.h
> >
> > What exactly are the writes to this register doing btw?  Also, is there
> > any reason we shouldn't just be using the PAL call that waits for the
> > next interrupt instead?
>
> It reduces clock speed until the next interrupt on 21066A CPUs
> and is a nop on plain 21066 CPUs.

Hmm.

> Would the PAL call work for SMP systems?

Yes, though it says that the CPU counter can slow down while it is in the 
waiting state, so it seems that PAL is free to implement something just like 
what you did.

> AFAIK no alpha CPU has native halt support so there is not much magic
> that PAL can do for us.
> What I've found out about this case is that alpha CPUs automaticaly
> reduce power on unused parts and running just a tight loop, that works
> without memory access, for a few microsecsonds might be more efficient
> do do it ourself than calling PAL, which must be doing something
> similar.
> At least I think it is possible to reduce idle power consumption from
> the current situation either way.

Yes, right now we buzz loop with a memory access on each iteration, we could 
add a for loop that just decrements a counter to zero to the idle loop if 
desired.  With preemption turned on we could have the idle process not check 
the run queues at all and just sit in a buzz loop.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the cvs-src mailing list