Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4115777pxj; Tue, 15 Jun 2021 16:00:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCMCAE4fPbxmHU0iNq5UcJj7zUXszBRrzyGL63ouwbtwh/obfNSz4jPCZep71HfZd+9mvk X-Received: by 2002:a17:907:2636:: with SMTP id aq22mr1333287ejc.400.1623798035900; Tue, 15 Jun 2021 16:00:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623798035; cv=none; d=google.com; s=arc-20160816; b=zEGF8GsKIS+kCjOydWz8gtjesTOeVU3RcPJXbb7iqZHQznZeFVICwvVYzAaKMvo06W QQYFBapj/o9WuS08FTawqmlvEWzM48KxnBeu0j+W7C7E3wpOJxushJ87F3PRKa+nrERA pj3G3ZJ8aLoRDDZd3Jeh/RX/IOAeImcsVQs1CJ4E++VQMhelgu5HXpwbEWgVVu+M8YIs +PX0kV1QvGgDrON37uBeaioX+AzcYgMrtIjsWGtELQk4x7ukJ5ebsaTmbUSSVq0/MlRO NygopLKGF9lnxFqf+ugEK/a9mZOAa123kod3Lr1Z/b/1MBslm17hU6QUkdRBHmFkV20H GpPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=DdsbRF+igtWcAfktmVLmS7AoTeGY+LpkgKxtDyKQA18=; b=dl9ZGl7h1vpmE8yJfau9MwXu8eyU2bXJFGh0atrES1sP4AxNptqYeW+dV4kJuj1MMR go5C8TWR4vReSLxIqOQvSHqqZZHYug7nIBRGZ/YWKJXCK3Qkx9gzLSaXHey34ays3F7y 0/XhPqE5a1HxzQQ33I2Ier7ONWGDhkuJut8uD87JmL1heLgqBS2Zsut1GhYfdJhNE0sY OMnK0/mYAXUvL0gpu6QMCN4mZhJwUmkiCSWavPzQHp5xM51M7rKZbx5md1+QiRUfIPnI 73i2a9YCJY5ddl/D76Ptzs0pspt6I0pnaVtgSnWyKb9P7U9twt57bodfkQ+DLItTL3qS 5hkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RxO7+H2y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 23si304221ejn.487.2021.06.15.16.00.12; Tue, 15 Jun 2021 16:00:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RxO7+H2y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231243AbhFOXAn (ORCPT + 99 others); Tue, 15 Jun 2021 19:00:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231189AbhFOXAm (ORCPT ); Tue, 15 Jun 2021 19:00:42 -0400 Received: from mail-ot1-x32c.google.com (mail-ot1-x32c.google.com [IPv6:2607:f8b0:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04C2CC061574 for ; Tue, 15 Jun 2021 15:58:37 -0700 (PDT) Received: by mail-ot1-x32c.google.com with SMTP id 102-20020a9d0eef0000b02903fccc5b733fso580243otj.4 for ; Tue, 15 Jun 2021 15:58:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DdsbRF+igtWcAfktmVLmS7AoTeGY+LpkgKxtDyKQA18=; b=RxO7+H2y57chX7xE9CD/8QeVtz0IqPqf+37XqP5GE/Omz4S/SXqBgAkoIKJBU9YF/w oI8Cyy8/zvFHPInVl6i5yBa+o5P2w7pja1ki4zAiT5Z1e7IQwk3PTJRfF7H8W0+mWwkO AfxuAZhSEcP42ziZTgXDMkkfF+2tE5GL2C4V0IBloO44nEdDNQucGvva3GPXt9WVYe5m 7VUTeyicPJVVGVhuaXL/pvMm/0LvyyGHocnZh9n4lEgw3ojn/d+9s4czOjKUsijzlI+X h/zqigmTqXSEyB/klkLhzh6DtTLLCw2fAwDcVc2vzbQAts0AD4dXjjS1O8t6mQ8qJs4h 7zUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DdsbRF+igtWcAfktmVLmS7AoTeGY+LpkgKxtDyKQA18=; b=XVDwzX1A0JQSdIO+UQ5WncM8U7Ug7ddFA/EpRbZbrb5KQqZ1JUh50zWn3+YkZYzJ6g jirJzhfUXRP+bwtm2IljNXJ2oI4HUm/nusHKSs+RcFB1fksCOFkmL2wmyzGbXXnZb9GA Gb4ewExFYIJ3U/YyHOaYFpPARdotjr6XvavBwzQfGII6R4pzMJM0Svxc2jwEBKt8eHrI 4rhzbOBEoC+2b/Hj7OOf7CcO6nfmYDqq4xPWNnLuLfuohPiFpzzT+/EubixHbkafakQN VCY/xYWkprFhCYUbLiiKlXbwI1LT92KPEfgBBnkGNK/i+/ldmQ1rzVBSPHAC8gVDpJEc rg/w== X-Gm-Message-State: AOAM533GIKRXTDy6uo9zz00Hu5I/zkhONNxOo8ZQBJHd5aOpKY+/LaOu WTB2NRgg0koyU4JJXEGSd8e7URYznQuvyGaRR1KwzQ== X-Received: by 2002:a05:6830:2011:: with SMTP id e17mr1223753otp.295.1623797915922; Tue, 15 Jun 2021 15:58:35 -0700 (PDT) MIME-Version: 1.0 References: <20210615164535.2146172-1-seanjc@google.com> <20210615164535.2146172-5-seanjc@google.com> In-Reply-To: <20210615164535.2146172-5-seanjc@google.com> From: Jim Mattson Date: Tue, 15 Jun 2021 15:58:24 -0700 Message-ID: Subject: Re: [PATCH 4/4] KVM: x86: Simplify logic to handle lack of host NX support To: Sean Christopherson Cc: Paolo Bonzini , Vitaly Kuznetsov , Wanpeng Li , Joerg Roedel , kvm list , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 15, 2021 at 9:45 AM Sean Christopherson wrote: > > Use boot_cpu_has() to check for NX support now that KVM requires > host_efer.NX=1 if NX is supported. Opportunistically avoid the guest > CPUID lookup in cpuid_fix_nx_cap() if NX is supported, which is by far > the common case. > > Signed-off-by: Sean Christopherson > --- > arch/x86/kvm/cpuid.c | 13 +++++-------- > 1 file changed, 5 insertions(+), 8 deletions(-) > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index b4da665bb892..786f556302cd 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -208,16 +208,14 @@ static void kvm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) > kvm_mmu_reset_context(vcpu); > } > > -static int is_efer_nx(void) > -{ > - return host_efer & EFER_NX; > -} > - > static void cpuid_fix_nx_cap(struct kvm_vcpu *vcpu) > { > int i; > struct kvm_cpuid_entry2 *e, *entry; > > + if (boot_cpu_has(X86_FEATURE_NX)) > + return; > + > entry = NULL; > for (i = 0; i < vcpu->arch.cpuid_nent; ++i) { > e = &vcpu->arch.cpuid_entries[i]; > @@ -226,7 +224,7 @@ static void cpuid_fix_nx_cap(struct kvm_vcpu *vcpu) > break; > } > } > - if (entry && cpuid_entry_has(entry, X86_FEATURE_NX) && !is_efer_nx()) { > + if (entry && cpuid_entry_has(entry, X86_FEATURE_NX)) { > cpuid_entry_clear(entry, X86_FEATURE_NX); > printk(KERN_INFO "kvm: guest NX capability removed\n"); > } It would be nice if we chose one consistent approach to dealing with invalid guest CPUID information and stuck with it. Silently modifying the table provided by userspace seems wrong to me. I much prefer the kvm_check_cpuid approach of telling userspace that the guest CPUID information is invalid. (Of course, once we return -EINVAL for more than one field, good luck figuring out which field is invalid!) Reviewed-by: Jim Mattson