From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH 1 of 2] traps: AMD PM RDMSRs (MSR_K8_PSTATE_CTRL, etc) Date: Fri, 24 Feb 2012 01:43:53 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com, Ian.Jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, Ian.Campbell@citrix.com Cc: konrad.wilk@oracle.com List-Id: xen-devel@lists.xenproject.org # HG changeset patch # User Konrad Rzeszutek Wilk # Date 1330065828 18000 # Node ID a34b652afb0ca484b7416008c95fd36ffbbea334 # Parent a4d93d0e0df2fafe5b3e2dab3e34799498a875e2 traps: AMD PM RDMSRs (MSR_K8_PSTATE_CTRL, etc) The restriction to read and write the AMD power management MSRs is gated if the domain 0 is the PM domain (so FREQCTL_dom0_kernel is set). But we can relax this restriction and allow the privileged domain to read the MSRs (but not write). This allows the priviliged domain to harvest the power management information (ACPI _PSS states) and send it to the hypervisor. Signed-off-by: Konrad Rzeszutek Wilk diff -r a4d93d0e0df2 -r a34b652afb0c xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Wed Feb 22 14:33:24 2012 +0000 +++ b/xen/arch/x86/traps.c Fri Feb 24 01:43:48 2012 -0500 @@ -2610,7 +2610,7 @@ static int emulate_privileged_op(struct case MSR_K8_PSTATE7: if ( boot_cpu_data.x86_vendor != X86_VENDOR_AMD ) goto fail; - if ( !is_cpufreq_controller(v->domain) ) + if ( !is_cpufreq_controller(v->domain) && !IS_PRIV(v->domain) ) { regs->eax = regs->edx = 0; break;