Subject: Re: VIA C7 CPU and crypto capabilities SOLVED partially
To: Daniel de Kok <danieldk@pobox.com>
From: Heron Gallegos <gallegos@csxxi.net.mx>
List: current-users
Date: 06/28/2007 20:46:51
On Tue, 26 Jun 2007, Daniel de Kok wrote:

> Could you try the attached patch against sys/arch/i386/i386/identcpu.c?
Thanks, Daniel
Also I did some modification to identcpu.c

identcpu.c now can find the capabilities [Centaur Extended Feature Flags]
but now I have loose TM2 and SpeedStep.
------------------------------------------------------------
polaris# diff dmesg1 dmesg2
7c7
< NetBSD 4.99.20 (POLARIS) #23: Thu Jun 28 19:46:12 CDT 2007
---
> NetBSD 4.99.20 (POLARIS) #25: Thu Jun 28 21:38:38 CDT 2007
17c17
< cpu0: VIA C3 (686-class), 799.98 MHz, id 0x6a9
---
> cpu0: VIA C7 Esther (686-class), 799.99 MHz, id 0x6a9
27,31c27,29
< cpu0: using thermal monitor 2
< cpu0: Enhanced SpeedStep (1004 mV) 533 MHz
< cpu0: unknown Enhanced SpeedStep CPU.
< cpu0: using only highest, current and lowest power states.
< cpu0: Enhanced SpeedStep frequencies available (MHz): 667 533 533
---
> cpu0: enabling thermal monitor 1 ... failed!
> cpu0: failed to enable thermal monitoring!
> cpu0: Enhanced SpeedStep disabled by BIOS
175a174
> PadLock: registered support for AES_CBC
polaris#
------------------------------------------------------------------------------
polaris# diff /sys/arch/i386/i386/identcpu.c.orig /sys/arch/i386/i386/identcpu.c
483c483
<                               "C3 Nehemiah", 0, 0, 0, 0, 0, 0,
---
>                               "C3 Nehemiah", "C7 Esther", 0, 0, 0, 0, 0,
666c666,670
<               /* Nehemiah or Esther */
---
>               /*
>                * Nehemiah model 9 [RNG, ACE]
>                * Esther model 10 (0xa) [RNG, ACE, ACE2, PHE, PMM]
>                * 
http://www.via.com.tw/en/downloads/whitepapers/initiatives/padlock/programming_guide.pdf
>                */
669,670c673,674
<               if (lfunc == 0xc0000001) {
<                       CPUID(lfunc, descs[0], descs[1], descs[2], descs[3]);
---
>               if (lfunc >= 0xc0000001) {
>                       CPUID(0xc0000001, descs[0], descs[1], descs[2], 
descs[3]);
polaris#
-------------------------------------------------------
What can I do?

Ideas, tips and comments are welcome (I need it :)

Thanks in advance
Heron Gallegos
Saltillo Coahuila Mexico