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 B9E6EC54E90 for ; Thu, 22 May 2025 00:45:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5435E6B0085; Wed, 21 May 2025 20:45:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F4EF6B0088; Wed, 21 May 2025 20:45:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4097B6B0089; Wed, 21 May 2025 20:45:12 -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 1DA9B6B0085 for ; Wed, 21 May 2025 20:45:12 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 6E84C141AA4 for ; Thu, 22 May 2025 00:45:11 +0000 (UTC) X-FDA: 83468699622.16.6B10CB0 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) by imf29.hostedemail.com (Postfix) with ESMTP id 9B436120009 for ; Thu, 22 May 2025 00:45:09 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=XX4WGA6n; spf=pass (imf29.hostedemail.com: domain of 3lHMuaAsKCH0bdlfsmfzuohhpphmf.dpnmjovy-nnlwbdl.psh@flex--ackerleytng.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3lHMuaAsKCH0bdlfsmfzuohhpphmf.dpnmjovy-nnlwbdl.psh@flex--ackerleytng.bounces.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=1747874709; 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:dkim-signature; bh=e2QytSkDCPpwg2J+zLPrFtZyUnh4IEgPdGfia6szSgs=; b=ZxdWdcvPC7NURDAKrNLoKOUktAW8Rpns50uii3WPlS8C6oS2tD2QDUYN7kNeOFHQRcSquQ pQEP9ty1GqEuGSm3UeASzxHS2Tc68Fk+w5X1HYA7u+gn6jALeZ+EIDlBHEh6S/vPgsuUtO dig+rUjt8Qb13GSDcyHiXpJ5SQkk5ao= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=XX4WGA6n; spf=pass (imf29.hostedemail.com: domain of 3lHMuaAsKCH0bdlfsmfzuohhpphmf.dpnmjovy-nnlwbdl.psh@flex--ackerleytng.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3lHMuaAsKCH0bdlfsmfzuohhpphmf.dpnmjovy-nnlwbdl.psh@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747874709; a=rsa-sha256; cv=none; b=4W2hdQPaisGhmKPG6D2e3JkPGkndAIhXoZ+XRDXgRutxvDya3NVxsJUaMiewUGbCCJHcVJ e4+GDHYrXFn7mtXuK1yFwrtIY1QoutW1A7m7H4RfYJO0MTqY+Dp4qPM+NTjxw0sW1OAt4S bebXwzTlP0lF+Rogd5mIcsp1vxZ+nNk= Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-742c7227d7dso3303477b3a.2 for ; Wed, 21 May 2025 17:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747874708; x=1748479508; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=e2QytSkDCPpwg2J+zLPrFtZyUnh4IEgPdGfia6szSgs=; b=XX4WGA6nXSSA5Cvt4tc7XZqP8SUgErdwS1t/gzJC/B7VFKQUMK+dNjM47gfE1zI5Od 95t06JKUU3p6XmzRshWfg6kYvLUGiTc/jmYlk6fSmjbRkh/0kALizbi7zidiKuBcG2DR BvG4mCoNheRjJc2ijbYyKAYJHIL723lMrFBif25zpJvx/saMduTedFjjdAfEf9sWNqQs 1mS9GBhxAbSGlH96gSor8fjJz1Q2C7aXiqJs8YE9wh/8mqeRVSVJnClJ/mujf/YerHJp 4H0SX2Pm1b89MZsP8DtPKIAxVW7cgq3WfBIkzpmNMpy273YVVSQ+MtKJQGsk9+5yUUQT EvGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747874708; x=1748479508; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=e2QytSkDCPpwg2J+zLPrFtZyUnh4IEgPdGfia6szSgs=; b=q9i6G4IFhIfuwvQSWCvA4YjlyhiqaNJSFqAGmLh3kHjQXMfZ481YU6iJn/ISWPUi0s VqLQYQbNlwGm0ySvNZIHfAeXfFn8LeGzzsZAqARKSUh3fIWnqK6Pw3C0EYWp2aye3NLt XCIYU+MgZSNdu26dVvxAj4gF71AtmwQ1AeHckTC/UhRkF8tQaj0DJyak6FpnKUFpO4qF zMWYlEzAI0NO9wtRDfZ2LhR7Xp3td2mzmspKWWfVxzuwRNrccd4YZQ+Jc4d/SXzhZozw IIdfIVy7x1yqJslHvU2+qLTcw0qFY0rrNgWGnpmefAw4c8Y7CKOQqxjAPI9U2rKF0upz G0Eg== X-Forwarded-Encrypted: i=1; AJvYcCVT4hV9poqeyDNAtzPnU8O6Qr5ZVp5ORtYT7Ai/7Ar9IVjADkGobNC5X3AgnDCUoz1vmsIedcwxEA==@kvack.org X-Gm-Message-State: AOJu0Yx8lKtWtC6BySv/WxyNt9rTJ86epw68auBCnsURPxhFzVDJi1rJ QO2d3A8kUs6oO5wAC+HY19YCofaWNsxdIFLN9ZVFsrgoGBLnYdUAxsEJT4yd/XmlA7fBXEq9CVB ONC6m0ebxDIqhGAIqTmwIQy+EIg== X-Google-Smtp-Source: AGHT+IFvzBeWTUh5GdXBXsBbI9+7zYzvwQbzW93s3iEbnqTFtxwRlhZyi4QfzqwI3OvWFCYUhFWP3qiOfZ1sKTzNtQ== X-Received: from pfht7.prod.google.com ([2002:a62:ea07:0:b0:740:a530:a2d0]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:278f:b0:742:acb6:b7c3 with SMTP id d2e1a72fcca58-742acce03bfmr28445186b3a.12.1747874708464; Wed, 21 May 2025 17:45:08 -0700 (PDT) Date: Wed, 21 May 2025 17:45:07 -0700 In-Reply-To: <5ace54d1-800b-4122-8c05-041aa0ee12a1@redhat.com> (message from David Hildenbrand on Wed, 21 May 2025 10:01:24 +0200) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH v9 10/17] KVM: x86: Compute max_mapping_level with input from guest_memfd From: Ackerley Tng To: David Hildenbrand Cc: tabba@google.com, 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, 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-Server: rspam01 X-Rspamd-Queue-Id: 9B436120009 X-Stat-Signature: ucosruu4sat41nzha7xo8cc59k3dtoym X-Rspam-User: X-HE-Tag: 1747874709-295866 X-HE-Meta: U2FsdGVkX18ixABSH8kpZNxfcuZOeq97uxDCK7EIvLiHEG3jv1jQ1YNLIuUBPFRYg/B/X0VAbEYAI4cmAMj8GrVazRtyvH+WHHHldOKDouKtWeadRYxH7FXmpz5bw+muUH35qVwgnNAtHps5zj9V4X3BDi7a0UIiiH1XNF14Dw7Q+sHiwe2WP28SqWI40gFtq28nvGlzxNExmediOHV5T7vqnNOV6lDY3t+kkfaqUmHn7qWzckmBezOLzO5HcSmT3u48BzKJTMVhRNTuaM8WjfH+NHJyP/7eVnD9dbp4sHWfHDd0V+GbNn5aEbl40nu63BrL4mOrjuYqs17x4bWDs46XRit6BbyL7UrwxXkFCdtom9TxTE+5YL/r6UGtCH1XcMJFai3Gr4FUcM9p34uWbP81HAYCqfEeTyxmNoMyEk40rMpxKr0HLbpV63MElSrofk83ysvfgZeMaYoEebumP6ybxrXwa6ksTkZd92XA9iadb9cVdg98s+5aTrcoszTddtYWpJU+QSdHM365dz4emNbGvK5lJeWSp1iWycYWICEsNvTy/8smWATU4Qhn+MFpa1tDkwq/oAE32OFtAofUsk3Qrph+IaRRR86GO0n+hZNXIB+s8Ee37U5LSx3Qv/Wk/xYAl2sUCb9QElvCjJNXTW08W6ncDYEx8sZ4H918022kWb2uvppj6lf1yex9LswpHdjfpGcy5oKZ5VHnRqRvqcj11bYfz8HOiLRCA4fGv0DWBE8dTfaXRhP1EPkr/2PmiEBgaWTdCA0zcAHBaCT5laCGLbuJOTsP56xojA2loIoc7graZoSSax53H5332TDphG39dLK0zanmOCwMKJ8cTqVD0VvHVHj9Wje8HPhttBNeyZ96uKetaRXX+8aA4SjbQG2SNtaNzMvwWwGOTWbZrG6lQ5I/v/pQRNcVBK7QS68XLfPdKOgHhzslRF3fNIF59n06Ldzw1uvlQjutkwE xkXim2wq ftwH/kzHqiFNksyreoXlN3AObWaEsDCNekxFg40sG6CqtJjfdCgpKAi/YUZFiyJvI/FwNFDDUs8OYKT5vGedNj3jn4+AX+M8/T/608qzIiQBVU93pu7H1Jyppj18KLOG73eyUMLoiX84KTy5OwYZwFjUblotSWFvrSLYShksFntD+Ljwy1YwO/T6lEYL7lt8qV92re20B32U9kdn2+UGnqfyG4/EvVr+rOyTC35u0UYrhc4WbVWvnCf5PlMpfjWiMGWxnf3abuLfwtPIKlcgk2Ag+KYYRU3qlSpQMW9WanltSf28oQi7gbXiDtoSPcPMUpJZ5PAN2aaazQkgHgYSpo0aKV0YBHvBv+4v247Nt2XdzWNrdWQ75URiKeXUtKsIZZ8QjBFG/XxOB7uIXhWeMv2OqA9Lx9ZukM91ikRvMwepmwKDtMPRqSX7aW5AF4wiWgHYJ/Yy/4s3sVTS2vy9xIVpDne4JSL5BfxN21tqCHMuJ+Yks7j8/J/N2XHpw7nLa4MtiREmjlrVoX3+oSo8FYPrcG2diD5onhIA7hDxCmYJWOmJJGEdWkOOfHrC94SSmNfq1zUTSQGZpwAOsLTtxnCoW0cG8xEUqbeUDyDZP510u10gTkHAZWAx4EBXuK57mjwp80copSK9aY0nqk5525WV+wp4yFruynKQGCoRGMTIih2kMdYgPtmBxVFBBBilY6w2FIyvOlAS+0hQ= 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: David Hildenbrand writes: > 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) > Yes, that is a good idea, thanks! >> 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. Yup!