Subject: port-i386/33080: EST regression with Pentium M 738
To: None <port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <j+nbsd@2006.salmi.ch>
List: netbsd-bugs
Date: 03/15/2006 00:20:00
>Number:         33080
>Category:       port-i386
>Synopsis:       EST regression with Pentium M 738
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-i386-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 15 00:20:00 +0000 2006
>Originator:     Jukka Salmi
>Release:        NetBSD 3.99.17
>Environment:
System: NetBSD blenny.salmi.ch 3.99.17 NetBSD 3.99.17 (ANOLE.APM) #3: Wed Mar 15 00:23:56 CET 2006  build@moray.salmi.ch:/build/nbsd/i386/sys/arch/i386/compile/ANOLE.APM i386
Architecture: i386
Machine: i386
CPU: Intel Pentium M (Dothan) 738
>Description:
EST is not correctly detected anymore with my M738 cpu; this regression
took place somewhere between revisions 1.15 and 1.22 of
src/sys/arch/i386/i386/est.c.

>How-To-Repeat:
Boot a recent GENERIC kernel on a M738 system:

cpu0 at mainbus0: (uniprocessor)     
cpu0: Intel Pentium M (Dothan) (686-class), 1395.54 MHz, id 0x6d6
cpu0: features afe9fbbf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,APIC,SEP,MTRR>
cpu0: features afe9fbbf<PGE,MCA,CMOV,PAT,CFLUSH,DS,ACPI,MMX>
cpu0: features afe9fbbf<FXSR,SSE,SSE2,SS,TM,SBF>
cpu0: features2 180<EST,TM2>
cpu0: "Intel(R) Pentium(R) M processor 1.40GHz"
cpu0: I-cache 32 KB 64B/line 8-way, D-cache 32 KB 64B/line 8-way
cpu0: L2 cache 2 MB 64B/line 8-way
cpu0: using thermal monitor 2        
cpu0: Enhanced SpeedStep (1116 mV) operating point not in table
cpu0: 64 page colors

This used to print:
[...]
cpu0: Enhanced SpeedStep running at 1400 MHz (1116 mV)
cpu0: Enhanced SpeedStep frequencies available (MHz): 1400 1300 1200 1100 1000 900 800 600 
[...]

>Fix:
The correct CPUID for the M738 seems to be 0x06d6 (instead of 0x06d8
as in est.c!). With the current code, the M738 gets detected as a M710
since they have the same `brand_tag', and the M710 has the M738's
`cpu_id'. I don't know the correct CPUID for the M710.