Add Pentium 4 Thermal Control Circuit support.
authorJeroen Ruigrok/asmodai <asmodai@dragonflybsd.org>
Tue, 27 Jul 2004 08:09:56 +0000 (08:09 +0000)
committerJeroen Ruigrok/asmodai <asmodai@dragonflybsd.org>
Tue, 27 Jul 2004 08:09:56 +0000 (08:09 +0000)
Enable by putting 'options CPU_ENABLE_TCC' in your kernel config.

Taken from: FreeBSD (which took it from OpenBSD)
Submitted by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
OK'd by: dillon

sys/conf/files.i386
sys/conf/options.i386
sys/config/LINT
sys/cpu/i386/include/specialreg.h
sys/i386/conf/LINT
sys/i386/include/specialreg.h

index c5f5529..2126fe3 100644 (file)
@@ -2,7 +2,7 @@
 # files marked standard are always included.
 #
 # $FreeBSD: src/sys/conf/files.i386,v 1.307.2.38 2003/01/02 20:41:33 kan Exp $
-# $DragonFly: src/sys/conf/Attic/files.i386,v 1.25 2004/07/05 00:07:32 dillon Exp $
+# $DragonFly: src/sys/conf/Attic/files.i386,v 1.26 2004/07/27 08:09:55 asmodai Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -213,6 +213,7 @@ i386/i386/mpapic.c          optional        smp
 i386/i386/mpboot.s             optional        smp
 i386/i386/mplock.s             optional        smp
 i386/i386/nexus.c              standard
+i386/i386/p4tcc.c              optional        cpu_enable_tcc
 i386/i386/perfmon.c            optional        perfmon
 i386/i386/perfmon.c            optional        perfmon profiling-routine
 i386/i386/pmap.c               standard
index 9bba017..9ba8714 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/conf/options.i386,v 1.132.2.18 2003/03/14 21:22:35 jhb Exp $
-# $DragonFly: src/sys/conf/Attic/options.i386,v 1.6 2004/04/29 12:11:15 joerg Exp $
+# $DragonFly: src/sys/conf/Attic/options.i386,v 1.7 2004/07/27 08:09:55 asmodai Exp $
 
 DISABLE_PSE
 IDE_DELAY
@@ -50,6 +50,7 @@ CPU_CYRIX_NO_LOCK             opt_cpu.h
 CPU_DIRECT_MAPPED_CACHE                opt_cpu.h
 CPU_DISABLE_5X86_LSSER         opt_cpu.h
 CPU_ELAN                       opt_cpu.h
+CPU_ENABLE_TCC                 opt_cpu.h
 CPU_FASTER_5X86_FPU            opt_cpu.h
 CPU_I486_ON_386                        opt_cpu.h
 CPU_IORT                       opt_cpu.h
index 137cfbd..9586c23 100644 (file)
@@ -3,7 +3,7 @@
 #      as much of the source tree as it can.
 #
 # $FreeBSD: src/sys/i386/conf/LINT,v 1.749.2.144 2003/06/04 17:56:59 sam Exp $
-# $DragonFly: src/sys/config/LINT,v 1.33 2004/07/26 16:30:16 joerg Exp $
+# $DragonFly: src/sys/config/LINT,v 1.34 2004/07/27 08:09:55 asmodai Exp $
 #
 # NB: You probably don't want to try running a kernel built from this
 # file.  Instead, you should start from GENERIC, and add options from
@@ -172,6 +172,12 @@ cpu                I686_CPU                # aka Pentium Pro(tm)
 #
 # CPU_DISABLE_SSE disables SSE/MMX2 instructions support.
 #
+# CPU_ENABLE_TCC enables Thermal Control Circuitry (TCC) found in some
+# Pentium(tm) 4 and (possibly) later CPUs.  When enabled and detected,
+# TCC supports restricting power consumption using the hw.p4tcc.*
+# sysctls.  This operates independently of SpeedStep and is useful on
+# systems where other mechanisms such as apm(4) or acpi(4) don't work.
+#
 # CPU_FASTER_5X86_FPU enables faster FPU exception handler.
 #
 # CPU_I486_ON_386 enables CPU cache on i486 based CPU upgrade products
