Received: by 2002:a05:6358:f14:b0:e5:3b68:ec04 with SMTP id b20csp4443583rwj; Tue, 20 Dec 2022 10:08:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf5Gki8kEE46oGZ73pdtBs5DdeH6JmNui/Y7KA2cF0iegaflbkFFOJU05xT4aM+vzNC9w2os X-Received: by 2002:a05:6a20:c705:b0:a2:c3b0:f637 with SMTP id hi5-20020a056a20c70500b000a2c3b0f637mr55841442pzb.26.1671559721875; Tue, 20 Dec 2022 10:08:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671559721; cv=none; d=google.com; s=arc-20160816; b=VrJV0a1S6p2QsQzfKRhJpLm60Qc+L+mJ/Q+Xf7wmRAGRefzFXFfeploEE82GST1sF9 wzLm7JiD/mvITJA5IiZPlstEWzey+LiJeZHF1woR5nwrbHj4S8q0M/zh1L33A80/q254 gH0Q6VbS1LAkU05mwNRxpCYDqkKT73K+Vb5S6lqYk+adla04iPmQKJtFKg4P+8kGakNL otlc+KCyXMCyz5acCYJHDIoyJQMFBPAB3HUObg7oAgyEJW5rb4ya3wsxIRfpD+5gZAkN WEJyEnhKFS0u7eqRhFhkOJRcPp2uhdpRA4A1+eLBS1zuOSYo2YNqw4lAKfYe7U6Dy5Fn khgQ== 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=7kMtd6mFHIc4lyhSJG2bAKq04EpZF7qYfB8BpwW0nVo=; b=Cz1FoWYXfhylsKsH9UPkFrqYUoddqUUgrA5qf/RWappAszakxxct+F9o9zQdcmzlke cTNRbYHodOvaDfhqaEg8/4MqUVi5aoFclRyYA6stBNFzNc6WW+NUWCxczQZ6IR/ygQqK F9kgPs1Ww7igq1QdvMHGc+hSNnd/a/kg+KKixyCEFqHIvatrT6D6u4j2S/7uhmcMjtq1 F+rNplv/4Ks7k1gDQqSQVUpRHFxQJmqNfYX1StblacjbHtgGrKsxoYapp6eNId2/W1mC NGcNyOUbFimUzhmQHENPoNC6Pd+WZ5D7x5/rSIwxxN+WwawDCnZwgaTtcSEJqpcrsc1O pj8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=DyCDc111; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z15-20020a170903018f00b001911d58c128si8404842plg.492.2022.12.20.10.08.32; Tue, 20 Dec 2022 10:08:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=DyCDc111; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233220AbiLTRxs (ORCPT + 69 others); Tue, 20 Dec 2022 12:53:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229727AbiLTRxp (ORCPT ); Tue, 20 Dec 2022 12:53:45 -0500 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9ED6BF006 for ; Tue, 20 Dec 2022 09:53:44 -0800 (PST) Received: by mail-pl1-x630.google.com with SMTP id t2so13039340ply.2 for ; Tue, 20 Dec 2022 09:53:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=7kMtd6mFHIc4lyhSJG2bAKq04EpZF7qYfB8BpwW0nVo=; b=DyCDc111EoEh+DmSSMOeFWtySplI1Ib9bmFK44m9bE1COHOn/+Kpk3ddIYdz7TdNMQ yRrGN+EFGsnSr94QcB+Cx9h31S1FQBPw4oQX+RGgzobFttJfsNTy8UAHqeLZFvFqGEN+ 7RGeBsCvFnl7JPXOS/s34AScNFaOG2gS7l9Q7eguuDtxIe5z3uE4l6CGby9Nw/dXHNFV N2RcO0kSJtmKNbHRTMfMynVCBSSOtsTRHbD8j0ucsT3hBp9fYZ9yVYTMpv0Cg84tOjr7 S6HfQVcVmXGe1eltsbNywOdScXRVxOWL3iQBdLU+XAC8NXmWoA5528Bvt2bmFhRHCHPd 5P6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7kMtd6mFHIc4lyhSJG2bAKq04EpZF7qYfB8BpwW0nVo=; b=6qt+xmsB3fYO79jI6E9w1BoeIVuaCDm9K75HEItNjpdQjFDic6MGx2jba+CyUbMF0p mfU3WgtvAYxyLPDjRa8tk/fwQhcaGNTL+xG41HvpPDBishwGv0MW86lzISITn5AH3acI FZS+zZVQFgz+oPAMw8zhTRD1+LtrSGxXvPWZpD9ZuE/DO8OW63+1JeGxYDnPcMWpEFhc clbeKBHU2/Q5rUWwnYQYEEBjUwFjHsck6wVqAIVc1gz3JMwLofOMFNOnmIEbp46d0aTQ 1BDsnufxvNG7CxOM7YB1VFQLbk9M9hSXa6n4tOYB5PHLgNxCvl6SVNd/FlH/n9vPwyy0 z0tA== X-Gm-Message-State: ANoB5pmwY9+S/bXgZhn07WUtK+wX8nl4SoMtzqv4EM1LhAumFHM6ZtUu 0q2QdEJvmkiq64UwKKc0me1FWCUOaNOao7lL X-Received: by 2002:a17:90b:1484:b0:21b:e47f:2fb2 with SMTP id js4-20020a17090b148400b0021be47f2fb2mr47394121pjb.37.1671558823931; Tue, 20 Dec 2022 09:53:43 -0800 (PST) Received: from google.com (223.103.125.34.bc.googleusercontent.com. [34.125.103.223]) by smtp.gmail.com with ESMTPSA id om7-20020a17090b3a8700b001fde655225fsm2216367pjb.2.2022.12.20.09.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Dec 2022 09:53:43 -0800 (PST) Date: Tue, 20 Dec 2022 09:53:39 -0800 From: David Matlack To: Sean Christopherson Cc: Paolo Bonzini , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Robert Hoo , Greg Thelen , Ben Gardon , Mingwei Zhang Subject: Re: [PATCH 5/5] KVM: x86/mmu: Move kvm_tdp_mmu_map()'s prolog and epilog to its caller Message-ID: References: <20221213033030.83345-1-seanjc@google.com> <20221213033030.83345-6-seanjc@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221213033030.83345-6-seanjc@google.com> X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 13, 2022 at 03:30:30AM +0000, Sean Christopherson wrote: > Move the hugepage adjust, tracepoint, and RCU (un)lock logic out of > kvm_tdp_mmu_map() and into its sole caller, kvm_tdp_mmu_page_fault(), to > eliminate the gotos used to bounce through rcu_read_unlock() when bailing > from the walk. > > Opportunistically mark kvm_mmu_hugepage_adjust() as static as > kvm_tdp_mmu_map() was the only external user. > > No functional change intended. > > Signed-off-by: Sean Christopherson > --- > arch/x86/kvm/mmu/mmu.c | 9 ++++++++- > arch/x86/kvm/mmu/mmu_internal.h | 1 - > arch/x86/kvm/mmu/tdp_mmu.c | 22 ++++------------------ > 3 files changed, 12 insertions(+), 20 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 254bc46234e0..99c40617d325 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -3085,7 +3085,8 @@ int kvm_mmu_max_mapping_level(struct kvm *kvm, > return min(host_level, max_level); > } > > -void kvm_mmu_hugepage_adjust(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault) > +static void kvm_mmu_hugepage_adjust(struct kvm_vcpu *vcpu, > + struct kvm_page_fault *fault) > { > struct kvm_memory_slot *slot = fault->slot; > kvm_pfn_t mask; > @@ -4405,7 +4406,13 @@ static int kvm_tdp_mmu_page_fault(struct kvm_vcpu *vcpu, > if (is_page_fault_stale(vcpu, fault)) > goto out_unlock; > > + kvm_mmu_hugepage_adjust(vcpu, fault); Can you also move the call to kvm_mmu_hugepage_adjust() from direct_map() to direct_page_fault()? I do think it's worth the maintenence burden to keep those functions consistent. > + > + trace_kvm_mmu_spte_requested(fault); > + > + rcu_read_lock(); > r = kvm_tdp_mmu_map(vcpu, fault); > + rcu_read_unlock(); I would prefer to keep these in tdp_mmu.c, to reduce the amount of TDP MMU details that bleed into mmu.c (RCU) and for consistency with other TDP MMU APIs that don't require the caller to acquire RCU. This will also be helpful for the Common MMU, as the tracepoint and RCU will be common. e.g. static int __kvm_tdp_mmu_map(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault) { ... } int kvm_tdp_mmu_map(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault) { int r; trace_kvm_mmu_spte_requested(fault); rcu_read_lock(); r = __kvm_tdp_mmu_map(vcpu, fault); rcu_read_unlock(); return r; }