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 9D52FC02181 for ; Mon, 20 Jan 2025 10:51:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2FF86280002; Mon, 20 Jan 2025 05:51:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 287F3280001; Mon, 20 Jan 2025 05:51:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 101A3280002; Mon, 20 Jan 2025 05:51:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id E1BCD280001 for ; Mon, 20 Jan 2025 05:51:04 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 89553811CF for ; Mon, 20 Jan 2025 10:51:04 +0000 (UTC) X-FDA: 83027512848.08.088F348 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by imf24.hostedemail.com (Postfix) with ESMTP id 98286180006 for ; Mon, 20 Jan 2025 10:51:02 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SVcBQR2a; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of tabba@google.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737370262; a=rsa-sha256; cv=none; b=TgwicHFxsiz4g9qMZ0+XzPKLOSnn3HYZJcDhlBo3TooVy6OIhshzBGg7ic0d4AIwqUOIZI aKhVEpnLzVYSBbuxahIs9hD8wYebw4Fdi5At1lX763VQ7Zfcj9G9iVrWChhIQ2cIE2sZG3 OH6K7H16Fci8iPtj4wOQw39P1P/zcSE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SVcBQR2a; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of tabba@google.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737370262; 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=s5H5LIU4qMPyXOp3BUS10vnMoJyOYoKaSAlPzzLNL4M=; b=N56fr+75AGP5K+ke09xYzFgWL3TCN64ZR63vkV/3UdqFPrnKbr1q4yNIG6+Zl5Z+ZR8Io3 R0bgZ2LPu7ZJhlQPFQ4/uSGMHhQYtN6ReDUanxfIQHpFPHb5sf46XK3jIp2uFq7jsfBNY1 eh/keU9lCN+TQPt6GRmrvigrqhrcuhU= Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4361d5730caso64195e9.1 for ; Mon, 20 Jan 2025 02:51:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1737370261; x=1737975061; 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=s5H5LIU4qMPyXOp3BUS10vnMoJyOYoKaSAlPzzLNL4M=; b=SVcBQR2acjukGvgHXSTGHCj4GZcUwzIMN+KT04cwKwFQckLHyH88CWenEAiEFeI6sK idgRipy6Ykg6fHimu6c++f2cSNn9l82UxUsz+bEA+nueaBBRvWHjlW/4QcFZ4D99TfJg P33gQmHYGIAt8989ISEQL7Pcg3MafoUJ2JyPAUfC3bxtdHf6PJPtFt38Mpr2aHJR7Esx Zavf5edr7r5ON1QKKYSADnc4SYFx/E7qWEwMhCy/j1M+kdMy/fiEh8wlLf1nV38/rZ/B w8sKCdtyPkP4RpKz74qXPPrd2VY2bZmq3ZNbIIMO3jnS/G27O63IZSuVZo0ce5eC83es GzRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737370261; x=1737975061; 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=s5H5LIU4qMPyXOp3BUS10vnMoJyOYoKaSAlPzzLNL4M=; b=cCQH1W10iLwMjFQk4zvpbLi17PuN+WT4YNC8SQ89+olq5VkPoFSq8DLQSLhspSduKp FoQeULRAMyfVKPxIXIUfV1gIlNcxY00N+1NadElNqmSk3geX2yOO8Xw7IFGoZTFdhpb6 PD0FU2NJVkNy5r44rcXcbqjrTQpicLKDBAr6ybuGKWso8JK+fJwk3fV3Uc9OfKav9+az 1vdJowZ+PW2ilGUTWFyg4pFzLl9sVTvVsJHpoO2l/60QdP7uKmPnfakVkpc+aNmws5PX tMDV+lPGLzwVpGHKeH8yj7hUjxrn+et503kZgFt6K3LgKK3zHheSHg0qCeZa+4UHLQP8 4anA== X-Forwarded-Encrypted: i=1; AJvYcCVNq5U5Q0f7IQfH3Q4Tw9Vqgrom7FzyuCWFzlcO7mxBDU2MSUjoyB+1EAW8ByhnIDxwJOeWqOnLrA==@kvack.org X-Gm-Message-State: AOJu0YxK9h+HBAWGUNS498ZApOV3e5Q+UmWUKNFa3pXpAtk7LuuTwDYq LEm7hIJHe3D7pVJ5XHxFZWdRc1nXoxZHM85gaujmTjtTYMO4BW1ny6KCbF5ldhVZC6Yp4Y6CGbK HT0u9p0Ng3tj7+Qlo23qF6onCovb8aBvaAZod X-Gm-Gg: ASbGnct1s4lJ/npZunqndYVCS/dwfl6WQQ0d+7I4+CVPAqW07co0ehq5dmdK+epftaY 5tdBwzXvD1fmQUeRgG4gNlhJQtB61YtgQMwWZfZhIXt9n34ugFg== X-Google-Smtp-Source: AGHT+IEzNsEj1CxoVR5NuXEYe8cZnsd+NHTYukFCYHMCb2EMxJixkmeuxRF1VGPvolD7Y1wWdi4bhHY09HWCTsEiARo= X-Received: by 2002:a05:600c:6048:b0:434:9e01:cac1 with SMTP id 5b1f17b1804b1-438a0f45ebdmr2278645e9.7.1737370260900; Mon, 20 Jan 2025 02:51:00 -0800 (PST) MIME-Version: 1.0 References: <20250117163001.2326672-1-tabba@google.com> <20250117163001.2326672-2-tabba@google.com> <20250117135917364-0800.eberman@hu-eberman-lv.qualcomm.com> <0d09c028-d5ce-450e-ba04-b402e45aefea@redhat.com> In-Reply-To: <0d09c028-d5ce-450e-ba04-b402e45aefea@redhat.com> From: Fuad Tabba Date: Mon, 20 Jan 2025 10:50:24 +0000 X-Gm-Features: AbW1kvaQIRmEkeihSSWQpxU20QBn_-580JXZ_KHQGjFHDgYBmUe9ZuO86rtMitg Message-ID: Subject: Re: [RFC PATCH v5 01/15] mm: Consolidate freeing of typed folios on final folio_put() To: David Hildenbrand Cc: Elliot Berman , 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-Rspam-User: X-Rspamd-Queue-Id: 98286180006 X-Rspamd-Server: rspam10 X-Stat-Signature: 15s6sq3iscssgec1y77ox1qao76hoesf X-HE-Tag: 1737370262-620124 X-HE-Meta: U2FsdGVkX1/Wm/TYWfvBFLNdHsJQSjiQPaXkCCOff1sGRiHGdyKx1AOjGHPGplzFOTvXEL/EsnKiTprS2gCpc1CBw/WNYyz+l01WZkbCPTQNud7q7KN23VyI6boAEsibcBL1WtwTtfb8YvjCZx0XaL35wHVeNjkK/uD3Onzq1dtttCfneipPHwlgvUc+pSujX/r/LlzUrvtI8I44lWvWsNsq8maJRMsbWebAGieUB1uc7kgblMZf+pGkjlRRsV8DrvUrjCWAj/qE5swtnHfIyVPoMyte2fsxcD63amPeDw3vF4s9POliQekRUZEJ7aYgOFG4xSdEf0zym4hVKJx+27EIbWKa1kHbDg4zCyap1ZWbthUSGr5/eUJ56nFN0+l2l2mkCWf8Y0KKIxKk9nX6Srm6ON9/bDhcd5A7fcZFg6hZSws5u9pZrlyv63YgiLWTFhyen6iPoVkCHdgc+WECum66d4TMW59CgQ2+IKnLan7U2Nz+m8AiHKvvdSG8exIt/QgsHG8iP55z48JIkeV2rCc9RDNjw2eZtyTYa9zbJeBQRlFTTrWjNVNdYZhhTTSeSQtI+/J9Op60kFh7hXHYSKTuNHzN0ZNh7rAyT3q4cNOcgG50CSXOGHiXHdbkuHU3fzau11p17X7jl9JILNpiyIQ5k31QKy9PUFR5KBPOnPYBDxaJwuFdonXcFbLF5FTcknxzM543rhbZjggPy700OHnub2Plsl8otFVgFleL6I4LDLHw84LYrTdeALNx6mJ2a90C9L05kKZAtHrhPuNKQ1wBR8IWfjJFNhyZt2VtY7cNGA2wl0fu2YFDiQyHJ3p6OzeTaaJUx6VEfVbblbO5ToXu+kCczZ6QrJypLHogMhnh22FnGl/BX7sFDDhL+unPTZosAqj1CNSx5qzUJzcI2KVIdd9lv+gdvxQy/zqAlTVFEPbxHUzu5yJngtfoZO7B5q6YAgReIcUNG9LRUCy vCMX784i pHrvCc1dHSw3cpkFMv/j18JgCPjjMUpc/RlUmyCotYdVRVMbhCr+h4ck5xfl1WjfR3luWpH+0PWhbf4BjytqDk+cATijY9SRY+b2EptW5Mo1mXHY3euxrGnN8XiMtAFqSZ5dEjnQJZcY1fFE54oNCxT0EkoGNT1OGs7CQ1QFDpn53mMJll7v0E7++tUmPNifD5ZAXF9acLexWdktUprfqc+TZHTdWGZyZ5miH8USbMmp2ynVPW6+0nG5Tmzq0tiGvA5EyS2N9fHrcK9tfsDI86607omMrqhfpsxfTJsQd6fPhR1kaYZqu8CtLJsdH/fyungA++BJ6gesHzQq9wB7pcN1XW6ZUoHkBF68whY2rksbDBdg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000007, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 20 Jan 2025 at 10:39, David Hildenbrand wrote: > > On 17.01.25 23:05, Elliot Berman wrote: > > On Fri, Jan 17, 2025 at 04:29:47PM +0000, Fuad Tabba wrote: > >> Some folio types, such as hugetlb, handle freeing their own > >> folios. Moreover, guest_memfd will require being notified once a > >> folio's reference count reaches 0 to facilitate shared to private > >> folio conversion, without the folio actually being freed at that > >> point. > >> > >> As a first step towards that, this patch consolidates freeing > >> folios that have a type. The first user is hugetlb folios. Later > >> in this patch series, guest_memfd will become the second user of > >> this. > >> > >> Suggested-by: David Hildenbrand > >> Signed-off-by: Fuad Tabba > >> --- > >> include/linux/page-flags.h | 15 +++++++++++++++ > >> mm/swap.c | 24 +++++++++++++++++++----- > >> 2 files changed, 34 insertions(+), 5 deletions(-) > >> > >> diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > >> index 691506bdf2c5..6615f2f59144 100644 > >> --- a/include/linux/page-flags.h > >> +++ b/include/linux/page-flags.h > >> @@ -962,6 +962,21 @@ static inline bool page_has_type(const struct page *page) > >> return page_mapcount_is_type(data_race(page->page_type)); > >> } > >> > >> +static inline int page_get_type(const struct page *page) > >> +{ > >> + return page->page_type >> 24; > >> +} > >> + > >> +static inline bool folio_has_type(const struct folio *folio) > >> +{ > >> + return page_has_type(&folio->page); > >> +} > >> + > >> +static inline int folio_get_type(const struct folio *folio) > >> +{ > >> + return page_get_type(&folio->page); > >> +} > >> + > >> #define FOLIO_TYPE_OPS(lname, fname) \ > >> static __always_inline bool folio_test_##fname(const struct folio *folio) \ > >> { \ > >> diff --git a/mm/swap.c b/mm/swap.c > >> index 10decd9dffa1..6f01b56bce13 100644 > >> --- a/mm/swap.c > >> +++ b/mm/swap.c > >> @@ -94,6 +94,20 @@ static void page_cache_release(struct folio *folio) > >> unlock_page_lruvec_irqrestore(lruvec, flags); > >> } > >> > >> +static void free_typed_folio(struct folio *folio) > >> +{ > >> + switch (folio_get_type(folio)) { > > > > I think you need: > > > > +#if IS_ENABLED(CONFIG_HUGETLBFS) > >> + case PGTY_hugetlb: > >> + free_huge_folio(folio); > >> + return; > > +#endif > > > > I think this worked before because folio_test_hugetlb was defined by: > > FOLIO_TEST_FLAG_FALSE(hugetlb) > > and evidently compiler optimizes out the free_huge_folio(folio) before > > linking. > > Likely, we should be using > > case PGTY_hugetlb: > if(IF_ENABLED(CONFIG_HUGETLBFS)) > free_huge_folio(folio); > return: > > if possible (I assume so). Yes it does. I'll fix it. Cheers, /fuad > -- > Cheers, > > David / dhildenb >