svn commit: r187565 - in stable/7/sys: . amd64/amd64 amd64/include
contrib/pf dev/ath/ath_hal dev/cxgb i386/i386 i386/include
Jung-uk Kim
jkim at FreeBSD.org
Wed Jan 21 12:16:14 PST 2009
Author: jkim
Date: Wed Jan 21 20:16:11 2009
New Revision: 187565
URL: http://svn.freebsd.org/changeset/base/187565
Log:
MFC: Detect Advanced Power Management Information for AMD CPUs.
Modified:
stable/7/sys/ (props changed)
stable/7/sys/amd64/amd64/identcpu.c
stable/7/sys/amd64/amd64/initcpu.c
stable/7/sys/amd64/include/md_var.h
stable/7/sys/amd64/include/specialreg.h
stable/7/sys/contrib/pf/ (props changed)
stable/7/sys/dev/ath/ath_hal/ (props changed)
stable/7/sys/dev/cxgb/ (props changed)
stable/7/sys/i386/i386/identcpu.c
stable/7/sys/i386/i386/initcpu.c
stable/7/sys/i386/include/md_var.h
stable/7/sys/i386/include/specialreg.h
Modified: stable/7/sys/amd64/amd64/identcpu.c
==============================================================================
--- stable/7/sys/amd64/amd64/identcpu.c Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/amd64/amd64/identcpu.c Wed Jan 21 20:16:11 2009 (r187565)
@@ -447,6 +447,10 @@ identify_cpu(void)
amd_feature = regs[3] & ~(cpu_feature & 0x0183f3ff);
amd_feature2 = regs[2];
}
+ if (cpu_exthigh >= 0x80000007) {
+ do_cpuid(0x80000007, regs);
+ amd_pminfo = regs[3];
+ }
if (cpu_exthigh >= 0x80000008) {
do_cpuid(0x80000008, regs);
cpu_procinfo2 = regs[2];
Modified: stable/7/sys/amd64/amd64/initcpu.c
==============================================================================
--- stable/7/sys/amd64/amd64/initcpu.c Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/amd64/amd64/initcpu.c Wed Jan 21 20:16:11 2009 (r187565)
@@ -53,6 +53,7 @@ u_int cpu_feature; /* Feature flags */
u_int cpu_feature2; /* Feature flags */
u_int amd_feature; /* AMD feature flags */
u_int amd_feature2; /* AMD feature flags */
+u_int amd_pminfo; /* AMD advanced power management info */
u_int cpu_high; /* Highest arg to CPUID */
u_int cpu_exthigh; /* Highest arg to extended CPUID */
u_int cpu_id; /* Stepping ID */
Modified: stable/7/sys/amd64/include/md_var.h
==============================================================================
--- stable/7/sys/amd64/include/md_var.h Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/amd64/include/md_var.h Wed Jan 21 20:16:11 2009 (r187565)
@@ -44,6 +44,7 @@ extern u_int cpu_feature;
extern u_int cpu_feature2;
extern u_int amd_feature;
extern u_int amd_feature2;
+extern u_int amd_pminfo;
extern u_int cpu_fxsr;
extern u_int cpu_high;
extern u_int cpu_id;
Modified: stable/7/sys/amd64/include/specialreg.h
==============================================================================
--- stable/7/sys/amd64/include/specialreg.h Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/amd64/include/specialreg.h Wed Jan 21 20:16:11 2009 (r187565)
@@ -156,6 +156,19 @@
#define CPUID_LOCAL_APIC_ID 0xff000000
/*
+ * AMD extended function 8000_0007h edx info
+ */
+#define AMDPM_TS 0x00000001
+#define AMDPM_FID 0x00000002
+#define AMDPM_VID 0x00000004
+#define AMDPM_TTP 0x00000008
+#define AMDPM_TM 0x00000010
+#define AMDPM_STC 0x00000020
+#define AMDPM_100MHZ_STEPS 0x00000040
+#define AMDPM_HW_PSTATE 0x00000080
+#define AMDPM_TSC_INVARIANT 0x00000100
+
+/*
* AMD extended function 8000_0008h ecx info
*/
#define AMDID_CMP_CORES 0x000000ff
Modified: stable/7/sys/i386/i386/identcpu.c
==============================================================================
--- stable/7/sys/i386/i386/identcpu.c Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/i386/i386/identcpu.c Wed Jan 21 20:16:11 2009 (r187565)
@@ -1088,6 +1088,10 @@ finishidentcpu(void)
amd_feature = regs[3] & ~(cpu_feature & 0x0183f3ff);
amd_feature2 = regs[2];
}
+ if (cpu_exthigh >= 0x80000007) {
+ do_cpuid(0x80000007, regs);
+ amd_pminfo = regs[3];
+ }
if (cpu_exthigh >= 0x80000008) {
do_cpuid(0x80000008, regs);
cpu_procinfo2 = regs[2];
Modified: stable/7/sys/i386/i386/initcpu.c
==============================================================================
--- stable/7/sys/i386/i386/initcpu.c Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/i386/i386/initcpu.c Wed Jan 21 20:16:11 2009 (r187565)
@@ -82,6 +82,7 @@ u_int cpu_feature = 0; /* Feature flags
u_int cpu_feature2 = 0; /* Feature flags */
u_int amd_feature = 0; /* AMD feature flags */
u_int amd_feature2 = 0; /* AMD feature flags */
+u_int amd_pminfo = 0; /* AMD advanced power management info */
u_int via_feature_rng = 0; /* VIA RNG features */
u_int via_feature_xcrypt = 0; /* VIA ACE features */
u_int cpu_high = 0; /* Highest arg to CPUID */
Modified: stable/7/sys/i386/include/md_var.h
==============================================================================
--- stable/7/sys/i386/include/md_var.h Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/i386/include/md_var.h Wed Jan 21 20:16:11 2009 (r187565)
@@ -49,6 +49,7 @@ extern u_int cpu_feature;
extern u_int cpu_feature2;
extern u_int amd_feature;
extern u_int amd_feature2;
+extern u_int amd_pminfo;
extern u_int via_feature_rng;
extern u_int via_feature_xcrypt;
extern u_int cpu_fxsr;
Modified: stable/7/sys/i386/include/specialreg.h
==============================================================================
--- stable/7/sys/i386/include/specialreg.h Wed Jan 21 20:08:17 2009 (r187564)
+++ stable/7/sys/i386/include/specialreg.h Wed Jan 21 20:16:11 2009 (r187565)
@@ -158,6 +158,19 @@
#define CPUID_LOCAL_APIC_ID 0xff000000
/*
+ * AMD extended function 8000_0007h edx info
+ */
+#define AMDPM_TS 0x00000001
+#define AMDPM_FID 0x00000002
+#define AMDPM_VID 0x00000004
+#define AMDPM_TTP 0x00000008
+#define AMDPM_TM 0x00000010
+#define AMDPM_STC 0x00000020
+#define AMDPM_100MHZ_STEPS 0x00000040
+#define AMDPM_HW_PSTATE 0x00000080
+#define AMDPM_TSC_INVARIANT 0x00000100
+
+/*
* AMD extended function 8000_0008h ecx info
*/
#define AMDID_CMP_CORES 0x000000ff
More information about the svn-src-stable-7
mailing list