aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-11-05 10:45:07 +0000
committerKeir Fraser <keir@xensource.com>2007-11-05 10:45:07 +0000
commitf7b2b7e319929ec152d726259351072d4adf4f3a (patch)
tree7575c309a7882d888fb9d78a466f2584e35212e6
parent0332609b7f86c80320fcc991df04243be4f41e1f (diff)
downloadxen-f7b2b7e319929ec152d726259351072d4adf4f3a.tar.gz
xen-f7b2b7e319929ec152d726259351072d4adf4f3a.tar.bz2
xen-f7b2b7e319929ec152d726259351072d4adf4f3a.zip
cpufreq, amd: Xen support for architectural AMD pstate driver
With the third generation Opteron parts, AMD switched to an architecturally defined interface for PowerNow! that uses different MSRs than previous versions. Add support in msr-index.h and traps.c for the new interface. Signed-off-by: Mark Langsdorf <mark.langsdorf@amd.com>
-rw-r--r--xen/arch/x86/traps.c22
-rw-r--r--xen/include/asm-x86/msr-index.h11
2 files changed, 33 insertions, 0 deletions
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 3ff5b3dc4c..32ab678a91 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1845,6 +1845,17 @@ static int emulate_privileged_op(struct cpu_user_regs *regs)
#endif
case MSR_K7_FID_VID_STATUS:
case MSR_K7_FID_VID_CTL:
+ case MSR_K8_PSTATE_LIMIT:
+ case MSR_K8_PSTATE_CTRL:
+ case MSR_K8_PSTATE_STATUS:
+ case MSR_K8_PSTATE0:
+ case MSR_K8_PSTATE1:
+ case MSR_K8_PSTATE2:
+ case MSR_K8_PSTATE3:
+ case MSR_K8_PSTATE4:
+ case MSR_K8_PSTATE5:
+ case MSR_K8_PSTATE6:
+ case MSR_K8_PSTATE7:
if ( (cpufreq_controller != FREQCTL_dom0_kernel) ||
(boot_cpu_data.x86_vendor != X86_VENDOR_AMD) ||
wrmsr_safe(regs->ecx, eax, edx) )
@@ -1897,6 +1908,17 @@ static int emulate_privileged_op(struct cpu_user_regs *regs)
#endif
case MSR_K7_FID_VID_CTL:
case MSR_K7_FID_VID_STATUS:
+ case MSR_K8_PSTATE_LIMIT:
+ case MSR_K8_PSTATE_CTRL:
+ case MSR_K8_PSTATE_STATUS:
+ case MSR_K8_PSTATE0:
+ case MSR_K8_PSTATE1:
+ case MSR_K8_PSTATE2:
+ case MSR_K8_PSTATE3:
+ case MSR_K8_PSTATE4:
+ case MSR_K8_PSTATE5:
+ case MSR_K8_PSTATE6:
+ case MSR_K8_PSTATE7:
if ( (cpufreq_controller != FREQCTL_dom0_kernel) ||
(boot_cpu_data.x86_vendor != X86_VENDOR_AMD) ||
rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index e6cfa18928..9b1753755d 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -165,6 +165,17 @@
#define MSR_K8_HWCR 0xc0010015
#define MSR_K7_FID_VID_CTL 0xc0010041
#define MSR_K7_FID_VID_STATUS 0xc0010042
+#define MSR_K8_PSTATE_LIMIT 0xc0010061
+#define MSR_K8_PSTATE_CTRL 0xc0010062
+#define MSR_K8_PSTATE_STATUS 0xc0010063
+#define MSR_K8_PSTATE0 0xc0010064
+#define MSR_K8_PSTATE1 0xc0010065
+#define MSR_K8_PSTATE2 0xc0010066
+#define MSR_K8_PSTATE3 0xc0010067
+#define MSR_K8_PSTATE4 0xc0010068
+#define MSR_K8_PSTATE5 0xc0010069
+#define MSR_K8_PSTATE6 0xc001006A
+#define MSR_K8_PSTATE7 0xc001006B
#define MSR_K8_ENABLE_C1E 0xc0010055
#define MSR_K8_VM_CR 0xc0010114
#define MSR_K8_VM_HSAVE_PA 0xc0010117