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 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] [PATCH]ACPI: re-enable mwait for xen cpuidle

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: RE: [Xen-devel] [PATCH]ACPI: re-enable mwait for xen cpuidle
From: "Wei, Gang" <gang.wei@xxxxxxxxx>
Date: Sat, 3 Apr 2010 00:27:29 +0800
Accept-language: zh-CN, en-US
Acceptlanguage: zh-CN, en-US
Cc: Keir, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Fraser <keir.fraser@xxxxxxxxxxxxx>, "Yu, Ke" <ke.yu@xxxxxxxxx>
Delivery-date: Fri, 02 Apr 2010 09:28:14 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <E6467867A6B05E4FA831B7DF29925F5C40E67A39@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <E6467867A6B05E4FA831B7DF29925F5C40E677DD@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <4BB58353.5000008@xxxxxxxx> <E6467867A6B05E4FA831B7DF29925F5C40E67932@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <E6467867A6B05E4FA831B7DF29925F5C40E67A39@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcrSJwfP1cRYbKunSoq1Ihm8FHUCfgAA7V8QAAbiibAADqGMMA==
Thread-topic: [Xen-devel] [PATCH]ACPI: re-enable mwait for xen cpuidle
Updated the 2nd patch, only set MWAIT feature for dom0.

Jimmy

ACPI: re-enable mwait for xen cpuidle

Xen hypervisor doesn't export mwait feature to dom0, but latest Linux kernel 
start to check this feature while initializing _PDC object. Modify xen_cpuid to 
re-enable mwait for xen cpuidle.

Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>

diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index c3e8bff..82f3826 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -182,6 +182,9 @@ static void __init xen_banner(void)
 static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
 static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
 static __read_mostly unsigned int cpuid_leaf81_edx_mask = ~0;
+static __read_mostly unsigned int cpuid_leaf1_ecx_set;
+static __read_mostly unsigned int cpuid_leaf5_ecx_set;
+static __read_mostly unsigned int cpuid_leaf5_edx_set;
 
 static void xen_cpuid(unsigned int *ax, unsigned int *bx,
                      unsigned int *cx, unsigned int *dx)
@@ -189,6 +192,8 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
        unsigned maskebx = ~0;
        unsigned maskecx = ~0;
        unsigned maskedx = ~0;
+       unsigned setecx  =  0;
+       unsigned setedx  =  0;
 
        /*
         * Mask out inconvenient features, to try and disable as many
@@ -198,6 +203,12 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
        case 0x1:
                maskecx = cpuid_leaf1_ecx_mask;
                maskedx = cpuid_leaf1_edx_mask;
+               setecx  = cpuid_leaf1_ecx_set;
+               break;
+
+       case 0x5: /* MWAIT INFO */
+               setecx = cpuid_leaf5_ecx_set;
+               setedx = cpuid_leaf5_edx_set;
                break;
 
        case 0xb:
@@ -220,6 +231,8 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
        *bx &= maskebx;
        *cx &= maskecx;
        *dx &= maskedx;
+       *cx |= setecx;
+       *dx |= setedx;
 }
 
 static __init void xen_init_cpuid_mask(void)
@@ -238,6 +251,11 @@ static __init void xen_init_cpuid_mask(void)
                          (1 << X86_FEATURE_MCA)  |  /* disable MCA */
                          (1 << X86_FEATURE_APIC) |  /* disable local APIC */
                          (1 << X86_FEATURE_ACPI));  /* disable ACPI */
+       else {
+               cpuid_leaf1_ecx_set = 1 << (X86_FEATURE_MWAIT % 32);
+               cpuid_leaf5_ecx_set = 0x3; /* EXTENSIONS_SUPPORTED | 
INTERRUPT_BREAK */
+               cpuid_leaf5_edx_set = ~0;
+       }
 
        ax = 1;
        cx = 0;

Attachment: re-enable-mwait_pv-ops-dom0-v2.1.patch
Description: re-enable-mwait_pv-ops-dom0-v2.1.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel