Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3935783pxy; Tue, 4 May 2021 13:27:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwAVg/WJ36RPXjX4EYUx4SIFFh1J78sFtCvG3l0k5/1diV3axQMgdzoQWQaGnp8DFRzQRIe X-Received: by 2002:a17:907:2708:: with SMTP id w8mr23770225ejk.0.1620160077250; Tue, 04 May 2021 13:27:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620160077; cv=none; d=google.com; s=arc-20160816; b=oHErbv2mz+XHIxoShC0J8Pr6FEtrASQlhgZFcV4PkPeWNdc3xzwsxopKG4I7CxjHuq jUV07axRqBq33yB0E4oBuHE1CzG6P8XphEQqvyFMoOXWqZwBtDi4V6x4/G7C2NId8hHb Rl4IFyt2x554bqqJEzizBSxdNUFNkOaJ7sPNmzd74UXcO9J6leWsHJ7Pmn+hcO3UC+MX diYeB0Jk79FFnYvWC1RTrQ2aWB9YVH5mTtgIrp85LX9cnzcfLV9vSnb1rzzswnFvRYgd Z4badFpIMDqvyhIiuth2oqYWp1Wd9IcUrdSI5vF9FvRl4pRXPtBEqJLXqTg6gbp21sWs pGaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=V9MXCUfkwjmTe3RnQ5lcnKM97SAruzdIHvAHJ/7SbBM=; b=UvcVYy7yI5m49IMvMLO8yc9vAlqmn5pLmPQubdOHCxI1SZrduUJkKi6X0Rj1YeO9eH o46P5azbjeh8vh9XuSrRID4I77GYZebdU0to0VBvEECs9pwU7K6HPsg4/V7eNAS84dFK baRXeGlQx4D0l0IW4TRYgtmbzhW2u8Q7KoSEOW4f2cYZP6DdDE469HwK+ooHznIxpNg1 +RGrOtRINEjPHwiQ9SfkuBiXUhvgr9DvIAZ1OJ4sM3xl5IGsXcvwvV63uFBakMnFDgvE xKlZUubLWrhiBj0zra4iwj9d8VmxwW6dtJjn443E2CLIYRDEaMUmnze1dsp9yobWtbga CrJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=gDxUZXMj; 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 g4si3371926ejj.279.2021.05.04.13.27.06; Tue, 04 May 2021 13:27:57 -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=gDxUZXMj; 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 S232648AbhEDT4S (ORCPT + 99 others); Tue, 4 May 2021 15:56:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232582AbhEDT4R (ORCPT ); Tue, 4 May 2021 15:56:17 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37DDBC061574 for ; Tue, 4 May 2021 12:55:22 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id m11so35447pfc.11 for ; Tue, 04 May 2021 12:55:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=V9MXCUfkwjmTe3RnQ5lcnKM97SAruzdIHvAHJ/7SbBM=; b=gDxUZXMjj4gmp5w7OneOA+ybUb5VLB6rrAPPS0IlGoniTArDiPJtz+fjyJG5pgsAMk KVjvhbAGD2sm8co6/oxomB+WqEb34rpQzg9VqgC7Pxglu9zYWstkxG+O4KcWxYMINqEE Z+RuLPQiCNVqp5L26RB3hDzYZcckTcsvVLcM9ivk8Quwc1EvIaHqbPP51FfNUayEGBtl 0o0RFgUZ0GWIP+D0EunIYE6tDOi/TzlAW8yQ3iu5z5Ff2RWfpZBNmalCU/lKEAlnVOFu zZzrNLFp0Ybndoegu82z6OGV4CV3nuSkGn55WMkjI2P16/OfYTpz8d+NxnQro74LTSW7 Wq5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=V9MXCUfkwjmTe3RnQ5lcnKM97SAruzdIHvAHJ/7SbBM=; b=bPQlanEk+zNy/4w6UPbDxuRR8TV2igNrwDDen4psRKAPr751Q1M40USpA42HbuigLp vjAy21Mf+8TzXyco/nxaJhzL0skPTwmLQqN3g/fxfiTaK8MDpNBWT3WWbe9zZG0Rtnx8 DbcskpEVhRMcx0qOIlXlYVyIOUAaMb2bzDD6a6Y9wq9zAyl/XtlObeLEymfMIp031Wyx FVEtGB8ZZh/N2vAdXvw6uh3/M/bkXe2BlGFh8fk8oby9HE0RUyLrQoVICl5lhuOJEJlP w4JhuImcTAZTA/FgtvOUwTzTk4NwRwku3rbxCRmVXuSXcE1pfxabZ+13vQVb0EmePkZS JHMg== X-Gm-Message-State: AOAM530CweVdTbOi9ehiLmJDvxwwOvwyDlWrjqbK3nqVp8lOZwrDZl3X kvLw7YCCrZlNUGeWC2i1oycJYw== X-Received: by 2002:a63:796:: with SMTP id 144mr24646749pgh.246.1620158121499; Tue, 04 May 2021 12:55:21 -0700 (PDT) Received: from google.com (240.111.247.35.bc.googleusercontent.com. [35.247.111.240]) by smtp.gmail.com with ESMTPSA id j10sm13484582pfn.207.2021.05.04.12.55.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 May 2021 12:55:20 -0700 (PDT) Date: Tue, 4 May 2021 19:55:16 +0000 From: Sean Christopherson To: Ben Gardon Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini , Peter Xu , Peter Shier , Junaid Shahid , Jim Mattson , Yulei Zhang , Wanpeng Li , Vitaly Kuznetsov , Xiao Guangrong Subject: Re: [PATCH v2 1/7] KVM: x86/mmu: Track if shadow MMU active Message-ID: References: <20210429211833.3361994-1-bgardon@google.com> <20210429211833.3361994-2-bgardon@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210429211833.3361994-2-bgardon@google.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 29, 2021, Ben Gardon wrote: > Add a field to each VM to track if the shadow / legacy MMU is actually > in use. If the shadow MMU is not in use, then that knowledge opens the > door to other optimizations which will be added in future patches. > > Signed-off-by: Ben Gardon > --- > arch/x86/include/asm/kvm_host.h | 2 ++ > arch/x86/kvm/mmu/mmu.c | 10 +++++++++- > arch/x86/kvm/mmu/mmu_internal.h | 2 ++ > arch/x86/kvm/mmu/tdp_mmu.c | 6 ++++-- > arch/x86/kvm/mmu/tdp_mmu.h | 4 ++-- > 5 files changed, 19 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index ad22d4839bcc..3900dcf2439e 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -1122,6 +1122,8 @@ struct kvm_arch { > */ > spinlock_t tdp_mmu_pages_lock; > #endif /* CONFIG_X86_64 */ > + > + bool shadow_mmu_active; I'm not a fan of the name, "shadow mmu" in KVM almost always means shadow paging of some form, whereas this covers both shadow paging and legacy TDP support. But, I think we we can avoid bikeshedding by simply eliminating this flag. More in later patches. > }; > > struct kvm_vm_stat { > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 930ac8a7e7c9..3975272321d0 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -3110,6 +3110,11 @@ static int fast_page_fault(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, > return ret; > } > > +void activate_shadow_mmu(struct kvm *kvm) > +{ > + kvm->arch.shadow_mmu_active = true; > +} > + > static void mmu_free_root_page(struct kvm *kvm, hpa_t *root_hpa, > struct list_head *invalid_list) > { > @@ -3280,6 +3285,8 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu) > } > } > > + activate_shadow_mmu(vcpu->kvm); > + > write_lock(&vcpu->kvm->mmu_lock); > r = make_mmu_pages_available(vcpu); > if (r < 0) > @@ -5467,7 +5474,8 @@ void kvm_mmu_init_vm(struct kvm *kvm) > { > struct kvm_page_track_notifier_node *node = &kvm->arch.mmu_sp_tracker; > > - kvm_mmu_init_tdp_mmu(kvm); > + if (!kvm_mmu_init_tdp_mmu(kvm)) > + activate_shadow_mmu(kvm); Doesn't come into play yet, but I would strongly prefer to open code setting the necessary flag instead of relying on the helper to never fail.