WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH][Retry 1] 2/4: cpufreq/PowerNow! in Xen: MSR access

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH][Retry 1] 2/4: cpufreq/PowerNow! in Xen: MSR access
From: "Mark Langsdorf" <mark.langsdorf@xxxxxxx>
Date: 2007年8月30日 12:01:08 -0500
Delivery-date: 2007年8月30日 09:57:43 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: KMail/1.9.5
Enable cpufreq support in Xen for AMD Operton processors by:
1) Allowing the PowerNow! driver in dom0 to write to the PowerNow!
MSRs.
2) Adding the cpufreq notifier chain to time-xen.c in dom0.
On a frequency change, a platform hypercall is performed to
scale the frequency multiplier in the hypervisor.
3) Adding a platform hypercall to the hypervisor the scale
the frequency multiplier and reset the time stamps so that
next calibration remains reasonably correct.
4) Adding the cpufreq Xen option which pins the VCPUs to
the physical CPU cores.
Patch 1 covers the frequency scaling platform call in Xen.
Patch 2 allows MSR accesses from the PowerNow! driver.
Patch 3 covers the frequency scaling platform call in Linux.
Patch 4 covers the changes necessary to the PowerNow! driver
to make it correctly associate shared cores under Xen.
This code can be readily expanded to cover Intel or other
non-AMD processors by modifying xen/arch/x8/traps.c to
allow the appropriate MSR accesses.
Caveat: currently, this code does not support the in-kernel
ondemand cpufreq governor. Dom0 must run a userspace 
daemon to monitor the utilization of the physical cpus
with the getcpuinfo sysctl hypercall.
Caveat 2: Even though the clock multipliers are being
scaled and recorded correctly in both dom0 and the
hypervisor, time errors appear immediately after a
frequency change. They are not more likely when
the frequency is constant.
Signed-off-by: Mark Langsdorf <mark.langsdorf@xxxxxxx>
diff -r 256160ff19b7 xen/include/asm-x86/msr.h
--- a/xen/include/asm-x86/msr.h Thu Aug 16 13:27:59 2007 +0100
+++ b/xen/include/asm-x86/msr.h Thu Aug 30 12:08:29 2007 -0500
@@ -357,6 +357,9 @@ static inline void write_efer(__u64 val)
 #define MSR_K8_VM_CR 0xC0010114
 #define MSR_K8_VM_HSAVE_PA 0xC0010117
 
+#define MSR_K8_FIDVID_CTL 0xC0010041
+#define MSR_K8_FIDVID_STATUS 0xC0010042
+
 /* MSR_K8_VM_CR bits: */
 #define _K8_VMCR_SVME_DISABLE 4
 #define K8_VMCR_SVME_DISABLE (1 << _K8_VMCR_SVME_DISABLE)
diff -r 256160ff19b7 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c Thu Aug 16 13:27:59 2007 +0100
+++ b/xen/arch/x86/traps.c Thu Aug 30 12:08:29 2007 -0500
@@ -1724,6 +1724,15 @@ static int emulate_privileged_op(struct 
 v->arch.guest_context.gs_base_user = res;
 break;
 #endif
+ case MSR_K8_FIDVID_STATUS:
+ case MSR_K8_FIDVID_CTL:
+ if ( !opt_cpufreq )
+ goto fail;
+ if ( wrmsr_safe(regs->ecx, regs->eax, regs->edx) )
+ goto fail;
+ v->arch.guest_context.gs_base_user =
+ ((u64)regs->edx << 32) | regs->eax;
+ break;
 default:
 if ( wrmsr_hypervisor_regs(regs->ecx, eax, edx) )
 break;
@@ -1760,6 +1769,13 @@ static int emulate_privileged_op(struct 
 regs->edx = v->arch.guest_context.gs_base_user >> 32;
 break;
 #endif
+ case MSR_K8_FIDVID_CTL:
+ case MSR_K8_FIDVID_STATUS:
+ if ( !opt_cpufreq )
+ goto fail;
+ if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
+ goto fail;
+ break;
 case MSR_EFER:
 if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
 goto fail;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH][Retry 1] 2/4: cpufreq/PowerNow! in Xen: MSR access, Mark Langsdorf <=
Previous by Date: RE: [Xen-devel] [RFC][PATCH][1/4] Intel(R) Trusted Execution Technology support: xen , Cihula, Joseph
Next by Date: [Xen-devel] [PATCH][Retry 1] 3/4: cpufreq/PowerNow! in Xen: Linux time changes , Mark Langsdorf
Previous by Thread: [Xen-devel] [PATCH] [ACM/XEND] Fix case where resource label file does not exist , Stefan Berger
Next by Thread: [Xen-devel] [PATCH][Retry 1] 3/4: cpufreq/PowerNow! in Xen: Linux time changes , Mark Langsdorf
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /