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 8C258C0218F for ; Fri, 31 Jan 2025 09:03:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B70FE280074; Fri, 31 Jan 2025 04:03:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B2125280070; Fri, 31 Jan 2025 04:03:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D778280074; Fri, 31 Jan 2025 04:03:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 7A415280070 for ; Fri, 31 Jan 2025 04:03:31 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 01B231A0992 for ; Fri, 31 Jan 2025 09:03:30 +0000 (UTC) X-FDA: 83067158622.27.4CA8D02 Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by imf06.hostedemail.com (Postfix) with ESMTP id 30AFB18000B for ; Fri, 31 Jan 2025 09:03:29 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0j5ksDMO; spf=pass (imf06.hostedemail.com: domain of tabba@google.com designates 209.85.160.181 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=1738314209; 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=4Mo+GC6yFA5Ztpsio14NKJ1phuDePDI7QDGE48Y413s=; b=drotCSaZPNaXLbP2pLfZcop0kpvIJ+Pz+wVD6SeTySF2CcsfG3YA9A3C7ccgwt77kR7COf e/hftwPLcczi7WgxQv2wxOsHXahbaBk5+cVmdsBaPa0Rn7u+1YgkPJvduHKfeJKy+rzdJu stnp6vqrG4mDvLNMHg+Cw5v26gQ96sw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738314209; a=rsa-sha256; cv=none; b=WaJE0nhtI3yQqehpt+PBGgPR5U99pbr0ZTnPCmisM1ewkHJ52Nn0qQnulCktpovjrS6uKb BiCbP9omGJc6ca3aZgoED5H1sPxeq9wwgdEXBhbt8DjNYRInJ3nxeD/etn8k2N86Zqf/lb YUiFoKy3rvO+N1Y2HKVzE4RQXXjolYI= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0j5ksDMO; spf=pass (imf06.hostedemail.com: domain of tabba@google.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-4678c9310afso112631cf.1 for ; Fri, 31 Jan 2025 01:03:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738314208; x=1738919008; 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=4Mo+GC6yFA5Ztpsio14NKJ1phuDePDI7QDGE48Y413s=; b=0j5ksDMOdt6bBJdGrKdeAaWvQ5G5rxxcPz4ScoECMBRRLxOvv0ixYQs4Gho2+EjWv/ ob8lOYkU6b8FUPVwBfE1kp2Bl6qRB3ITtvxGcx9frmhTon+UbPTOjQ+R5DYXHhANFYLI EPHIKCyns3jY7oDbSBhEFh6CNQF6j9a7PwhNLmMuxXz7NptEvkPJGzgQ65EXCWjMD8K0 tROAuC3QG8un6V+elBPXHsSydgVNGnzrn81SRdpw7Vr3WQO/+2d3HWk3ePDrZc2xbKTC LgErJuBBSAMFruFTjwpUiTfDsKO5l++iPkZH5w5uyOGVM1RSI54iZCA7CGKunqPEJpnq ZyeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738314208; x=1738919008; 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=4Mo+GC6yFA5Ztpsio14NKJ1phuDePDI7QDGE48Y413s=; b=KYCB1ziA8i2UWnk/YBhn2rVZi7j4gdFdj9pyXSkHhyr1FJlud45JPcydjludNluLzR rnHd2B65N1XKilzggs1Bldio5N5NsTKd0+iauM8LaXcxwrzTR2nRJwy4atC5d0VUr4uT CnGEqcHO2G0bIGo8yZAvqbmIPy0GIomxC772sFEqx4mChlBQs6WYmdYd8M2HzjEMrWR8 sbsi2vgs4eQygATJzdq/YXvLS2UWUiqNACoQAsWi7jxmASMwo1e4LQM8Eqh7MkOIjdav 1GpAigSvep9xvy1s/pq0NXzr7uI1xH9pQdZ3wtGld8A2y/XO9muCT4bE5hl/l4cAQJUE fT+w== X-Forwarded-Encrypted: i=1; AJvYcCUw/O4uh+4lRmLvWXvWeIMhq8dZZyIT1Ti6dYi8HpNcCVJ1fhjNaXxiIOVnS00olXw9FrCDrVYvxA==@kvack.org X-Gm-Message-State: AOJu0YzleSaX+FtIPD42MG9hPeY5oWEddq4+DScTUrnorvmA4fYBW2t9 jPV1ikKc+FTnTkHB4z47scHc5Y0wQpaBzOkcmd7t69mkbdXu5ReZTCo/3ksAb7ta/WeRv+FUiZh s1cUqJjmkqfBC7pLyJu31k1qSEt+VGI1JIosV X-Gm-Gg: ASbGncvgIEhmDqYoEJV9n39zu+gq7l0nBsewAaOyYyf/BfvbtWIIBbvLsqOmoVb4dna vtBjOxOIGGynIN5eVx9WNGnnOHgYmf/Ygckk0jcd0gG/mtfBgzknBnHtszDw+SPVKHJAuzZw= X-Google-Smtp-Source: AGHT+IF4Dq59qxo2shTk8KrBF3fx/0sCwNmRYQy/EY0ENabK1dLq192kfb/CDGibXmMRQgVHcGeBwEp/yEIpI58g3k8= X-Received: by 2002:a05:622a:1c12:b0:467:7c30:3446 with SMTP id d75a77b69052e-46febf30f42mr1801021cf.25.1738314207981; Fri, 31 Jan 2025 01:03:27 -0800 (PST) MIME-Version: 1.0 References: <20250129172320.950523-1-tabba@google.com> <20250129172320.950523-3-tabba@google.com> <0ca9f444-b63f-4259-9462-014e0d0f1a74@redhat.com> In-Reply-To: <0ca9f444-b63f-4259-9462-014e0d0f1a74@redhat.com> From: Fuad Tabba Date: Fri, 31 Jan 2025 09:02:51 +0000 X-Gm-Features: AWEUYZkjvahAkrTgFgE9-yfy_FHWS8vY1gGnGfHZezzGJRobh2nD57PjGovCmDU Message-ID: Subject: Re: [RFC PATCH v2 02/11] KVM: guest_memfd: Handle final folio_put() of guest_memfd pages 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, yu.c.zhang@linux.intel.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 Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: zs9rba8p35oe4tdybginr936uuk9pt8c X-Rspamd-Queue-Id: 30AFB18000B X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738314209-181760 X-HE-Meta: U2FsdGVkX1+NuMM4JZePcCBE2JsJLq/8mvi8rsuiItlgt3jfw3wEwWjcbXpEUOLPgQxv7OJCnll7Kd+KDfQEJyQgDGNMDKiu99v1QVFDIIwaHu3lVL5sdX7QrrVWYwDiv12dWdHhwPoo13/4R30EpW5YymHhda2oALzAm+ZBW0Sq8GAy9/d402TjJEPFgQoJAufOIpiJEQDwvbdUDuV7lApTPf77pxim0NVG5tCkg372EoZ11iA6s4YkolVthgUwxufCu8tOM78CiuxWCMIr7XTpyQii2C6JfQ7LxTZG3y5mUKPMifw8nWx2EB3KYVwQ3GkcGUBD2nq6qqV4X/4WCqEZ0FcLjEtZElwim9kBm5xqnBqJ/x7ftjNHHL/ZVd9gIstTV0Bya44lR7fl02G0ZOQcab+5SK+8s2GO0Hq5lg9xe4QZablT4Y10/Bpj71QNAQZwCeby4s9hLbqILMebiEzIw4OVjY3ISbxnVES4fTZZLsfV4G2rFKyNt9oe8UgCCv2WL/tc3jB+Z5KZg7xMDiN3Z2vL5VYhfQmuK8vKP3fdRdTf6iKnjaBrjckl+ttArPQ3frKFnXPsHxryHLrnX84OvprJ+0W6NvSoaiqYF+jVaVKrfFmW4KonCQQKN04qom2GiOMjqA/NeXNrt+E+MawQRhObZdhPjUBfC/jXCBSdlPx/DrxoGLjl2aD6weL3wfjONBeiyGNf+p+T1vYt8Gn5CkYM+/YrQffAlAULw4AT68ueldZW37WZlSwMbaVqvQDH5lkHZYPDO2cImu/oGy1RvesyU3Y3T4z0LmXz0fzWIaT6+BlCVG4FsFsHAbzI0j99KsWMXp11iNrZY8FJG7cjiEdz4AORPSTJyy3XmH3BCVOx1CGp2n2FY9pxrFHtVTo/OlWg8Ln/PAAEBRGCCeMonp/EUFC2uLjpBSUiZ2O4sKUqAbO9bxX95MEOXrKx4hcmlw2yCl7qBSVUZ55 Ou4Yr/Q6 6t18Lz7Ni5cPrZiCYT5rQU5obNmVuMwke3YqhsWoW4DvPxCtSRT7Ozx1ooI+7u6c1X69N3MyEMTOFpaoq/qJ1RfZUqLb8uFXmUEQhF23CArFPGW5A709Gv9BkE8VOoz+MlHYTcV4nR893zCE7ZDrmTestPfpbuMc0a1Jw/yt7B7Kod9rFQp5D094qJE18GeCEuUVGkMdALUS08ig8/zkuFArseuFmhZ9dkFheWM4+hYq8mlDgP/8izym6Gs++oY3SHOI7uKLbCsUkrOAoxyvhH5COx8uXNckLogjsh/jO679jppPnTQDMsvZGwJpmwCRNA5T5/r0VWTA7J78ydtuPTxxnamJ80bdGPa+4esMxdFU+FzE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000028, 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 Thu, 30 Jan 2025 at 17:16, David Hildenbrand wrote: > > On 29.01.25 18:23, Fuad Tabba wrote: > > Before transitioning a guest_memfd folio to unshared, thereby > > disallowing access by the host and allowing the hypervisor to > > transition its view of the guest page as private, we need to be > > sure that the host doesn't have any references to the folio. > > > > This patch introduces a new type for guest_memfd folios, which > > isn't activated in this series but is here as a placeholder and > > to facilitate the code in the next patch. This will be used in > > the future to register a callback that informs the guest_memfd > > subsystem when the last reference is dropped, therefore knowing > > that the host doesn't have any remaining references. > > > > Signed-off-by: Fuad Tabba > > --- > > include/linux/page-flags.h | 7 +++++++ > > mm/debug.c | 1 + > > mm/swap.c | 5 +++++ > > 3 files changed, 13 insertions(+) > > > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > > index 6615f2f59144..bab3cac1f93b 100644 > > --- a/include/linux/page-flags.h > > +++ b/include/linux/page-flags.h > > @@ -942,6 +942,7 @@ enum pagetype { > > PGTY_slab = 0xf5, > > PGTY_zsmalloc = 0xf6, > > PGTY_unaccepted = 0xf7, > > + PGTY_guestmem = 0xf8, > > > > PGTY_mapcount_underflow = 0xff > > }; > > @@ -1091,6 +1092,12 @@ FOLIO_TYPE_OPS(hugetlb, hugetlb) > > FOLIO_TEST_FLAG_FALSE(hugetlb) > > #endif > > > > Some short doc would be nice, to at least hint that this is related to > guest_memfd, and that these are otherwise folios. > > > /* > * guestmem folios are folios that are used to back VM memory as managed > * guest_memfd. Once the last reference is put, instead of freeing these > * folios back to the page allocator, they are returned to guest_memfd. > * > * For now, guestmem will only be set on these folios as long as they > * cannot be mapped to user space ("private state"), with the plan of > * always setting that type once typed folios can be mapped to user > * space cleanly. > */ Will add this. > > +#ifdef CONFIG_KVM_GMEM_MAPPABLE > > +FOLIO_TYPE_OPS(guestmem, guestmem) > > +#else > > +FOLIO_TEST_FLAG_FALSE(guestmem) > > +#endif > > + > > PAGE_TYPE_OPS(Zsmalloc, zsmalloc, zsmalloc) > > > > /* > > diff --git a/mm/debug.c b/mm/debug.c > > index 95b6ab809c0e..db93be385ed9 100644 > > --- a/mm/debug.c > > +++ b/mm/debug.c > > @@ -56,6 +56,7 @@ static const char *page_type_names[] = { > > DEF_PAGETYPE_NAME(table), > > DEF_PAGETYPE_NAME(buddy), > > DEF_PAGETYPE_NAME(unaccepted), > > + DEF_PAGETYPE_NAME(guestmem), > > };> > > static const char *page_type_name(unsigned int page_type) > > diff --git a/mm/swap.c b/mm/swap.c > > index 8a66cd9cb9da..73d61c7f8edd 100644 > > --- a/mm/swap.c > > +++ b/mm/swap.c > > @@ -37,6 +37,7 @@ > > #include > > #include > > #include > > +#include > > > > #include "internal.h" > > > > @@ -101,6 +102,10 @@ static void free_typed_folio(struct folio *folio) > > if (IS_ENABLED(CONFIG_HUGETLBFS)) > > free_huge_folio(folio); > > return; > > + case PGTY_guestmem: > > + if (IS_ENABLED(CONFIG_KVM_GMEM_SHARED_MEM)) > > + WARN_ONCE(1, "A placeholder that shouldn't trigger."); > > > Does it make sense to directly introduce the callback into guest_memfd > and handle the WARN_ONCE() in there? Then, we don't have tot ouch this > core code later again. Yes. That would simplify things. Thanks, /fuad > -- > Cheers, > > David / dhildenb >