From patchwork Fri Nov 8 16:20:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fuad Tabba X-Patchwork-Id: 13868435 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 91BA8D5D69B for ; Fri, 8 Nov 2024 16:20:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2AC796B0088; Fri, 8 Nov 2024 11:20:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 235756B008A; Fri, 8 Nov 2024 11:20:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AFD66B0098; Fri, 8 Nov 2024 11:20:49 -0500 (EST) 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 E14CE6B0088 for ; Fri, 8 Nov 2024 11:20:48 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7ED8D140E27 for ; Fri, 8 Nov 2024 16:20:48 +0000 (UTC) X-FDA: 82763440956.02.F05F3D2 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) by imf05.hostedemail.com (Postfix) with ESMTP id B35F210000C for ; Fri, 8 Nov 2024 16:19:36 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ISlgRr44; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3XDouZwUKCMk8pqqpv33v0t.r310x29C-11zAprz.36v@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3XDouZwUKCMk8pqqpv33v0t.r310x29C-11zAprz.36v@flex--tabba.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731082721; a=rsa-sha256; cv=none; b=6+B/RM0NZ4TeCKJwUVmnQQTzJM1iAbYTpHqwiymDwZR9FGMzOl2U1cH/8ST3c0t+FT3jSp Bq5ZwiiKePECZkvZsREArB+Ue0KX0KuA/ieA69ScjF+Votmd3cAkVnoLDqJTo548/oibrH 0Mb0TsIYS1uskwIW0Wk7eNeXWKlaQ4g= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ISlgRr44; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3XDouZwUKCMk8pqqpv33v0t.r310x29C-11zAprz.36v@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3XDouZwUKCMk8pqqpv33v0t.r310x29C-11zAprz.36v@flex--tabba.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731082721; 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=Kl2W4EtzrNZ1cJuCyrufhU34bgPSAtiEFnUtuMhqv3Y=; b=TwklA/FUg+N5MApQRKDvs5M27hyeJmwX6HgAywklb6WhkBm8xBKS8gvz1I1cQMr/d4Wmn7 yTsBklKWNhwFxqWm/INFtiFJG7MT0dEgYleWLbptxpMB6kFluTJOFJHCV4WmztLbSyoG3Q uRFYWUcNS0qDlnM0gwO4dF3XAeRTwwI= Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-43157cff1d1so16466895e9.2 for ; Fri, 08 Nov 2024 08:20:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1731082845; x=1731687645; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Kl2W4EtzrNZ1cJuCyrufhU34bgPSAtiEFnUtuMhqv3Y=; b=ISlgRr44Hj0r+3d4IIcUn12Eo5UOcg6BNahkptJcFuaMUyE7V789NTKXdbVP/TQXfX DNnbRexyFmnDn9xLJBtAJaYAt3zSJpMs2YJYOF0608uusPEBVuYf+dZtQ2VIdQv6XlyW h7ptw7X86V4MABBrlWMmKsVTdun3cv0XvS+CVxRuUZmz1BI62TbbmA9R/pEDkbcOa5xe zLEhNFwHixvhIIlIr5L5sNDNr6CfYYxvkOZrl51jFE73PidHRUgacnSpl8fmcTFIHhNs pEFdTyvE0jzQph3uicVa333fv2VB5QrL1CoRY21B/E492HqDY6fHd7Cf6eahkQ6dixGL ecbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731082845; x=1731687645; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Kl2W4EtzrNZ1cJuCyrufhU34bgPSAtiEFnUtuMhqv3Y=; b=AxSftM86KR67sMRFjYflAODdCFvhHEuV9MpBouIQrBx/BKsayIxhB8Qq7SMuZW/AW2 Dq0k8hdHv3BtBjpbRR75+P6n1fhlGD4svaN1hTptzrkuOXlXn49IrbLRmojSz0hnGTqw qIJUPtJjRo6FR/FPiI6LY9D8PnUxkSDn0ELKrjf4hE4JtYkMV0oONMVXr2ge4vEGTMHA 4eRYGE65RtyEo3ceDt2V6xmm9ENACBerw7Vhq8w3AmbLllhV1x3V9TAUYUJvt9EoXETJ CsL16tCOE3rJdMitHlLvr8eE2jNleHY3mBZLVG3NPd9+Ea0K92ClRPOpqjgt1Pw+sC6S syww== X-Gm-Message-State: AOJu0YwluYnQQNskEZgYWnUc7Wl8sxfNmhZVXrky5Ctx1YG/9zRqAytM FmImByE5oMiWi6UC+1PGTqnws686sw+rOtZXzONhdhIANuyi87Ghuu3DkVOLmeyY75nf/RF57Ng rQ8NTrGjFpvVUBbV3aYBJKb13/PXgjxRu+WhnThNhS0gxhWUfnZ9lWetu2GykcixyBBckFD9O7J Ah6RZAN3cpnlUEAa6avwlFxg== X-Google-Smtp-Source: AGHT+IGpbTMLKH3Z//v+mS0oCFNNN5K9KgwxRuxW+vMV7GiwPseAyRHtw03enomMXvu4TmjvVSMQK6Mc+A== X-Received: from fuad.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:1613]) (user=tabba job=sendgmr) by 2002:a05:600c:4a21:b0:431:43e6:adfc with SMTP id 5b1f17b1804b1-432b7527703mr24725e9.8.1731082844948; Fri, 08 Nov 2024 08:20:44 -0800 (PST) Date: Fri, 8 Nov 2024 16:20:31 +0000 In-Reply-To: <20241108162040.159038-1-tabba@google.com> Mime-Version: 1.0 References: <20241108162040.159038-1-tabba@google.com> X-Mailer: git-send-email 2.47.0.277.g8800431eea-goog Message-ID: <20241108162040.159038-2-tabba@google.com> Subject: [RFC PATCH v1 01/10] mm/hugetlb: rename isolate_hugetlb() to folio_isolate_hugetlb() From: Fuad Tabba To: linux-mm@kvack.org Cc: kvm@vger.kernel.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, david@redhat.com, rppt@kernel.org, jglisse@redhat.com, akpm@linux-foundation.org, muchun.song@linux.dev, simona@ffwll.ch, airlied@gmail.com, pbonzini@redhat.com, seanjc@google.com, willy@infradead.org, jgg@nvidia.com, jhubbard@nvidia.com, ackerleytng@google.com, vannapurve@google.com, mail@maciej.szmigiero.name, kirill.shutemov@linux.intel.com, quic_eberman@quicinc.com, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, tabba@google.com X-Rspamd-Queue-Id: B35F210000C X-Stat-Signature: heqirh3htisdtaegeoc95kowb7kx4rww X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1731082776-851032 X-HE-Meta: U2FsdGVkX1+MlkNhPu9RcUX3nA5POPU4zTdxw27m3NjKz1iprflLVQtH+u36DoXzN9JjpzZ45L9bsz/g9r/cSVPdnst8N9m3NL3SP9/vdRNtTBQFJm2lsDdvJnqfwBEEyQxyLvnOz9XlSKv0qBHKPg6AKkqOOs3lwzxYhlBcnTMaPRRqbhiKzXnT+J/+aC1NXcfwPAV/AiTgaAwIyFJKKv3ZUnKDxA8oRHrddEtF6MmqjX3IejXDQe3HszXqIq3YkccXh8GeGwnTKUBHbVfT+ZPWtrC4Z6xrc9oQTOCplUMYd7j2DJtMEI+ibyUnkzeeuyP37rgxE3f4yvFousWaMaYcXSUHr0i8s6HsVS5P+KLqumv3J+hzZgkqfxz4kK7b1sttwKozDbelaMOLsHT3rRu0eoIcnMbyY+cxJvZbh9PQylMxQH3mrEYRe6QxPp50t33B7HLsxCEfAQI/TvzWR86W5sLmzXnA3izC6QEuzFpegeMVHK/jI6ghK/PtcNqsFs5umB+PEbEd6d9PZxt5JJgwQc+J5CCLa4XOkfx9DisG2c8SX7t5xbAsP7MdeoftgzuEdlL3WBSvS87kPvxnB9ScS8lnGCwaFVHdlJ/sIq1ff8YIENIwztDW7/Ue0+TpSO8RHGqd5Bm2e5ihXo83sn+Wb29UjxhBrLF4aDIIbcU70xS2Db2Eb21LTGmq+KTfwy19nyBBynR0CYzlIHsRTvmlqSNmrgHi0x3Bcc/c2yiyBU/RuMTPk5uIOLjust7iEW7UzZPTsTnhad0bfWRpuKiQMIUbTNy0rZSmmcxRPmv4MH6jdNxMyPIZIIjB+fJ25DeZ2TLVAhtyT1v0gnf6dNufpSNOU6O61GePEoP4s5Z8rEDUBbvHQJSHGioNbQGERGNNwdmjfDesdlla+M5FA8+mnWj02vYG6zScFCxscfd7x0SYOiVyO/O7GNldAj3M5oUsV5hmcb2Pbqtq5fo M/j9aVyE unNPx+RNpGrCzDModH0bTcBe2RQQfuQ6I229IzaIakBAOAznEv9G3XZH6DEke9CjCBFEfK3tekXRlitPgvYjYkrQSpS3CKQLHkAyVjjvPe0fH5XYJN7upP27buLeDEzc/baYHKFH6hsf3jC0ngE60q6D64IfW7WVermgWUjVu+60h/Jie469I6c8pydhMDGWruWBOEmPN7YXJTvRDsvIbA/9ic9WS+hdoK/O/okwP+18drLC22r/ZwOp21Z9NJ430ncSYFrOlHTT/gmUc85bOjbi+PJW3tnL1Etwq5cm9mIWLtxuPK9edZe39ras22EvSXtvR3BW+UwZKl5up0oGlEhwpAlFG5206scBpwcQtdahpOdaXOfxqWbyCeMXuQwVDE92p2oLbomc/SYl2oLK0PHWG7PnWjcJLFwhczZo+7f4hh3LBsJs9qIUea7UaZdTHfiWZhkEvSxy5Nsr8A4pYn9Gn0aO9JxirscNPgnbHygaNjkC3T9AZb4H7iV+s5fgBKZCIuzBPdPvb5Z9BiGoxBOHKcEEWdErQa8wkMGkV6QLrjYuEU6vQ9zJtmdJ0DbHeg9q8/Cd36NyMt7MSNU+2E/HhB0WSOjLBTWSnpVHRVfsEAlo= 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: From: David Hildenbrand Let's make the function name match "folio_isolate_lru()", and add some kernel doc. Signed-off-by: David Hildenbrand Signed-off-by: Fuad Tabba --- include/linux/hugetlb.h | 4 ++-- mm/gup.c | 2 +- mm/hugetlb.c | 23 ++++++++++++++++++++--- mm/mempolicy.c | 2 +- mm/migrate.c | 6 +++--- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index ae4fe8615bb6..b0cf8dbfeb6a 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -153,7 +153,7 @@ bool hugetlb_reserve_pages(struct inode *inode, long from, long to, vm_flags_t vm_flags); long hugetlb_unreserve_pages(struct inode *inode, long start, long end, long freed); -bool isolate_hugetlb(struct folio *folio, struct list_head *list); +bool folio_isolate_hugetlb(struct folio *folio, struct list_head *list); int get_hwpoison_hugetlb_folio(struct folio *folio, bool *hugetlb, bool unpoison); int get_huge_page_for_hwpoison(unsigned long pfn, int flags, bool *migratable_cleared); @@ -414,7 +414,7 @@ static inline pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, return NULL; } -static inline bool isolate_hugetlb(struct folio *folio, struct list_head *list) +static inline bool folio_isolate_hugetlb(struct folio *folio, struct list_head *list) { return false; } diff --git a/mm/gup.c b/mm/gup.c index 28ae330ec4dd..40bbcffca865 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -2301,7 +2301,7 @@ static unsigned long collect_longterm_unpinnable_folios( continue; if (folio_test_hugetlb(folio)) { - isolate_hugetlb(folio, movable_folio_list); + folio_isolate_hugetlb(folio, movable_folio_list); continue; } diff --git a/mm/hugetlb.c b/mm/hugetlb.c index cec4b121193f..e17bb2847572 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2868,7 +2868,7 @@ static int alloc_and_dissolve_hugetlb_folio(struct hstate *h, * Fail with -EBUSY if not possible. */ spin_unlock_irq(&hugetlb_lock); - isolated = isolate_hugetlb(old_folio, list); + isolated = folio_isolate_hugetlb(old_folio, list); ret = isolated ? 0 : -EBUSY; spin_lock_irq(&hugetlb_lock); goto free_new; @@ -2953,7 +2953,7 @@ int isolate_or_dissolve_huge_page(struct page *page, struct list_head *list) if (hstate_is_gigantic(h)) return -ENOMEM; - if (folio_ref_count(folio) && isolate_hugetlb(folio, list)) + if (folio_ref_count(folio) && folio_isolate_hugetlb(folio, list)) ret = 0; else if (!folio_ref_count(folio)) ret = alloc_and_dissolve_hugetlb_folio(h, folio, list); @@ -7396,7 +7396,24 @@ __weak unsigned long hugetlb_mask_last_page(struct hstate *h) #endif /* CONFIG_ARCH_WANT_GENERAL_HUGETLB */ -bool isolate_hugetlb(struct folio *folio, struct list_head *list) +/** + * folio_isolate_hugetlb: try to isolate an allocated hugetlb folio + * @folio: the folio to isolate + * @list: the list to add the folio to on success + * + * Isolate an allocated (refcount > 0) hugetlb folio, marking it as + * isolated/non-migratable, and moving it from the active list to the + * given list. + * + * Isolation will fail if @folio is not an allocated hugetlb folio, or if + * it is already isolated/non-migratable. + * + * On success, an additional folio reference is taken that must be dropped + * using folio_putback_active_hugetlb() to undo the isolation. + * + * Return: True if isolation worked, otherwise False. + */ +bool folio_isolate_hugetlb(struct folio *folio, struct list_head *list) { bool ret = true; diff --git a/mm/mempolicy.c b/mm/mempolicy.c index bb37cd1a51d8..41bdff67757c 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -647,7 +647,7 @@ static int queue_folios_hugetlb(pte_t *pte, unsigned long hmask, */ if ((flags & MPOL_MF_MOVE_ALL) || (!folio_likely_mapped_shared(folio) && !hugetlb_pmd_shared(pte))) - if (!isolate_hugetlb(folio, qp->pagelist)) + if (!folio_isolate_hugetlb(folio, qp->pagelist)) qp->nr_failed++; unlock: spin_unlock(ptl); diff --git a/mm/migrate.c b/mm/migrate.c index dfb5eba3c522..55585b5f57ec 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -136,7 +136,7 @@ static void putback_movable_folio(struct folio *folio) * * This function shall be used whenever the isolated pageset has been * built from lru, balloon, hugetlbfs page. See isolate_migratepages_range() - * and isolate_hugetlb(). + * and folio_isolate_hugetlb(). */ void putback_movable_pages(struct list_head *l) { @@ -177,7 +177,7 @@ bool isolate_folio_to_list(struct folio *folio, struct list_head *list) bool isolated, lru; if (folio_test_hugetlb(folio)) - return isolate_hugetlb(folio, list); + return folio_isolate_hugetlb(folio, list); lru = !__folio_test_movable(folio); if (lru) @@ -2208,7 +2208,7 @@ static int __add_folio_for_migration(struct folio *folio, int node, return -EACCES; if (folio_test_hugetlb(folio)) { - if (isolate_hugetlb(folio, pagelist)) + if (folio_isolate_hugetlb(folio, pagelist)) return 1; } else if (folio_isolate_lru(folio)) { list_add_tail(&folio->lru, pagelist);