From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751897AbdKFKep (ORCPT ); Mon, 6 Nov 2017 05:34:45 -0500 Received: from mail.skyhub.de ([5.9.137.197]:37156 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750729AbdKFKeo (ORCPT ); Mon, 6 Nov 2017 05:34:44 -0500 Date: Mon, 6 Nov 2017 11:34:12 +0100 From: Borislav Petkov To: Brijesh Singh Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , Radim =?utf-8?B?S3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , x86@kernel.org Subject: Re: [Part2 PATCH v7 23/38] KVM: SVM: Reserve ASID range for SEV guest Message-ID: <20171106103412.ikr2ymvdjocvhcpo@pd.tnic> References: <20171101211623.71496-1-brijesh.singh@amd.com> <20171101211623.71496-24-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20171101211623.71496-24-brijesh.singh@amd.com> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 01, 2017 at 04:16:08PM -0500, Brijesh Singh wrote: > A SEV-enabled guest must use ASIDs from the defined subset, while non-SEV > guests can use the remaining ASID range. The range of allowed SEV guest > ASIDs is [1 - CPUID_8000_001F[ECX][31:0]]. > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: Paolo Bonzini > Cc: "Radim Krčmář" > Cc: Joerg Roedel > Cc: Borislav Petkov > Cc: Tom Lendacky > Cc: x86@kernel.org > Cc: kvm@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Improvements-by: Borislav Petkov > Signed-off-by: Brijesh Singh > Reviewed-by: Borislav Petkov > --- > arch/x86/kvm/svm.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c > index be2e98c01b22..d4b62536e305 100644 > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -323,6 +323,8 @@ enum { > > #define VMCB_AVIC_APIC_BAR_MASK 0xFFFFFFFFFF000ULL > > +static unsigned int max_sev_asid; > + > static inline void mark_all_dirty(struct vmcb *vmcb) > { > vmcb->control.clean = 0; > @@ -787,7 +789,7 @@ static int svm_hardware_enable(void) > sd->asid_generation = 1; > sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1; > sd->next_asid = sd->max_asid + 1; > - sd->min_asid = 1; > + sd->min_asid = max_sev_asid + 1; > > gdt = get_current_gdt_rw(); > sd->tss_desc = (struct kvm_ldttss_desc *)(gdt + GDT_ENTRY_TSS); > @@ -1054,6 +1056,15 @@ static int avic_ga_log_notifier(u32 ga_tag) > return 0; > } > > +/* > + * Get the maximum number of encrypted guests: > + * Fn8001_001F[ECX][31:0]: Number of supported guests. > + */ > +static __init void sev_hardware_setup(void) > +{ > + max_sev_asid = cpuid_ecx(0x8000001F); > +} > + > static __init int svm_hardware_setup(void) > { > int cpu; > @@ -1084,6 +1095,16 @@ static __init int svm_hardware_setup(void) > kvm_tsc_scaling_ratio_frac_bits = 32; > } > > + if (sev) { > + if (boot_cpu_has(X86_FEATURE_SEV) && > + IS_ENABLED(CONFIG_KVM_AMD_SEV)) { > + sev_hardware_setup(); > + pr_info("SEV supported\n"); > + } else { > + sev = false; > + } > + } Btw, upon a second look, this hunk should go with the previous patch. This patch deals with ASID ranges, as the commit message states. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.