From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD1ECC54756 for ; Thu, 22 May 2025 07:23:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 320DB6B0092; Thu, 22 May 2025 03:23:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2F7F16B0093; Thu, 22 May 2025 03:23:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 235466B0095; Thu, 22 May 2025 03:23:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 06C0D6B0092 for ; Thu, 22 May 2025 03:23:09 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 9DB9E1D1052 for ; Thu, 22 May 2025 07:23:08 +0000 (UTC) X-FDA: 83469702456.05.DC572C2 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf30.hostedemail.com (Postfix) with ESMTP id C946E8000A for ; Thu, 22 May 2025 07:23:06 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Ui1Z7goe; spf=pass (imf30.hostedemail.com: domain of tabba@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747898586; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Mk2bLjyUEb287XK00LoxvtVw12EbKu/I8cWfAApuOuI=; b=WYoAZ80iHxuJw1cztOknUyZj3IOM75/N3w2ubsYTuzYKfjIewon1iuWrQ8WU9NOVpkcOPH EIkJ12v9UqiNPPrvmDWMOngd030dQM95Xb+qjrMhPUrZMZzrC2KvpOw4Vpd0wHbk0CkCXx QHtl5T9wXigp8rWI5gQqj3Kqb4gw+KU= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Ui1Z7goe; spf=pass (imf30.hostedemail.com: domain of tabba@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747898586; a=rsa-sha256; cv=none; b=DBsJPdVH8gNEHmc9J0ISo8jB3fEKo9y4hotL6x/jpa6TJ0VsNrzDjjTbyroLfwkbpCG0SC QJeoGZ2Jy75XRzTNwwZpQo/A6ssrZTlCXOTn3QDPDL3QFCkejXrcimjlSQxQeFjO6F7WUl 91retqNkfXMLr3SgNWdlPTW8Z+JuzKQ= Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-47666573242so1731861cf.0 for ; Thu, 22 May 2025 00:23:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747898586; x=1748503386; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Mk2bLjyUEb287XK00LoxvtVw12EbKu/I8cWfAApuOuI=; b=Ui1Z7goeWzBPD/319OZj6H2F0twHTohJFvTeQb2DKSxIs0V9DRvt55qK41U2qxORFX 1Md2GJLqZqUYs7dWcZippJDPcvLrFDHpbuv4sWU6ERTo/t6noaZ0J1HEq/bLD+RjC+un AAqX4/fBgqk8yoyRo9a77dUIiF2Y/txU6KIjl7KLz3nUamLVon0qPmvo66duIRdbKwof fUkJQlHJmXukUiNIeTBKgxm420u++c2WFvubJlX06J8D1aDSwyFS92GOvp3AElXNGjp5 Uq+vQ679cuSCTohEJaXY6c111iTwKpCmeXbtPO6KY7MgVz9jcaky+t1Jd3CR3pIoTuiM APvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747898586; x=1748503386; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Mk2bLjyUEb287XK00LoxvtVw12EbKu/I8cWfAApuOuI=; b=EXpFCxWpSwuPfb0txBB1Sv7toDZY50ornUfJ6dfYmaES8Wi3pipAkZRNtpTou+rMJy k+11iSfMzGftWDV9E9URjVojkq2bmqnCSyWbGm2ceAdmy9nPFUnfjAHahrxTc24AbPue Ea5ED2Z6O2LSrAubOGU4tAJRnfaIFxan3TDuKYgMBV5xPNTs/0bJxmohq+DFNYe0EWHp z/7l7DOY2UmanX2hWNmrjlObKmdSlM839+Q+KnJ61fACGmNa4MZ5ooj2O5jJ2T2jvIqm 8Cbf0glEgWl2JXiOzym788MUtRYoZG+Gp70iU0u+StR1q1MoYmO4PK2V8E/9VMkluRzz GoFQ== X-Forwarded-Encrypted: i=1; AJvYcCVaCLUvdlVsLMZnjFA0Y8wFoh3UjrHOCGfd3GXPBIHodUo5JL+Sca+xksttw7vcyrY8/sPE4U/43A==@kvack.org X-Gm-Message-State: AOJu0YyfRvQ9EIX7E6j70aAHOPDkoHSlNwfAuD2YjVaz4fvSnxmUmGMF NY3yQwOFpEkqw6IceFy5uSJEfDRKMfTePoCvQSOcLR9wNN2bhHNZqaVFfBOqGxsS6knG6ZJn40T UGRLDqBNerYNKjtBsmqOPpO8DYVrMpkCbMZhd48nkX0hlnmfULPmfgyas5Mg= X-Gm-Gg: ASbGncsgLndkx/jbZ6WMJ30S+Zq4BZVTWwY7h+k3iAzLBbt75fs3ZXesSolT/p6NH8T kBOnNN7G6gQbrD1BrFNXsnP0vrlX1VHD5AG2CYC6pRdGby8kC8BJG2XYOE9zClaEKdoR9NXQLqG wr6J1J9ZCs7Mr6Im0xtUjspptw/mU629NV64d2PmgmaGI= X-Google-Smtp-Source: AGHT+IEi6TeZEBQL7um7FKqCXxTH/kqET5/tP1WXTytlUTA+PhEPtgEimYOH7KJhSyxp6z55soK1OdIsMdoatnXAmqk= X-Received: by 2002:ac8:5d44:0:b0:477:8577:1532 with SMTP id d75a77b69052e-49cf1c95ae4mr1960781cf.28.1747898585469; Thu, 22 May 2025 00:23:05 -0700 (PDT) MIME-Version: 1.0 References: <20250513163438.3942405-1-tabba@google.com> <20250513163438.3942405-11-tabba@google.com> <5ace54d1-800b-4122-8c05-041aa0ee12a1@redhat.com> In-Reply-To: <5ace54d1-800b-4122-8c05-041aa0ee12a1@redhat.com> From: Fuad Tabba Date: Thu, 22 May 2025 08:22:28 +0100 X-Gm-Features: AX0GCFv4mD5QSYe80sAfF24snOg1C15DZpx2nFDhhQZIJov6N04QVy00YLzfTio Message-ID: Subject: Re: [PATCH v9 10/17] KVM: x86: Compute max_mapping_level with input from guest_memfd To: David Hildenbrand Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, ackerleytng@google.com, mail@maciej.szmigiero.name, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com, pankaj.gupta@amd.com, ira.weiny@intel.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: C946E8000A X-Stat-Signature: q7cn5px8dk3s8xaziwatmx97n4ugjwtm X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1747898586-122890 X-HE-Meta: U2FsdGVkX1+oDfW3Rga9D1wvQ1loe94OrH+5uZjzyDSEqPJ4zMw2oo+9btb9BYk2km/zn7R+o50D6GfZJXV2/zVN6GeF5HhrUNwzgv8LWFFfcMNGtYt1ybuLfKQrDlgwTM8mTFRDDAU2gCL77hGvBmfEReASCuZ2qd1F7YJdNCp5b5Rf9uvXev47bQLGwFYefLoCmmYXGLlIrHsgy5ABb6mMsOMAcQJmTgPXG5NYUVU+6tLqlpDvpJtE2VC32Rsb5ySvprSUG/afSLhQuylRfOdbUG/dz+QiL/kCqSglXYD7qnUbcCBPqUMJ7TKMvrPc7zVBr8e48i0s8bGRnbiw5IzUCylZLYAiqY91YgoTmbf/mJhsDI/Ka1ro+17tqd+xvzJm9Dg3iuEb72uLPyxmIkIUiztKiIKwpCAcLUe8OixzzV/VHBbA7d+vRyAG1nlg1jnAFDJu+x6dbSZklJTxu7VYVTuOCTnp0aduHwt2nCQeMlNoef0nzixzhScDLlt7nkYbln5xmSvI57KU9d44krQ+hYMMaPTXUWBvjFL43/kHWmFoMmBvzX1qARLMWS4H9lGghPfm1xcgUGnIk6hNin4eH/x4ABgM3GGg/RaRlHIj+XNBIQ6CHxeeN6cgePTPneu9SU0+rtBAVti1YhWaW4jJENLDdIg1f5nTOlDSYl2PlOYVcL1v/sGBVS3OY27QwsYOcbt9+DEPfUI04g7v8odDjfhcly9+gee1Rc0kKaR6K2a4y/jy8iXzsmqCYoKsc3tpTEsjqd8Qtie3KicjJGtBAI+nSBGcFrzl6WOwGvawCwW1Zu4ums+B4f07Sf4DYfzv7Sm2th5Qnc9fZStIMioGRTSvwTBp9u4url5bYcyAXt0rZ0nxFDt5NIzCjTBcUo397MmHdH4qQAUZ56U6ZSuFfU19ykiLQEJJWatexKGekNb/jI/t+KddtJ/WrOyBwMgMDsei2lguDkI1Mcd B0M04XcP 8/8+guKOVUfN9Rhc9Tx1MQRunAlSr9tHV5iCMuL14hS/RTUCEreKxEjn3i5reYGUMtxs0y+fdJMzjGPZwevtlB5wl3vMA3XJaL0HOiQ4tGCv4/+UmfyFWmOOR5TFwn//lM8duMMtQX934Vpq0ie+N72JBIPFBjdfhCfFk5qTy/S2PtA4QeqD/bZCcxR0fE6+oZ0jqLtaaCKfB0ZsJ7KHJp/OrLXXn9LKvhUEr3TvwSWJdAZnx5HPhU8jCBNQUOEuIDRm7cjPZ45dAlH2SDhnxj3JbzerRLPAqB7XRhyFqn/3LUQ5fc6zigkOIdaQOzaOSDMfa6z9fdErX8yB0Vs0QVOnaEwA7sfIP/CdWbNPYlSJGeRk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi David, On Wed, 21 May 2025 at 09:01, David Hildenbrand wrote: > > On 13.05.25 18:34, Fuad Tabba wrote: > > From: Ackerley Tng > > > > This patch adds kvm_gmem_max_mapping_level(), which always returns > > PG_LEVEL_4K since guest_memfd only supports 4K pages for now. > > > > When guest_memfd supports shared memory, max_mapping_level (especially > > when recovering huge pages - see call to __kvm_mmu_max_mapping_level() > > from recover_huge_pages_range()) should take input from > > guest_memfd. > > > > Input from guest_memfd should be taken in these cases: > > > > + if the memslot supports shared memory (guest_memfd is used for > > shared memory, or in future both shared and private memory) or > > + if the memslot is only used for private memory and that gfn is > > private. > > > > If the memslot doesn't use guest_memfd, figure out the > > max_mapping_level using the host page tables like before. > > > > This patch also refactors and inlines the other call to > > __kvm_mmu_max_mapping_level(). > > > > In kvm_mmu_hugepage_adjust(), guest_memfd's input is already > > provided (if applicable) in fault->max_level. Hence, there is no need > > to query guest_memfd. > > > > lpage_info is queried like before, and then if the fault is not from > > guest_memfd, adjust fault->req_level based on input from host page > > tables. > > > > Signed-off-by: Ackerley Tng > > Signed-off-by: Fuad Tabba > > --- > > arch/x86/kvm/mmu/mmu.c | 92 ++++++++++++++++++++++++++-------------- > > include/linux/kvm_host.h | 7 +++ > > virt/kvm/guest_memfd.c | 12 ++++++ > > 3 files changed, 79 insertions(+), 32 deletions(-) > > > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > > index cfbb471f7c70..9e0bc8114859 100644 > > --- a/arch/x86/kvm/mmu/mmu.c > > +++ b/arch/x86/kvm/mmu/mmu.c > > @@ -3256,12 +3256,11 @@ static int host_pfn_mapping_level(struct kvm *kvm, gfn_t gfn, > > return level; > > } > [...] > > > static u8 kvm_max_level_for_fault_and_order(struct kvm *kvm, > > struct kvm_page_fault *fault, > > int order) > > @@ -4523,7 +4551,7 @@ static int __kvm_mmu_faultin_pfn(struct kvm_vcpu *vcpu, > > { > > unsigned int foll = fault->write ? FOLL_WRITE : 0; > > > > - if (fault->is_private || kvm_gmem_memslot_supports_shared(fault->slot)) > > + if (fault_from_gmem(fault)) > > Should this change rather have been done in the previous patch? > > (then only adjust fault_from_gmem() in this function as required) > > > return kvm_mmu_faultin_pfn_gmem(vcpu, fault); > > > > foll |= FOLL_NOWAIT; > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > > index de7b46ee1762..f9bb025327c3 100644 > > --- a/include/linux/kvm_host.h > > +++ b/include/linux/kvm_host.h > > @@ -2560,6 +2560,7 @@ static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) > > int kvm_gmem_get_pfn(struct kvm *kvm, struct kvm_memory_slot *slot, > > gfn_t gfn, kvm_pfn_t *pfn, struct page **page, > > int *max_order); > > +int kvm_gmem_mapping_order(const struct kvm_memory_slot *slot, gfn_t gfn); > > #else > > static inline int kvm_gmem_get_pfn(struct kvm *kvm, > > struct kvm_memory_slot *slot, gfn_t gfn, > > @@ -2569,6 +2570,12 @@ static inline int kvm_gmem_get_pfn(struct kvm *kvm, > > KVM_BUG_ON(1, kvm); > > return -EIO; > > } > > +static inline int kvm_gmem_mapping_order(const struct kvm_memory_slot *slot, > > + gfn_t gfn) > > Probably should indent with two tabs here. (I'm fixing the patch before respinning, hence it's me asking) Not sure I understand. Indentation here matches the same style as that for kvm_gmem_get_pfn() right above it in the alignment of the parameters, i.e., the parameter `gfn_t gfn` is aligned with the parameter `const struct kvm_memory_slot *slot` (four tabs and a space). Thanks, /fuad > > > -- > Cheers, > > David / dhildenb >