From patchwork Mon Mar 3 16:29:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Hildenbrand X-Patchwork-Id: 13999172 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 1302EC282CD for ; Mon, 3 Mar 2025 16:30:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7386D6B007B; Mon, 3 Mar 2025 11:30:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E8DB6B0082; Mon, 3 Mar 2025 11:30:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 589AF6B0083; Mon, 3 Mar 2025 11:30:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3BBA06B007B for ; Mon, 3 Mar 2025 11:30:28 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C1CB51C8DD1 for ; Mon, 3 Mar 2025 16:30:27 +0000 (UTC) X-FDA: 83180777694.20.E45E064 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf14.hostedemail.com (Postfix) with ESMTP id 2778E100017 for ; Mon, 3 Mar 2025 16:30:24 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="b/ACEsK6"; spf=pass (imf14.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741019425; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YXwoThNtp+x7X/3NlVobY8ZdtRlIGCn0KXkmBvKPXvw=; b=vyLHMmv5Tjz15UEHp0nvQ/11gV2x4xNAQIAYDQ0cQuTP0srIl2XCOgvdg48yLCMj4RZPVw vi3UEBTQF2IvSaIJe1Utal78zD3ID2M77pwLWF3zAnSyCMF/QUqJRYhK2gGYT29BlDhm2m tFQHVcqmPV3GiPcL2UKrezliPsNAHmA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741019425; a=rsa-sha256; cv=none; b=k3KponCme9gyGsk0IjmYqij9b82MoqLxHDkcBf7TbdMDVOSyKpApWA7YZH7d2OlDf0mKiW Qf0/9BQ+AwI1H+heh3u62lR4kI8F9KgoSmAv+1ACgNrTFT37dzfWvjIuuncjELOTbmaDGJ nFEhUMiBUNtK2+7mBphcuYAed7s4hUw= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="b/ACEsK6"; spf=pass (imf14.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741019424; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YXwoThNtp+x7X/3NlVobY8ZdtRlIGCn0KXkmBvKPXvw=; b=b/ACEsK6XQwU6Ble9cXkXYJCviWnjx2/9Hjexqp73pJHySJEpM74DXH2KJAiF0g5HwRPJz +FnaprOJ6h36sJE8mXBnxat9cAjuEkbzUjMd6mo+L1NpBkCBUXiHhTTExipBbcC/HKRnzY 4ndZwwoN14dXoxmLRQczvInQ7foD4Dg= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-d4sY4GhpPOWWxaQhOONkKA-1; Mon, 03 Mar 2025 11:30:22 -0500 X-MC-Unique: d4sY4GhpPOWWxaQhOONkKA-1 X-Mimecast-MFC-AGG-ID: d4sY4GhpPOWWxaQhOONkKA_1741019422 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4399c5baac3so33940455e9.2 for ; Mon, 03 Mar 2025 08:30:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741019421; x=1741624221; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YXwoThNtp+x7X/3NlVobY8ZdtRlIGCn0KXkmBvKPXvw=; b=JttGIPcqlGzRh6fbAZ3gs/ip23k69+U123pOqfAwHst7xv2QMmC1LDGtj+XX0SZnDm 1gAzfV4deVtRChsqH/MrF0yZdn+d1bA8qpOmEMViWW5F1Jkpl70rDLHBJxZFIlSNtvaI cZeMw+cNAKnqcDDpHBhaFi6GCpbVWLYMJTeYKahEtXOIiJs1dcf5qXGw7e7d6nzcTjvc c3IB+LBi8qSThbhxavWIJ+ig2bfhtbju0B/kIFqy+u/dN0HX48G6HposHmn5NFh+9w7P 48NaOsD4EkVcX+K+lRIbkL487MvtYFwouqsmXtXWdnZfJK0SlsZ7PwO6I7/BEiXNjw+d v1MA== X-Forwarded-Encrypted: i=1; AJvYcCUm6HxAfXTWpvEpe4Jw3xxUfJ3O7krVgFD40KmCPsInZMuSXS0kJfPvagLKdLdG2eLcNbxUq+u2AA==@kvack.org X-Gm-Message-State: AOJu0Yy7CHbLgmjonCF6/gLgHEIHSDM+6irgtv4jC4OI68eaf96Pul/q DD52NtFjQutQlh9nhzYn7letSMtMD1+xtomuGHz6vQUX2ZQTf6MGZ4f+gSn9TmckWaTO+pP+noK BPz7R9g7Q6ycf0NaTPkuE/oEzDPcbRDEkj3J0ugOk7miyjJtD X-Gm-Gg: ASbGncsFhy8wBdLdc5x13oH+mwMt/5cavJT7rGb7NOaYw2YBTZ73zORNTtxOTTXCr3m Z4bLMkthI2TtzXoFCm7HwbFczp2ZBeyhVxykt3gHNVWNBjgZvqhnOns0gjQWNcAQZGNGd7VRfpe x6B+AvbC9k9EJjXrQHFcrhPMuFgdT6N/18ZSuZW1pP2k1DoPwkxfa0tzHIYPaEfeDxq2mAGVC1q RgIXuxvxdb6uPvsWhA+6iNMSR3MC18fS35lWN73fzdEESfM9+fVvi4/+rqOyib9IkV/9OPzzdpk 9EAeY3azlr4p3ZuaW3nE5GQRgQvW9kxPde5ZeRkqlh3aJtIlZ98dn4ocgrbTRXcMmDPDpOYIe5S r X-Received: by 2002:a05:600c:5102:b0:43b:c0fa:f9eb with SMTP id 5b1f17b1804b1-43bc0faff85mr39510415e9.17.1741019421464; Mon, 03 Mar 2025 08:30:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHuptMXo5vgbefj6sa5a5v3hHufhVKK5lbtZ5OlCKuge8xCX7GzdoorXNmVUyzEzt6+EvCK+w== X-Received: by 2002:a05:600c:5102:b0:43b:c0fa:f9eb with SMTP id 5b1f17b1804b1-43bc0faff85mr39510065e9.17.1741019421019; Mon, 03 Mar 2025 08:30:21 -0800 (PST) Received: from localhost (p200300cbc7349600af274326a2162bfb.dip0.t-ipconnect.de. [2003:cb:c734:9600:af27:4326:a216:2bfb]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-43aba58720esm198718765e9.40.2025.03.03.08.30.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 03 Mar 2025 08:30:20 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-doc@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, David Hildenbrand , Andrew Morton , "Matthew Wilcox (Oracle)" , Tejun Heo , Zefan Li , Johannes Weiner , =?utf-8?q?Michal_Koutn=C3=BD?= , Jonathan Corbet , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , Muchun Song , "Liam R. Howlett" , Lorenzo Stoakes , Vlastimil Babka , Jann Horn , "Kirill A. Shutemov" Subject: [PATCH v3 02/20] mm: factor out large folio handling from folio_nr_pages() into folio_large_nr_pages() Date: Mon, 3 Mar 2025 17:29:55 +0100 Message-ID: <20250303163014.1128035-3-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250303163014.1128035-1-david@redhat.com> References: <20250303163014.1128035-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: g2LzIvOz3lR2y6FIXVag4z1xX1yuYx_9BZH8ix85MQE_1741019422 X-Mimecast-Originator: redhat.com content-type: text/plain; charset="US-ASCII"; x-default=true X-Stat-Signature: nzdzmfpj3x11rph7erymrzx1bhpgh7eg X-Rspamd-Queue-Id: 2778E100017 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1741019424-55444 X-HE-Meta: U2FsdGVkX1//ovgyqUUSXGGkXS8ffIwK7YqsYdhUDRwrniXVEJSIooub4b3Re2PpFOqApuWIde04WCEwRnUkYTJsVD9S6wacWYQLp5YptFO63FCeTVKhJUg6z1D8QtulryeLU18NCfa1Lo7fmLPy1tya/Ocne7ke+I11PnqAWiVr1Jfgqbvf3cR9pRF2CHTr1gJoYF8PmttpdkYp1VvWmuNmi5eH9ESuJGbRV2HLgihAfPdNLuijT/hxKfFeLgq0MYnR5Gm1lY0I+EF2FySw3tmadEMz1rkivg5irsQ7gXIGYJ8ycJi71c+Zi7ElGuyKOWyHVw+kY2X1PVzzMTt4RPSYJqwCu9sCVeY8jxvdURxk8M3Yd6KoL86ntArcTdHG0/oXkO0FWoXVebfdC4kLTfzIZuRhDqfG+xJmgtzPkzWVFgVzCI6H29pQ35k6xCv1cHCvvbzMb4MCH444uwrjjm1OKQSog+ICgOSOrHT+EmE50TqrcXwrc2LTgIo0PkQ4Qpt46Qh3GsYzGKrkbIZlf3rsBP4urcQVQ4ZZwesuhQMVszd+Nwr1JpvdPDgaoouDH+ve+tENGWafoia+ciDWiaL4jXV/RAbXqg3Ioi3E4r+4Yf//6TF8tfr21iupIqMByNv3DtN84B+60/+I/DLHtPS2C6CRgCk8c8EiW+x5hMsj5BNiTHlHvnVSEiz7YD3cK7atqwLobiAmfpjTjx6oaeVMbek6UVx1FTVpzoqu1D+zPhlRLsoVnSdcABmCqteYtn0c1TjimmTqDEcBABZs2GO+C3pKwd0mD/XUXPwzeIy94ABkFiDQtTDX0EFCUzfX+jy3RxMcBr9J0mJX1GFLato4tWTfjUYiznTEMIqswaqAkv19GvGht3oJst9YM9mEDUb3H/3YEy0vTMlWqaB1BycDnOmMvCaejEjiASCeF9w2KtXGECmhiHfBqYauhGXY9WHJUektPE8DLb1TXKK jjklBuk6 1xcWNdLU9LIERdbBymen8an6sTF3DRquRFZ7RqRL6Hw7rj//DVbXd02176gFi+a6KPM3618kqbe13hdX/0Os8cAFUjfXdQfvaje6knUilu+wcVQEoGTjNMYtyp6xvZGm475N8p8SlJOqv+TxPKxEwQrSmkqEFj+9Z5HMj8TD8zN+TE0G+pTNULC9YeGLqVFxvqHs1/zahF9AkUmORFM0WuHaNQnVecujkKD9ePne1DBolARLMPAuJvg4W+UCpF6g7UAY52cHLLho5oYlo/oIclLsMbChiZDt8elk3dIGrBgPL0bi5K+XY2CXSjKq/c2ehhMEUMeAghotF/9vw5ss/Mra/cyMVzwmLFMHfaFRWAQmd31MeTY6NZFVDP+19+syxzRHLhi3CNQmQlM5Ilf86p5vPGTCQwjbPZOnOUBAXeytAPL01qKyJy73K/S0O8KGi9RR7/UW7mr/MFxU4ysDYwrhkRGjW7BsnRhN+TG23msuZRsDbt8oO1VqZcl9KjKxxVT3JgQyxS+drJu9Nk0QPV2ePg0ZeBw1xdP+wqszdlSVVUkY= 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: Let's factor it out into a simple helper function. This helper will also come in handy when working with code where we know that our folio is large. While at it, let's consistently return a "long" value from all these similar functions. Note that we cannot use "unsigned int" (even though _folio_nr_pages is of that type), because it would break some callers that do stuff like "-folio_nr_pages()". Both "int" or "unsigned long" would work as well. Maybe in the future we'll have the nr_pages readily available for all large folios, maybe even for small folios, or maybe for none. Reviewed-by: Kirill A. Shutemov Signed-off-by: David Hildenbrand --- include/linux/mm.h | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index b2903bc705997..a743321dc1a5d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1199,6 +1199,18 @@ static inline unsigned int folio_large_order(const struct folio *folio) return folio->_flags_1 & 0xff; } +#ifdef CONFIG_64BIT +static inline long folio_large_nr_pages(const struct folio *folio) +{ + return folio->_folio_nr_pages; +} +#else +static inline long folio_large_nr_pages(const struct folio *folio) +{ + return 1L << folio_large_order(folio); +} +#endif + /* * compound_order() can be called without holding a reference, which means * that niceties like page_folio() don't work. These callers should be @@ -2141,11 +2153,7 @@ static inline long folio_nr_pages(const struct folio *folio) { if (!folio_test_large(folio)) return 1; -#ifdef CONFIG_64BIT - return folio->_folio_nr_pages; -#else - return 1L << folio_large_order(folio); -#endif + return folio_large_nr_pages(folio); } /* Only hugetlbfs can allocate folios larger than MAX_ORDER */ @@ -2160,24 +2168,20 @@ static inline long folio_nr_pages(const struct folio *folio) * page. compound_nr() can be called on a tail page, and is defined to * return 1 in that case. */ -static inline unsigned long compound_nr(struct page *page) +static inline long compound_nr(struct page *page) { struct folio *folio = (struct folio *)page; if (!test_bit(PG_head, &folio->flags)) return 1; -#ifdef CONFIG_64BIT - return folio->_folio_nr_pages; -#else - return 1L << folio_large_order(folio); -#endif + return folio_large_nr_pages(folio); } /** * thp_nr_pages - The number of regular pages in this huge page. * @page: The head page of a huge page. */ -static inline int thp_nr_pages(struct page *page) +static inline long thp_nr_pages(struct page *page) { return folio_nr_pages((struct folio *)page); }