@@ -237,6 +243,7 @@ options     CPU_BTB_EN
 options        CPU_DIRECT_MAPPED_CACHE
 options        CPU_DISABLE_5X86_LSSER
 options        CPU_ELAN
+options                CPU_ENABLE_TCC
 options        CPU_DISABLE_SSE
 options        CPU_FASTER_5X86_FPU
 options        CPU_I486_ON_386
index 7528694..879436a 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     from: @(#)specialreg.h  7.1 (Berkeley) 5/9/91
  * $FreeBSD: src/sys/i386/include/specialreg.h,v 1.19.2.3 2003/01/22 17:24:28 jhb Exp $
- * $DragonFly: src/sys/cpu/i386/include/specialreg.h,v 1.2 2003/06/17 04:28:36 dillon Exp $
+ * $DragonFly: src/sys/cpu/i386/include/specialreg.h,v 1.3 2004/07/27 08:09:56 asmodai Exp $
  */
 
 #ifndef _MACHINE_SPECIALREG_H_
 #define MSR_MC3_STATUS         0x411
 #define MSR_MC3_ADDR           0x412
 #define MSR_MC3_MISC           0x413
+#define MSR_THERM_CONTROL      0x19a
+#define MSR_THERM_INTERRUPT    0x19b
+#define MSR_THERM_STATUS       0x19c
+
 
 /*
  * Constants related to MTRRs
index b43583e..8bbc615 100644 (file)
@@ -3,7 +3,7 @@
 #      as much of the source tree as it can.
 #
 # $FreeBSD: src/sys/i386/conf/LINT,v 1.749.2.144 2003/06/04 17:56:59 sam Exp $
-# $DragonFly: src/sys/i386/conf/Attic/LINT,v 1.33 2004/07/26 16:30:16 joerg Exp $
+# $DragonFly: src/sys/i386/conf/Attic/LINT,v 1.34 2004/07/27 08:09:55 asmodai Exp $
 #
 # NB: You probably don't want to try running a kernel built from this
 # file.  Instead, you should start from GENERIC, and add options from
@@ -172,6 +172,12 @@ cpu                I686_CPU                # aka Pentium Pro(tm)
 #
 # CPU_DISABLE_SSE disables SSE/MMX2 instructions support.
 #
+# CPU_ENABLE_TCC enables Thermal Control Circuitry (TCC) found in some
+# Pentium(tm) 4 and (possibly) later CPUs.  When enabled and detected,
+# TCC supports restricting power consumption using the hw.p4tcc.*
+# sysctls.  This operates independently of SpeedStep and is useful on
+# systems where other mechanisms such as apm(4) or acpi(4) don't work.
+#
 # CPU_FASTER_5X86_FPU enables faster FPU exception handler.
 #
 # CPU_I486_ON_386 enables CPU cache on i486 based CPU upgrade products
@@ -237,6 +243,7 @@ options     CPU_BTB_EN
 options        CPU_DIRECT_MAPPED_CACHE
 options        CPU_DISABLE_5X86_LSSER
 options        CPU_ELAN
+options                CPU_ENABLE_TCC
 options        CPU_DISABLE_SSE
 options        CPU_FASTER_5X86_FPU
 options        CPU_I486_ON_386
index dc492d6..00666ea 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     from: @(#)specialreg.h  7.1 (Berkeley) 5/9/91
  * $FreeBSD: src/sys/i386/include/specialreg.h,v 1.19.2.3 2003/01/22 17:24:28 jhb Exp $
- * $DragonFly: src/sys/i386/include/Attic/specialreg.h,v 1.2 2003/06/17 04:28:36 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/specialreg.h,v 1.3 2004/07/27 08:09:56 asmodai Exp $
  */
 
 #ifndef _MACHINE_SPECIALREG_H_
 #define MSR_MC3_STATUS         0x411
 #define MSR_MC3_ADDR           0x412
 #define MSR_MC3_MISC           0x413
+#define MSR_THERM_CONTROL      0x19a
+#define MSR_THERM_INTERRUPT    0x19b
+#define MSR_THERM_STATUS       0x19c
+
 
 /*
  * Constants related to MTRRs