Subject: port-i386/26342: Enhanced SpeedStep support for Dothan processors
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <dovich@tiac.net>
List: netbsd-bugs
Date: 07/16/2004 01:27:14
>Number:         26342
>Category:       port-i386
>Synopsis:       Enhanced SpeedStep support for Dothan processors
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    port-i386-maintainer
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 16 05:29:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Steven J. Dovich
>Release:        NetBSD 2.0G
>Organization:
Steven J. Dovich <dovich@tiac.net>
>Environment:
System: NetBSD lethe 2.0G NetBSD 2.0G (LETHE) #21: Fri Jul 16 01:08:33 EDT 2004 dovich@lethe:/home/netbsd/obj/sys/arch/i386/compile/LETHE i386
Architecture: i386
Machine: i386
>Description:
	The frequency/millivolt data for the Dothan processors is
	missing.  The initialization is unable to recognize the
	processor.
>How-To-Repeat:
	Boot an ENHANCED_SPEEDSTEP enabled kernel on one of the newer Pentium M
	processors.
>Fix:
	Apply the following patch to .../sys/arch/i386/i386/est.c (another
	pair of eyes reviewing the frequency/millivolt data would be
	appropriate).  Tested on Pentium M 755 (2.00 GHz).

*** est.c	Thu Jul 15 10:33:54 2004
--- est.c.sjd	Thu Jul 15 10:34:52 2004
***************
*** 184,189 ****
--- 184,244 ----
  	{  600,  956 }
  };
  
+ /* Intel Pentium M processor 715 1.5 GHz */
+ static const struct fq_info pentium_m_n715[] = {
+ 	{ 1500, 1340 },
+ 	{ 1200, 1228 },
+ 	{ 1000, 1148 },
+ 	{  800, 1068 },
+ 	{  600,  988 }
+ };
+ 
+ 
+ /* Intel Pentium M processor 725 1.6 GHz */
+ static const struct fq_info pentium_m_n725[] = {
+ 	{ 1600, 1340 },
+ 	{ 1400, 1276 },
+ 	{ 1200, 1212 },
+ 	{ 1000, 1132 },
+ 	{  800, 1068 },
+ 	{  600,  988 }
+ };
+ 
+ 
+ /* Intel Pentium M processor 735 1.7 GHz */
+ static const struct fq_info pentium_m_n735[] = {
+ 	{ 1700, 1340 },
+ 	{ 1400, 1244 },
+ 	{ 1200, 1180 },
+ 	{ 1000, 1116 },
+ 	{  800, 1052 },
+ 	{  600,  988 }
+ };
+ 
+ 
+ /* Intel Pentium M processor 745 1.8 GHz */
+ static const struct fq_info pentium_m_n745[] = {
+ 	{ 1800, 1340 },
+ 	{ 1600, 1292 },
+ 	{ 1400, 1228 },
+ 	{ 1200, 1164 },
+ 	{ 1000, 1116 },
+ 	{  800, 1052 },
+ 	{  600,  988 }
+ };
+ 
+ /* Intel Pentium M processor 755 2.0 GHz */
+ static const struct fq_info pentium_m_n755[] = {
+ 	{ 2000, 1340 },
+ 	{ 1800, 1292 },
+ 	{ 1600, 1244 },
+ 	{ 1400, 1196 },
+ 	{ 1200, 1148 },
+ 	{ 1000, 1100 },
+ 	{  800, 1052 },
+ 	{  600,  988 }
+ };
+ 
  
  struct fqlist {
  	const char *brand_tag;
***************
*** 205,210 ****
--- 260,275 ----
  #undef ENTRY
  };
  
+ static const struct fqlist pentium_m_dothan[] = {
+ #define ENTRY(s, v)	{ s, sizeof(v) / sizeof((v)[0]), v }
+ 	ENTRY("1.50", pentium_m_n715),
+ 	ENTRY("1.60", pentium_m_n725),
+ 	ENTRY("1.70", pentium_m_n735),
+ 	ENTRY("1.80", pentium_m_n745),
+ 	ENTRY("2.00", pentium_m_n755),
+ #undef ENTRY
+ };
+ 
  
  struct est_cpu {
  	const char *brand_prefix;
***************
*** 219,224 ****
--- 284,294 ----
  		(sizeof(pentium_m) / sizeof(pentium_m[0])),
  		pentium_m
  	},
+ 	{
+ 		"Intel(R) Pentium(R) M processor ", "GHz",
+ 		(sizeof(pentium_m_dothan) / sizeof(pentium_m_dothan[0])),
+ 		pentium_m_dothan
+ 	},
  };
  
  #define NESTCPUS  (sizeof(est_cpus) / sizeof(est_cpus[0]))
>Release-Note:
>Audit-Trail:
>Unformatted: