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 B4F27C02183 for ; Sun, 19 Jan 2025 14:40:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BEBE26B0082; Sun, 19 Jan 2025 09:40:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B9B086B0083; Sun, 19 Jan 2025 09:40:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A62FE6B0085; Sun, 19 Jan 2025 09:40:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 880BD6B0082 for ; Sun, 19 Jan 2025 09:40:37 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 039A2821E9 for ; Sun, 19 Jan 2025 14:40:36 +0000 (UTC) X-FDA: 83024462514.28.5A80750 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by imf24.hostedemail.com (Postfix) with ESMTP id 1FEE5180005 for ; Sun, 19 Jan 2025 14:40:34 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=uEQQQina; spf=pass (imf24.hostedemail.com: domain of tabba@google.com designates 209.85.128.50 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=1737297635; 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=yozjyOOVjvWJnBqKBHEFXaWCaRf+nsltbh0VmuJU/AU=; b=j+7UyVodgap5AUAiC3Te0ZG/sw1zDe4+tALsprZz3F5qJpUuNEFL6pC7FlLeRee+1lOUcd roYsmB0Rc/5WQpwgdkmaKbpuxpbB0yaAIHGiX6ZTHJdjFbTFQ+tLKfIyqceFAOKIal5P4v CM/fOqyLGdbCjyqH6oir1b8zTUYW+ok= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=uEQQQina; spf=pass (imf24.hostedemail.com: domain of tabba@google.com designates 209.85.128.50 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=1737297635; a=rsa-sha256; cv=none; b=i77JYaeXrLEoS5+0dfYiPwjIKZQgkPO+fFhm3kT6T44zWt0VYU+Xwk1v7OtFvwNCp6Z9GV 5YoT47rKGo6rUDHE6cYiYhZc2MNT76ovZPVWoQoZK0V7vf7te5Z1isHYbpDyEMsPlkrGOo TpBvTSUAvJ5jjJDViQMd7kyDr6o7H2A= Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-43621d2dd4cso49085e9.0 for ; Sun, 19 Jan 2025 06:40:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1737297633; x=1737902433; 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=yozjyOOVjvWJnBqKBHEFXaWCaRf+nsltbh0VmuJU/AU=; b=uEQQQinagfKKpzV/Bat9sdCFQPMTJlz50MJi+OYq0YSVc+c2r/4lyKdAJP+D3px5qy y9hUxbMaDm7gS8x+xZL39BMaDKETEXb2ZX8a4LTb+c9sY/PP2WUw5gFFxLLpQL8vwSHt c2UIE8t81nWB2Cv0z7rc7arF8p4EzfhKNbdJHV69hFVJSNctJhs2RTDr4DYYyNSby1JH kSlHVywvYTTXssp6K12grKZd337y3xR4QRY0M88w0fMmli8sd+m2pL24bWJ/bkNOWJJ4 zHs5zu1YunPKMsQAy4KNi2+XU9dPQ4LRsn5ZW3HXqQkj7DvJdIFK/2wNkP9/hGrGyPyB /CUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737297633; x=1737902433; 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=yozjyOOVjvWJnBqKBHEFXaWCaRf+nsltbh0VmuJU/AU=; b=OoUuuoKJlPxRumB+sx8lXPuyzNE1pJPL7jLLgebveXoDkXatGo7Qnoh88VdxnG39Ni Hn1mCJVF8VZwYWFE4dsT6bsgqdXZJXje3GXzzjQnIRAJoCrBLsEnHqFwIV6pdH833fuK f4TpAPBX/tIsxqbVjoR2m/7L1w7SnwaeuC0nJ5CxYyIoeMxllTtR7Jqz7QRbu4H08luy 0tQD4g2ofEIXcPbYZjgqLtCWuR1OtyaNnRcdBzTN6nuPBgoO54XKRoYAYY2A0tRriq0o AM1j+Rw3IYgwcMv3Rmsg1obc34CsKaWh0iMuK+w86wq5/geIZP7RZ/4iVp9Wt8NV/Xxi Jxaw== X-Forwarded-Encrypted: i=1; AJvYcCVlPR4z1Cbf60LBS1AqDDkXC8UU5eNFq2jkiy45vXmZrnJVhQfPXxsh26n9MZQIe9MoPzOim1+UGQ==@kvack.org X-Gm-Message-State: AOJu0Yy4OtmNTt8Xn3GFaQhS3hk+ll4zpYh/sUn4cBw7Ap2BHixz0ViU tGg+4JosQSnB1Y8lmOWBbNcy9pHqCorecrrJ9CoEEno5Di+28DNxBYSpeVuA6XGxZ2ajCFqCMdN rTandb1goSa/5gYQZ+rzV/hDSWx1ugncqTDLW X-Gm-Gg: ASbGncubEuZ56DFN/HO8/bli1Pp+Zmfx42x/RVshko2oG6HmAA1pNoiA63pEAEHj0hU CiuJnl+nKJMTu+2qLeiPfhJHOji/CsX1WZacEvmJyVYgMLBAD2g== X-Google-Smtp-Source: AGHT+IF9OmfsYNYAh14f5gkDAcnJeYGVY4k5QEJJiVg1RDgOf/8pqrGM2vF1v1I2qBCXAIbPAuAEY0CEq6gZ99y9swk= X-Received: by 2002:a7b:c8d0:0:b0:436:1811:a79c with SMTP id 5b1f17b1804b1-438a0f45bc4mr1415995e9.5.1737297633182; Sun, 19 Jan 2025 06:40:33 -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> In-Reply-To: <20250117135917364-0800.eberman@hu-eberman-lv.qualcomm.com> From: Fuad Tabba Date: Sun, 19 Jan 2025 14:39:56 +0000 X-Gm-Features: AbW1kvYFuoqqzdPWDUOJX5ZIcY6cxxqPuz3h9GeI5OeA0p3MfrZ12_kY3H6B7Hw Message-ID: Subject: Re: [RFC PATCH v5 01/15] mm: Consolidate freeing of typed folios on final folio_put() To: Elliot Berman 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, david@redhat.com, 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-Rspamd-Queue-Id: 1FEE5180005 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: iuyemroo149syphpscyadjzst19x5hf4 X-HE-Tag: 1737297634-282444 X-HE-Meta: U2FsdGVkX1/wWW9wVOROvAAsMpIqAj0794A+VnNjTZGFLh6IIVrgOJn2Ti9oOjrgroFQBilTnI2U25ePZ8tilBW+T8K1xliIxSv64Qt+fhjx4K+Ne3B2vLcB8CALpr0kNp1IL3wdTt5OSKflvz+3vs4CRfje92go8GE598CZP2IIJG5VTLZL6xFj26lhyMyCaQ/rhBJGZ6fLBuJc5grtLuEcNNNJw+/Lp1bxYr/Ll21gRWcOgtiMJ/CTi10wKip843QLYQZiOyC9RSVzgL9dkbGHYVMpM99d4D5JxP6jBaILhghXac8l/5r3FYGpzWupbL67adLIUhouAAJCK76a7evTNgs46CJwLc6xfPkbteYCy+p9KCdJrFD9084Av0GvFTV0AsqOLc8RcwbzAl3ELsh15Xulb+BEgQsp2KrpFpuI06ujZ7khobPFX7MXzEjrzmW//CTCCpDgEAp8h1Zk6VQZHa2jNj2Tjl/Yem7QK1nH+6nlOfCApO2cF7b2snKH+lkCOBNiQfzc6JGpO/cDvpZavrl/IX1vtiCLV4oE2R/Y3G2LVGO080NXAKCPTTCxODpyMfVjN96YiJ07ph2W+g4EYyEwlviinZDfBxvRFto+MXTVnPQGlZ8EfO7Yc2ZZhWvoOMb5DniL8MPflSAcK7r3lphydPa8nD05l3dekhr7vUJ5Q3EX/XHaLE25S50nM4t5+Pft0yVlRrHreeqek/+ZCv8H2898tUORlVO5tZ8jrayzlN2WWfXDH9A3dHAwtrqBbA0+L9tdTg8sGNGF+EPWVZdlNTkl2BC3w3wzHUHAGg/3fkLapOrw8K6eqqmTLzGK2s+k7RNTLONNoCPRG5PEqh8XoKFolMGT4FM/xQQUxD5RFN3ovtVd5n6KUmjrV/rOUzGGPxI9YbNSlxG4YC7EXjTOeMJjVRMsn++BEE7BQk6CtjHdv6BpQUyq6HpIBPt4x7xv5ISSvIx0Gqq 88zWvaQz TWfJTAYZXkMUFfiAZPOfGwpSODPG8ywfuuZCZu6NQsUH/KzJCkiT8HZkh+AiF0fVdr1k2A3wzdNHkW4iB4qjK1Fqa/DX4dhe8yPQCXp6HW4JxZvLviv8ZSXS9qHcdYpNBvvu6VRP7OUCmpkkEJ78TmeYPqpEnPRRZJeyLUSEPn+XVOdA6eAqogyaX8ycKFqhXVz7KJ7K7qwRwaS/s3JbKwVGQMO8YcpJ1Xhi7UEO24YaM1kTA9rsYJQEk5T833L79vLmuG3DjJVgyGcjfTQPBn6zTkFWqH1thSmp5gFwJWBswTKHG/6Y024sh84jWgkYGQKjMZYmCdAOsDy1FtaRir5A6ZzAmibDQK9loQMyUXdaCOxE86lbd3HEiw3tZaECEFltA X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 Fri, 17 Jan 2025 at 22: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. > > You'll probably want to do the same for the PGTY_guestmem in the later > patch! Thanks Elliot. This will keep the kernel test robot happy when I respin. Cheers, /fuad > > > + case PGTY_offline: > > + /* Nothing to do, it's offline. */ > > + return; > > + default: > > + WARN_ON_ONCE(1); > > + } > > +} > > + > > void __folio_put(struct folio *folio) > > { > > if (unlikely(folio_is_zone_device(folio))) { > > @@ -101,8 +115,8 @@ void __folio_put(struct folio *folio) > > return; > > } > > > > - if (folio_test_hugetlb(folio)) { > > - free_huge_folio(folio); > > + if (unlikely(folio_has_type(folio))) { > > + free_typed_folio(folio); > > return; > > } > > > > @@ -934,13 +948,13 @@ void folios_put_refs(struct folio_batch *folios, unsigned int *refs) > > if (!folio_ref_sub_and_test(folio, nr_refs)) > > continue; > > > > - /* hugetlb has its own memcg */ > > - if (folio_test_hugetlb(folio)) { > > + if (unlikely(folio_has_type(folio))) { > > + /* typed folios have their own memcg, if any */ > > if (lruvec) { > > unlock_page_lruvec_irqrestore(lruvec, flags); > > lruvec = NULL; > > } > > - free_huge_folio(folio); > > + free_typed_folio(folio); > > continue; > > } > > folio_unqueue_deferred_split(folio); > > -- > > 2.48.0.rc2.279.g1de40edade-goog > >