Received: by 10.223.176.5 with SMTP id f5csp595111wra; Fri, 2 Feb 2018 03:02:07 -0800 (PST) X-Google-Smtp-Source: AH8x227ueecZIvrcgzx7kLoZKrqejf6R2iMdpTDOa7vpROieNOVhp1d5xbHjUq00wWQadlQoeJvh X-Received: by 2002:a17:902:76cc:: with SMTP id j12-v6mr32338300plt.120.1517569327341; Fri, 02 Feb 2018 03:02:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517569327; cv=none; d=google.com; s=arc-20160816; b=N0FNvQ7m0xvi0S9WnluE11ZShK8DGmuRI2vNLIueYzWndYTAqafiusCiZ5gs71j0i+ ZzLX5YYwX07SWUwovNGZdgYZo5fPT3m4Z2I7xTWrEWO14m01RJYTRlF5vsp0/clhcrh2 GzKIOriuqj3DJAVKaxs+M+BuSTuxOvmjOJmRHj7dtsm02ifzRkQpjpU2/n6QrBg+EFZ1 ZYu7Kd1roXTMgj1FTNL6HipYR2ViHVXkk8XYYbN8GmVYJBooNjPkw6EqQXN8lHemysNE UEJN6V14yBmLrlboPzSbYB05FwU2XtMMAJYpi/qMe0eiI43qkttl4lVYFtwaWpA7TKU4 YV5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=joj3bM1H/58a7sQDLAuwGq9qIicDXHPHAk/DLuUou8o=; b=tNvESviw5rJ0bt7M4U6DNmyw44c3z8VXVHrIbSoRY9LgZHjtlUtoytWe7s+pL4wV6O IVXTfd25ISHXmm5G7cwKnxXCVOFsjn1k7sBzHURzPbSe4mRMRh8R1Ge5Yy9nQrL2fkkn tAiLxoyx2npKg3DmNZyM2ZRJEZIRPjqQYK1LtsLOhEMs3OaJc7wMrZMIbr1VAFCmtmKT IrIoO4miA0xJRoA4CvV4WSkojubx4M/+Ae1NbJvHJKNthdVPDtBPuVaSHfP61hcbpUwJ 4RFTLi6Jnmqglixg23ESdfbbjxS8ZSldckvoikNJG48k3D6vhmMdyrlhixx0sE4TMSue J/1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=iQEbPoUw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r4si1262229pgs.573.2018.02.02.03.01.51; Fri, 02 Feb 2018 03:02:07 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=iQEbPoUw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751759AbeBBK7f (ORCPT + 99 others); Fri, 2 Feb 2018 05:59:35 -0500 Received: from aserp2130.oracle.com ([141.146.126.79]:55188 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751697AbeBBK73 (ORCPT ); Fri, 2 Feb 2018 05:59:29 -0500 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w12AwvSC035972; Fri, 2 Feb 2018 10:59:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to; s=corp-2017-10-26; bh=joj3bM1H/58a7sQDLAuwGq9qIicDXHPHAk/DLuUou8o=; b=iQEbPoUwJUOK6pzd955O3Rs+AU19MoUFF6O/FXyemDFA4U5QA7FMD7+enCYeUkourNmf TZDCetvMJNH6qOGkHlmGYjoKdeK/NBWzedEmDMpDuaSV9Mlq6YQWwt84NzBUNHLLvtCn YP5O9YjL7vOuC8x+J7ilpzCoG4xmXkoYIHbmrHZ6ZYL/u+0UbG5d1BYqbunX+oFL3VLZ 8mTB2uKMhWexc8nB3tvHw4cgd6AQrNZzir10Y5PfKgZ+BLppUOLi7+gn8FvTZx3ZpKSd EfnfxUn55iu/vUpSSLvZMdSZB9apR2o2IRVJ5F+ViTuhnHC/VhVIhgi7Vkh4Yse8vaRS ig== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp2130.oracle.com with ESMTP id 2fvg009e2k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 02 Feb 2018 10:59:00 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w12ArX6I017210 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 2 Feb 2018 10:53:34 GMT Received: from abhmp0016.oracle.com (abhmp0016.oracle.com [141.146.116.22]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w12ArWon030309; Fri, 2 Feb 2018 10:53:32 GMT Received: from starbug-vm.ie.oracle.com (/10.175.188.7) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 02 Feb 2018 02:53:32 -0800 Date: Fri, 2 Feb 2018 10:53:26 +0000 From: Darren Kenny To: KarimAllah Ahmed Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, Asit Mallick , Dave Hansen , Arjan Van De Ven , Tim Chen , Linus Torvalds , Andrea Arcangeli , Andi Kleen , Thomas Gleixner , Dan Williams , Jun Nakajima , Andy Lutomirski , Greg KH , Paolo Bonzini , Ashok Raj , David Woodhouse Subject: Re: [PATCH v6 3/5] KVM: VMX: Emulate MSR_IA32_ARCH_CAPABILITIES Message-ID: <20180202105326.v53jv7ry4yd6icm4@starbug-vm.ie.oracle.com> Mail-Followup-To: KarimAllah Ahmed , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, Asit Mallick , Dave Hansen , Arjan Van De Ven , Tim Chen , Linus Torvalds , Andrea Arcangeli , Andi Kleen , Thomas Gleixner , Dan Williams , Jun Nakajima , Andy Lutomirski , Greg KH , Paolo Bonzini , Ashok Raj , David Woodhouse References: <1517522386-18410-1-git-send-email-karahmed@amazon.de> <1517522386-18410-4-git-send-email-karahmed@amazon.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline In-Reply-To: <1517522386-18410-4-git-send-email-karahmed@amazon.de> User-Agent: NeoMutt/20171215 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8792 signatures=668660 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1802020135 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 01, 2018 at 10:59:44PM +0100, KarimAllah Ahmed wrote: >Intel processors use MSR_IA32_ARCH_CAPABILITIES MSR to indicate RDCL_NO >(bit 0) and IBRS_ALL (bit 1). This is a read-only MSR. By default the >contents will come directly from the hardware, but user-space can still >override it. > >[dwmw2: The bit in kvm_cpuid_7_0_edx_x86_features can be unconditional] > >Cc: Asit Mallick >Cc: Dave Hansen >Cc: Arjan Van De Ven >Cc: Tim Chen >Cc: Linus Torvalds >Cc: Andrea Arcangeli >Cc: Andi Kleen >Cc: Thomas Gleixner >Cc: Dan Williams >Cc: Jun Nakajima >Cc: Andy Lutomirski >Cc: Greg KH >Cc: Paolo Bonzini >Cc: Ashok Raj >Reviewed-by: Paolo Bonzini >Signed-off-by: KarimAllah Ahmed >Signed-off-by: David Woodhouse Reviewed-by: Darren Kenny >--- > arch/x86/kvm/cpuid.c | 2 +- > arch/x86/kvm/vmx.c | 15 +++++++++++++++ > arch/x86/kvm/x86.c | 1 + > 3 files changed, 17 insertions(+), 1 deletion(-) > >diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c >index 033004d..1909635 100644 >--- a/arch/x86/kvm/cpuid.c >+++ b/arch/x86/kvm/cpuid.c >@@ -394,7 +394,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, > > /* cpuid 7.0.edx*/ > const u32 kvm_cpuid_7_0_edx_x86_features = >- F(AVX512_4VNNIW) | F(AVX512_4FMAPS); >+ F(AVX512_4VNNIW) | F(AVX512_4FMAPS) | F(ARCH_CAPABILITIES); > > /* all calls to cpuid_count() should be made on the same cpu */ > get_cpu(); >diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >index 263eb1f..b13314a 100644 >--- a/arch/x86/kvm/vmx.c >+++ b/arch/x86/kvm/vmx.c >@@ -593,6 +593,8 @@ struct vcpu_vmx { > u64 msr_guest_kernel_gs_base; > #endif > >+ u64 arch_capabilities; >+ > u32 vm_entry_controls_shadow; > u32 vm_exit_controls_shadow; > u32 secondary_exec_control; >@@ -3262,6 +3264,12 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) > case MSR_IA32_TSC: > msr_info->data = guest_read_tsc(vcpu); > break; >+ case MSR_IA32_ARCH_CAPABILITIES: >+ if (!msr_info->host_initiated && >+ !guest_cpuid_has(vcpu, X86_FEATURE_ARCH_CAPABILITIES)) >+ return 1; >+ msr_info->data = to_vmx(vcpu)->arch_capabilities; >+ break; > case MSR_IA32_SYSENTER_CS: > msr_info->data = vmcs_read32(GUEST_SYSENTER_CS); > break; >@@ -3397,6 +3405,11 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) > vmx_disable_intercept_for_msr(vmx->vmcs01.msr_bitmap, MSR_IA32_PRED_CMD, > MSR_TYPE_W); > break; >+ case MSR_IA32_ARCH_CAPABILITIES: >+ if (!msr_info->host_initiated) >+ return 1; >+ vmx->arch_capabilities = data; >+ break; > case MSR_IA32_CR_PAT: > if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) { > if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data)) >@@ -5659,6 +5672,8 @@ static void vmx_vcpu_setup(struct vcpu_vmx *vmx) > ++vmx->nmsrs; > } > >+ if (boot_cpu_has(X86_FEATURE_ARCH_CAPABILITIES)) >+ rdmsrl(MSR_IA32_ARCH_CAPABILITIES, vmx->arch_capabilities); > > vm_exit_controls_init(vmx, vmcs_config.vmexit_ctrl); > >diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c >index c53298d..4ec142e 100644 >--- a/arch/x86/kvm/x86.c >+++ b/arch/x86/kvm/x86.c >@@ -1009,6 +1009,7 @@ static u32 msrs_to_save[] = { > #endif > MSR_IA32_TSC, MSR_IA32_CR_PAT, MSR_VM_HSAVE_PA, > MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS, MSR_TSC_AUX, >+ MSR_IA32_ARCH_CAPABILITIES > }; > > static unsigned num_msrs_to_save; >-- >2.7.4 >