Date: Tue, 27 Aug 2002 19:46:29 +1000 From: Simon Lai <simon@synatech.com.au> To: freebsd-hackers@freebsd.org Subject: implementing Via LongHaul technology Message-ID: <20020827194629.A6743@pobox.com.>
next in thread | raw e-mail | index | archive | help
Hi,
Via uses a technology called LongHaul in its low power CPUs,
to save power and reduce operating temperatures. Its activated
through MSRs, but has some particular timing requirements. An
example code fragment from the programmers manual for this technology
is
mov [_temp],eax ;copy RevisionID[3:0]
and [_temp],0fh ;mask RevisionID[3:0]
shl [_temp],4 ;save revkey
and eax,0fe0fff0fh ; reset longhaul[24:20] to 0
or eax,ebx
or eax, 00000200h ; set EnableSoftVID [9]
or eax,[_temp] ;set revkey
wrmsr
hlt
hlt
From the section accompanying this code -
"Once the enable SoftVID bit [9] is set, the processor's VID pins
will drive the value in [24:20] on the next AUTOHALT/StopGrant
transition. The duration should be >=1ms to ensure the CPU's
internal PLL is resynchronized. For AUTOHALT, this means interrupts
must be disabled except for the timer tick, which should be reset
to >= 1ms. Care must be taken to avoid other system events that
could interfere with this operation. A few examples are snooping,
NMI, INIT, SMI, FLUSH."
Can someone point to code that already does a similar thing,
timing wise and disabling interrupts. Initially I would be happy
just to force the processor into a particular mode on boot, for
testing purposes, but would like to eventually implement a
dynamic tuning algorithm related to idle time.
Simon
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020827194629.A6743>
