Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp833768ybg; Tue, 9 Jun 2020 14:10:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxfjT5Kq1kmm04EX+UrGwRUivDsaoP2nURJHo4NpnQ5IyD0xJqIbZqr24hj7gm4UMIZ3CtM X-Received: by 2002:aa7:dc58:: with SMTP id g24mr30348119edu.136.1591737012350; Tue, 09 Jun 2020 14:10:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591737012; cv=none; d=google.com; s=arc-20160816; b=KdQlY8LFmb6jIEgYOI+Vyujwt0W+i1yWWte0j2Uo9dLEuBMHZ83EaN0cWYEL/PrY7h GhTN3xieoj3nL+mM6bF+4rdgdVF6wbouYWeXpxT4lL7Rh2fxHQ7oj/m1dRbHIzHYj3Ng 7Ej1NjK/7E4trQT2f4bJWChD87VrkHzH9iOQyi2NzZfRqscHi2jPluE53H5ZqBG+rI0y 6Nb5bWg8KpUDm6KycRpI1kiBuMF9cU+v2K5QYEi5L5boIZ8km3ry/TMyalO5vtU54PMZ kfBS+1Dv7+OvywpfpRG7n85curAYeMlbztSX71BDdYD098R3B7Et6NpbzdjHosSn9vl9 cBOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=f15ThlgRIs3s50AvF0kFQ8PMHdAjHFT357oOtlUx/ug=; b=mAXw+pm9ylpWdjXK1WurPOzAtZAbFa5xOdIfNxRs7ge1h29Fz+J2AyJos1yn0teGyr NtHoKq4uM8VmACPvHRsRsu4jUHwMdg5Wd7xwypfYqcnFG2k+rEzUxg8ANA8e0pxEd/NA hbQFTWFNNT7dszhEu6dK/GDy4IY5HNAjW78U61H5mgMf58kcewnpFWMNhrNKkUGL8jOP 6OQNtwbDgyrjOuZZ0T8XeUxgwN9vv/u6JKfmTfYHLVSZmCmczBQMqDLARLI5lfMa2g6w jmjtqY5TVmwErCHhSif/Pt90Jo4ZzXoo5Q6ufo6k3Y/GjfrJRHol91Zsm8reJhieZBY3 CdcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=YQTUSvv3; 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 e2si8306906edv.101.2020.06.09.14.09.31; Tue, 09 Jun 2020 14:10:12 -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=YQTUSvv3; 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 S1727005AbgFIVHR (ORCPT + 99 others); Tue, 9 Jun 2020 17:07:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726449AbgFIVHP (ORCPT ); Tue, 9 Jun 2020 17:07:15 -0400 Received: from mail-ua1-x941.google.com (mail-ua1-x941.google.com [IPv6:2607:f8b0:4864:20::941]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C098DC08C5C2 for ; Tue, 9 Jun 2020 14:07:15 -0700 (PDT) Received: by mail-ua1-x941.google.com with SMTP id b13so110598uav.3 for ; Tue, 09 Jun 2020 14:07:15 -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=f15ThlgRIs3s50AvF0kFQ8PMHdAjHFT357oOtlUx/ug=; b=YQTUSvv3PxEEhj5ujE/dPySButOyH55bK4Xn7FFJQPplWJdwV27lg1hiiGZPMl+Csy utkQv6pOjG6DMuuUAn6OW8rUDsTwDk+L09wjyrOsEHgSM9DO1jG+4DXrAkvtnH7+VocI GJeE84ALY1lEBJxLNfWmnbxI8H4dKWQGgYe6NIzbLwEX92BP0BVccbN5ywjf+ad2hItV hOK3koJ698Vs9caFgU0Oz67/J789jH+4rxh31hXP0eWCQ0G50xlrah8Vhcbhoz+wsVGG RvWp/Z6BsjYqNpoy5p5CsKAw38VlYjZy47xgAAr8XRHehyo5E50oaLRajAfxViZwx+CC YVIw== 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=f15ThlgRIs3s50AvF0kFQ8PMHdAjHFT357oOtlUx/ug=; b=pCp8OMkdLZp2lRBhnsDWZ/713YaZsMCL1gfKLkZcNlCnjjGIUFeGO2zIzJ20DjjpgL TJ3eStdUmMRekJQjFB1ANol+a06n6UFFJ1oFr4XVhYWeHoGNgJMp2gmXwY6g99qvCWBD 3//1pogSY51XzTeC8s3gEkP1vqRkgVrm4SigkVIbGNaqc1jk6CRvuTw6BvQDSCY3iXQ7 qoVT7s8pydJz6MzfKpBz6++Gpnv/cc85rwdJCvrteKS8LQOa0l1zOy3zeVx5HiOtzN4X 882P9nq0yxAAueZpc/82J3MSGTSXCDrJpECVvhGcVtFFz3x1TpP6AnnMyHZTSsuNNtl4 D+MQ== X-Gm-Message-State: AOAM533OQvH3PWGP03ZHoJLBkRAjEgnF+w6rUnuTxrbzTvUuaffM2Mrf Oh3TokK6vmyODXP/qObYLLnvgwvZ1AygmM4qIM/dag== X-Received: by 2002:ab0:6012:: with SMTP id j18mr260224ual.69.1591736832385; Tue, 09 Jun 2020 14:07:12 -0700 (PDT) MIME-Version: 1.0 References: <20200605213853.14959-1-sean.j.christopherson@intel.com> <20200605213853.14959-2-sean.j.christopherson@intel.com> In-Reply-To: <20200605213853.14959-2-sean.j.christopherson@intel.com> From: Ben Gardon Date: Tue, 9 Jun 2020 14:07:01 -0700 Message-ID: Subject: Re: [PATCH 01/21] KVM: x86/mmu: Track the associated kmem_cache in the MMU caches To: Sean Christopherson Cc: Marc Zyngier , Paul Mackerras , Christian Borntraeger , Janosch Frank , Paolo Bonzini , James Morse , Julien Thierry , Suzuki K Poulose , David Hildenbrand , Cornelia Huck , Claudio Imbrenda , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, linux-mips@vger.kernel.org, kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Feiner , Peter Shier , Junaid Shahid , Christoffer Dall Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 5, 2020 at 2:39 PM Sean Christopherson wrote: > > Track the kmem_cache used for non-page KVM MMU memory caches instead of > passing in the associated kmem_cache when filling the cache. This will > allow consolidating code and other cleanups. > > No functional change intended. > > Signed-off-by: Sean Christopherson Reviewed-by: Ben Gardon > --- > arch/x86/include/asm/kvm_host.h | 1 + > arch/x86/kvm/mmu/mmu.c | 24 +++++++++++------------- > 2 files changed, 12 insertions(+), 13 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 1da5858501ca..16347b050754 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -251,6 +251,7 @@ struct kvm_kernel_irq_routing_entry; > */ > struct kvm_mmu_memory_cache { > int nobjs; > + struct kmem_cache *kmem_cache; > void *objects[KVM_NR_MEM_OBJS]; > }; > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index fdd05c233308..0830c195c9ed 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -1060,15 +1060,14 @@ static void walk_shadow_page_lockless_end(struct kvm_vcpu *vcpu) > local_irq_enable(); > } > > -static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache, > - struct kmem_cache *base_cache, int min) > +static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache, int min) > { > void *obj; > > if (cache->nobjs >= min) > return 0; > while (cache->nobjs < ARRAY_SIZE(cache->objects)) { > - obj = kmem_cache_zalloc(base_cache, GFP_KERNEL_ACCOUNT); > + obj = kmem_cache_zalloc(cache->kmem_cache, GFP_KERNEL_ACCOUNT); > if (!obj) > return cache->nobjs >= min ? 0 : -ENOMEM; > cache->objects[cache->nobjs++] = obj; > @@ -1081,11 +1080,10 @@ static int mmu_memory_cache_free_objects(struct kvm_mmu_memory_cache *cache) > return cache->nobjs; > } > > -static void mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc, > - struct kmem_cache *cache) > +static void mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc) > { > while (mc->nobjs) > - kmem_cache_free(cache, mc->objects[--mc->nobjs]); > + kmem_cache_free(mc->kmem_cache, mc->objects[--mc->nobjs]); > } > > static int mmu_topup_memory_cache_page(struct kvm_mmu_memory_cache *cache, > @@ -1115,25 +1113,22 @@ static int mmu_topup_memory_caches(struct kvm_vcpu *vcpu) > int r; > > r = mmu_topup_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache, > - pte_list_desc_cache, 8 + PTE_PREFETCH_NUM); > + 8 + PTE_PREFETCH_NUM); > if (r) > goto out; > r = mmu_topup_memory_cache_page(&vcpu->arch.mmu_page_cache, 8); > if (r) > goto out; > - r = mmu_topup_memory_cache(&vcpu->arch.mmu_page_header_cache, > - mmu_page_header_cache, 4); > + r = mmu_topup_memory_cache(&vcpu->arch.mmu_page_header_cache, 4); > out: > return r; > } > > static void mmu_free_memory_caches(struct kvm_vcpu *vcpu) > { > - mmu_free_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache, > - pte_list_desc_cache); > + mmu_free_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache); > mmu_free_memory_cache_page(&vcpu->arch.mmu_page_cache); > - mmu_free_memory_cache(&vcpu->arch.mmu_page_header_cache, > - mmu_page_header_cache); > + mmu_free_memory_cache(&vcpu->arch.mmu_page_header_cache); > } > > static void *mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc) > @@ -5684,6 +5679,9 @@ int kvm_mmu_create(struct kvm_vcpu *vcpu) > uint i; > int ret; > > + vcpu->arch.mmu_pte_list_desc_cache.kmem_cache = pte_list_desc_cache; > + vcpu->arch.mmu_page_header_cache.kmem_cache = mmu_page_header_cache; > + > vcpu->arch.mmu = &vcpu->arch.root_mmu; > vcpu->arch.walk_mmu = &vcpu->arch.root_mmu; > > -- > 2.26.0 >