Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp772528ybg; Wed, 10 Jun 2020 13:19:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyd3m7bWdtN3Getodd1wKhtrWXc0m4GaDOX2T3MDrLgdWtw4S3Fw/B+ll0AmN7/8Z39cqd8 X-Received: by 2002:a50:afc2:: with SMTP id h60mr3906433edd.110.1591820387033; Wed, 10 Jun 2020 13:19:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591820387; cv=none; d=google.com; s=arc-20160816; b=vklESaqA64owIKFm05lZ/zVsptAluJ27W5c6Dzx6Ju5bUS7Gh97VuTOGsqtC6k+vhh gVOzxZOdCuWB8ni0HvAu8hshJreNSw1nao5DbXlc/mpviwra0UPOfq3bjbDlRatuPqk7 K0z3vKz/pfbGtWA29BxcNyhBwdM84YqCX6G9gZsUjly1RImdjnInV1BhtoMTo8/vbTtn ObcTWg1lM1vBTwRm2aj/gNhSPVunALWl3zYFwTrwIzEHCuli0wcUyCREoiuh45W51GRm JcvoFIOozl7j8T2SD2I/ogNXtFHP+ZLXESY481WZWil9WfPsX1cY374VQaXZGU7vKhiu 1Yzg== 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=vVAD935vzmk+zCqhrKriBW6qDeJ9UbWhrYXMFyoDNbk=; b=Lg6qT5QS/hEVZWjSIaJFNSG3O+RRRaPiNUBY92fBvg1Zz5BfHY9/EEXVlkYUWQIpNq s0NrrCj6/UNMqu9GWB1gnnhS/V7N3KS2fjDsnsDBVw+GZOU7zMmDa9SjDXBIE21HEnVq DJnGQWt8N/Aab1JmKbLEGr4LWcFHT8O/ARTOlvkHUfiGAPn9zBrb0hwAsqqFAux7YNQi ryFlC46KenRAFV1Cpsj7mPE/qM+NEbWe6h3tVlhEPruuoX3m3t2WthdnWNORRzdFmTNQ jPTwxiKYUHgpZYe2nCerbZGVN7eO9QTsjfW1oGRSf8D6hQGF9YlRLAEOrkz+6n2qcl4e Sexg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Sk96oRFz; 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 h3si867166ejo.141.2020.06.10.13.19.24; Wed, 10 Jun 2020 13:19:47 -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=Sk96oRFz; 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 S1729909AbgFJS5q (ORCPT + 99 others); Wed, 10 Jun 2020 14:57:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729423AbgFJS5o (ORCPT ); Wed, 10 Jun 2020 14:57:44 -0400 Received: from mail-ua1-x943.google.com (mail-ua1-x943.google.com [IPv6:2607:f8b0:4864:20::943]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1980C03E96F for ; Wed, 10 Jun 2020 11:57:44 -0700 (PDT) Received: by mail-ua1-x943.google.com with SMTP id b10so1245340uaf.0 for ; Wed, 10 Jun 2020 11:57:44 -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=vVAD935vzmk+zCqhrKriBW6qDeJ9UbWhrYXMFyoDNbk=; b=Sk96oRFzgKSljVnt+6mnQTGDFRR0sIInBe9XAnfxFeWo07PzQGUesvjTrqS2UETGbw 33JxIrEdcR+6sHmE/xgF9BdVMMrsqGaNijoxzDMr0BORvnpqMlkboWl1jjWyay1ys7QO 8bpz6ZhJVssu9zvLNYu2RNYv8V5b1aDXEFpmiTlxEmWvOQJ5IbaCgyZIBROKMbu9R0Ts Q+V8y6LeyXVnKp3TlABf8aS4jdt3me7MPjKJum7oyVYTDbJvsXQXN3qWMLzNS+UjFXec Q9ZEwZtxWUmmCPNxf8lT36jJYD1cIcpvnyeN9ijj5+wpG8wuuX1kDrzho+WryA2ZSCwZ pqsw== 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=vVAD935vzmk+zCqhrKriBW6qDeJ9UbWhrYXMFyoDNbk=; b=CumNnE6lqU4fn/9Cr1V835OSVVDer85a2xRxiCJYUQrhYu9nRWeesC4HLVn/GcLl8U 2/1LYyqoWteQ6/OsFRMo26kJzJaHXB+Fdt8s17ajTsZiqloQy3nPZwQktrPdjkoAviyc gNrHSpXW5ipcP1Z94tl9zMa4SLP59ugxdREmB/cnj9CqtWD2SpBGbgnOop1npShHi4r0 CwoLiOii4FotS1ur0GlSVpg7lOxhxPWK4S7Vh59ET32e4DrKDijqB59blph+YJvFgKX3 ara3/520dC/z6MRPVBwH9KtGbfdE2kwY4e+doPiD0HcaWVxIkuFBMNlVpdEu7EC4VN0o szug== X-Gm-Message-State: AOAM532Nvm1RtXa8UZsomZb7v87f4RlY7kwMkyXvMHud2+6svVpfgZTr AgrJOFMaurfQYQiY/sTF0vhRfYiOBXyf+lHzoe6mXA== X-Received: by 2002:ab0:70c9:: with SMTP id r9mr3681310ual.15.1591815463735; Wed, 10 Jun 2020 11:57:43 -0700 (PDT) MIME-Version: 1.0 References: <20200605213853.14959-1-sean.j.christopherson@intel.com> <20200605213853.14959-11-sean.j.christopherson@intel.com> In-Reply-To: <20200605213853.14959-11-sean.j.christopherson@intel.com> From: Ben Gardon Date: Wed, 10 Jun 2020 11:57:32 -0700 Message-ID: Subject: Re: [PATCH 10/21] KVM: x86/mmu: Make __GFP_ZERO a property of the memory cache 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: > > Add a gfp_zero flag to 'struct kvm_mmu_memory_cache' and use it to > control __GFP_ZERO instead of hardcoding a call to kmem_cache_zalloc(). > A future patch needs such a flag for the __get_free_page() path, as > gfn arrays do not need/want the allocator to zero the memory. Convert > the kmem_cache paths to __GFP_ZERO now so as to avoid a weird and > inconsistent API in the future. > > 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 | 7 ++++++- > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index e7a427547557..fb99e6776e27 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; > + gfp_t gfp_zero; This would make more sense to me if it could be used for general extra gfp flags and was called gfp_flags or something, or it was a boolean that was later translated into the flag being set. Storing the gfp_zero flag here is a little counter-intuitive. Probably not worth changing unless you're sending out a v2 for some other reason. > 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 d245acece3cd..6b0ec9060786 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -1063,8 +1063,10 @@ static void walk_shadow_page_lockless_end(struct kvm_vcpu *vcpu) > static inline void *mmu_memory_cache_alloc_obj(struct kvm_mmu_memory_cache *mc, > gfp_t gfp_flags) > { > + gfp_flags |= mc->gfp_zero; > + > if (mc->kmem_cache) > - return kmem_cache_zalloc(mc->kmem_cache, gfp_flags); > + return kmem_cache_alloc(mc->kmem_cache, gfp_flags); > else > return (void *)__get_free_page(gfp_flags); > } > @@ -5680,7 +5682,10 @@ int kvm_mmu_create(struct kvm_vcpu *vcpu) > int ret; > > vcpu->arch.mmu_pte_list_desc_cache.kmem_cache = pte_list_desc_cache; > + vcpu->arch.mmu_pte_list_desc_cache.gfp_zero = __GFP_ZERO; > + > vcpu->arch.mmu_page_header_cache.kmem_cache = mmu_page_header_cache; > + vcpu->arch.mmu_page_header_cache.gfp_zero = __GFP_ZERO; > > vcpu->arch.mmu = &vcpu->arch.root_mmu; > vcpu->arch.walk_mmu = &vcpu->arch.root_mmu; > -- > 2.26.0 >