From patchwork Fri Sep 21 15:28:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Bader X-Patchwork-Id: 185788 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id 00DDB2C0092 for ; Sat, 22 Sep 2012 01:28:25 +1000 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TF576-0005WT-S3; Fri, 21 Sep 2012 15:25:56 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TF570-0005Vk-RG for kernel-team@lists.ubuntu.com; Fri, 21 Sep 2012 15:25:50 +0000 Received: from p5b2e2bbb.dip.t-dialin.net ([91.46.43.187] helo=canonical.com) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1TF59C-00076u-N2 for kernel-team@lists.ubuntu.com; Fri, 21 Sep 2012 15:28:06 +0000 From: Stefan Bader To: kernel-team@lists.ubuntu.com Subject: [Precise SRU] Revert "UBUNTU: SAUCE: Force xsave off on older Xen hypervisors" Date: Fri, 21 Sep 2012 17:28:01 +0200 Message-Id: <1348241284-14489-2-git-send-email-stefan.bader@canonical.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1348241284-14489-1-git-send-email-stefan.bader@canonical.com> References: <1348241284-14489-1-git-send-email-stefan.bader@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com This reverts commit 85c46aa8b6c17d1a9360559d22f4683b1a38e33e. It turned out that since 2.6.39 the Xen code in the kernel would not try to set OSXSAVE in CR4 to find out whether the feature is supported. Instead it relies on OSXSAVE being set by the HV in the cpuid bits (which will only happen if supported). BugLink: http://bugs.launchpad.net/bugs/1044550 Signed-off-by: Stefan Bader --- arch/x86/xen/enlighten.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 5811718..bdf0883 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -188,18 +188,6 @@ void xen_vcpu_restore(void) } } -/* - * Older (with no clear statement about what old means) Xen hypervisors - * will crash a PV guest that tries to store OSXSAVE into CR4. - * To prevent this, we force the feature bits related to this off in the - * xen cpuid call. This inline function serves as a centralized test - * on whether the quirk should be done. - */ -static inline needs_xsave_quirk(unsigned version) -{ - return (xen_pv_domain() && ((version >> 16) < 4)) ? 1 : 0; -} - static void __init xen_banner(void) { unsigned version = HYPERVISOR_xen_version(XENVER_version, NULL); @@ -211,8 +199,6 @@ static void __init xen_banner(void) printk(KERN_INFO "Xen version: %d.%d%s%s\n", version >> 16, version & 0xffff, extra.extraversion, xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : ""); - if (needs_xsave_quirk(version)) - printk(KERN_INFO "Forcing xsave off due to Xen version.\n"); } #define CPUID_THERM_POWER_LEAF 6 @@ -263,7 +249,6 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx, static void __init xen_init_cpuid_mask(void) { - unsigned version = HYPERVISOR_xen_version(XENVER_version, NULL); unsigned int ax, bx, cx, dx; unsigned int xsave_mask; @@ -286,7 +271,7 @@ static void __init xen_init_cpuid_mask(void) (1 << (X86_FEATURE_OSXSAVE % 32)); /* Xen will set CR4.OSXSAVE if supported and not disabled by force */ - if (((cx & xsave_mask) != xsave_mask) || needs_xsave_quirk(version)) + if ((cx & xsave_mask) != xsave_mask) cpuid_leaf1_ecx_mask &= ~xsave_mask; /* disable XSAVE & OSXSAVE */ }