From patchwork Mon Nov 14 11:01:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 9427217 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id F411460476 for ; Mon, 14 Nov 2016 11:04:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E48B52094F for ; Mon, 14 Nov 2016 11:04:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D952F28679; Mon, 14 Nov 2016 11:04:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 56B372094F for ; Mon, 14 Nov 2016 11:04:11 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6F1O-0001Ti-EV; Mon, 14 Nov 2016 11:01:54 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6F1N-0001TV-E6 for xen-devel@lists.xen.org; Mon, 14 Nov 2016 11:01:53 +0000 Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id 96/E9-20885-0A999285; Mon, 14 Nov 2016 11:01:52 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJLMWRWlGSWpSXmKPExsXitHSDve6CmZo RBqf7eS2WfFzM4sDocXT3b6YAxijWzLyk/IoE1owTi++zFqzmrlh8sp+pgfErRxcjJ4eEgL9E w/GfLCA2m4C+xO4Xn5hAbBEBdYnTHRdZQWxmgZ2MEl+/1oLYwgJREi87z7KD2CwCqhJ/tv0Cq +EV8JB43nGeFWKmnMT54z+ZQWwhATWJa/2X2CFqBCVOznzCAjFTQuLgixfMEPXcErdPT2WewM gzC0nZLCRlCxiZVjFqFKcWlaUW6Rpa6CUVZaZnlOQmZuboGhoY6+WmFhcnpqfmJCYV6yXn525 iBAZJPQMD4w7G36c9DzFKcjApifLGR2pGCPEl5adUZiQWZ8QXleakFh9ilOHgUJLgdZwBlBMs Sk1PrUjLzAGGK0xagoNHSYQ3FCTNW1yQmFucmQ6ROsWoKCXO+386UEIAJJFRmgfXBouRS4yyU sK8jAwMDEI8BalFuZklqPKvGMU5GJWEedlBxvNk5pXATX8FtJgJaPEucw2QxSWJCCmpBsbthk /MnP+UOkeelHi0Rk5+Uf2B29Gh7MXnHz+4GDn/wSSpnxU5OdqWDVpinfNqT90JEEv8cPD+6WX TtpTGCu/Xt1sWebDn1h85YOKoCY4TXsXJ8HGeTv/qwxH2e/Uz1yk+WLd8/40MlSBWhrDLve/9 so/N6dj/vn7BYUf/7IX1q/5L8v7UW67EUpyRaKjFXFScCAAV7NrsjAIAAA== X-Env-Sender: prvs=11933e973=Andrew.Cooper3@citrix.com X-Msg-Ref: server-7.tower-31.messagelabs.com!1479121310!63268033!1 X-Originating-IP: [66.165.176.63] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.0.16; banners=-,-,- X-VirusChecked: Checked Received: (qmail 1762 invoked from network); 14 Nov 2016 11:01:51 -0000 Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63) by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP; 14 Nov 2016 11:01:51 -0000 X-IronPort-AV: E=Sophos;i="5.31,638,1473120000"; d="scan'208";a="398013011" From: Andrew Cooper To: Xen-devel Date: Mon, 14 Nov 2016 11:01:25 +0000 Message-ID: <1479121286-6390-1-git-send-email-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 X-DLP: MIA2 Cc: Andrew Cooper , Kevin Tian , Wei Liu , Jun Nakajima , Jan Beulich Subject: [Xen-devel] [PATCH for-4.8 1/2] x86/vmx: Correct the long mode check in vmx_cpuid_intercept() X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP %cs.L may be set in a legacy mode segment, or clear in a compatibility mode segment; it is not the correct way to check for long mode being active. Both of these situations result in incorrect visibility of the SYSCALL feature in CPUID, and by extension, incorrect behaviour in hvm_efer_valid(). Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Acked-by: Kevin Tian --- CC: Jan Beulich CC: Wei Liu CC: Jun Nakajima CC: Kevin Tian --- xen/arch/x86/hvm/vmx/vmx.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 9a8f694..a18db28 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2407,7 +2407,6 @@ static void vmx_cpuid_intercept( unsigned int *ecx, unsigned int *edx) { unsigned int input = *eax; - struct segment_register cs; struct vcpu *v = current; hvm_cpuid(input, eax, ebx, ecx, edx); @@ -2416,8 +2415,7 @@ static void vmx_cpuid_intercept( { case 0x80000001: /* SYSCALL is visible iff running in long mode. */ - vmx_get_segment_register(v, x86_seg_cs, &cs); - if ( cs.attr.fields.l ) + if ( hvm_long_mode_enabled(v) ) *edx |= cpufeat_mask(X86_FEATURE_SYSCALL); else *edx &= ~(cpufeat_mask(X86_FEATURE_SYSCALL));