Skip site navigation (1)Skip section navigation (2)
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>