From patchwork Thu Feb 20 05:20:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Byungchul Park X-Patchwork-Id: 13983317 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 72009C021AD for ; Thu, 20 Feb 2025 05:20:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 99732280297; Thu, 20 Feb 2025 00:20:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 90B3928028C; Thu, 20 Feb 2025 00:20:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6B5C9280296; Thu, 20 Feb 2025 00:20:43 -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 4D44C28028C for ; Thu, 20 Feb 2025 00:20:43 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E9C1F160DBF for ; Thu, 20 Feb 2025 05:20:42 +0000 (UTC) X-FDA: 83139173124.17.FC21E4A Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf06.hostedemail.com (Postfix) with ESMTP id DB977180007 for ; Thu, 20 Feb 2025 05:20:40 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf06.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740028841; a=rsa-sha256; cv=none; b=DLy5iis0yIgH+/y2cCFGrHc7z2hTauvNYZAo9jQ2+nwA2FfQqlvjHiXF9Fu4XK4Rl5gCYi aXbuD0pTgwP4Fws7tBn2hH80eog989yH60Xy2uCVqxYd6SiWYsCFBCy6RmcKf38JZcnmh1 o1EcyL/7SWLAW1VuvQB3jsJ632mhM8s= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf06.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740028841; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references; bh=Ql6/s0v9OK4M4h5gb4MYChjHwKYoBcRXwF9+aDV4Khc=; b=S6OPx+G/FgHMgVpGOV4gtf01tYHffO6wCyOMdM/rQgB6x/9Lo92FCcd4NdHsz7Ions6IvE lyWXZs8odM55h1sz99TqzlcM+4C0tQTT0fG2MbXayqoJn3ikKqJp1h5ZGCB9FwLdp9rp4U ylFCdjTWryNccxcj2vexe2O6KBseFyE= X-AuditID: a67dfc5b-3c9ff7000001d7ae-c6-67b6bba6280f From: Byungchul Park To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: kernel_team@skhynix.com, akpm@linux-foundation.org, ying.huang@intel.com, vernhao@tencent.com, mgorman@techsingularity.net, hughd@google.com, willy@infradead.org, david@redhat.com, peterz@infradead.org, luto@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, rjgolo@gmail.com Subject: [RFC PATCH v12 05/26] mm/buddy: make room for a new variable, luf_key, in struct page Date: Thu, 20 Feb 2025 14:20:06 +0900 Message-Id: <20250220052027.58847-6-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250220052027.58847-1-byungchul@sk.com> References: <20250220052027.58847-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCLMWRmVeSWpSXmKPExsXC9ZZnoe6y3dvSDe61yljMWb+GzeLzhn9s Fi82tDNafF3/i9ni6ac+FovLu+awWdxb85/V4vyutawWO5buY7K4dGABk8Xx3gNMFvPvfWaz 2LxpKrPF8SlTGS1+/wAqPjlrMouDgMf31j4Wj52z7rJ7LNhU6rF5hZbH4j0vmTw2repk89j0 aRK7x7tz59g9Tsz4zeIx72Sgx/t9V9k8tv6y82iceo3N4/MmuQC+KC6blNSczLLUIn27BK6M 042yBWtkKt4deczUwDhXrIuRg0NCwETi5ELBLkZOMLPnXz87iM0moC5x48ZPZhBbRMBM4mDr H7A4s8BdJokD/WwgtrBAnMTGuzfAalgEVCUer9jDAmLzCphK3Fu4kBFiprzE6g0HwGo4geb8 mNEL1isEVPNuwSWmLkYuoJr3bBKLj3+EapCUOLjiBssERt4FjAyrGIUy88pyEzNzTPQyKvMy K/SS83M3MQLDflntn+gdjJ8uBB9iFOBgVOLhndG6LV2INbGsuDL3EKMEB7OSCG9b/ZZ0Id6U xMqq1KL8+KLSnNTiQ4zSHCxK4rxG38pThATSE0tSs1NTC1KLYLJMHJxSDYyuHI8eKvIKlV4o nhut7fXo+BYDc0WVDr+qExpbnk46dPyVxQGZw3oxvzsalizsfZjed0xZjU033u8vo6vJRotP 5XHZqoFeO75JMBoHbBbNFnohFPpx+R9/lutGVkqfHrmy6Ro1cS7Y4HptXZ3t6T2iivVL9jEe PWL0oatC+0nQQZcDOuv7jyixFGckGmoxFxUnAgC5URuDdwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsXC5WfdrLts97Z0g3WLBC3mrF/DZvF5wz82 ixcb2hktvq7/xWzx9FMfi8XhuSdZLS7vmsNmcW/Nf1aL87vWslrsWLqPyeLSgQVMFsd7DzBZ zL/3mc1i86apzBbHp0xltPj9A6j45KzJLA6CHt9b+1g8ds66y+6xYFOpx+YVWh6L97xk8ti0 qpPNY9OnSewe786dY/c4MeM3i8e8k4Ee7/ddZfNY/OIDk8fWX3YejVOvsXl83iQXwB/FZZOS mpNZllqkb5fAlXG6UbZgjUzFuyOPmRoY54p1MXJySAiYSPT862cHsdkE1CVu3PjJDGKLCJhJ HGz9AxZnFrjLJHGgnw3EFhaIk9h49wZYDYuAqsTjFXtYQGxeAVOJewsXMkLMlJdYveEAWA0n 0JwfM3rBeoWAat4tuMQ0gZFrASPDKkaRzLyy3MTMHFO94uyMyrzMCr3k/NxNjMAwXlb7Z+IO xi+X3Q8xCnAwKvHwPni8NV2INbGsuDL3EKMEB7OSCG9b/ZZ0Id6UxMqq1KL8+KLSnNTiQ4zS HCxK4rxe4akJQgLpiSWp2ampBalFMFkmDk6pBsbat9XpU4JPzLIs3KJn8aru4HQ3LsuvVy+a JB6qWdprHxrP86KmmXnCUkaNHd4HhKUMIuyWdD1zfmacVJI+X1NI2adfavucGs+yI+LdGfWR iZ9cJnw+p3/8bn5E9qt1nNYx90+aF7NsjHu2QWR7xC5n3SnB0xa8fuZp1RvnfGjX7tYV3AdE tyqxFGckGmoxFxUnAgAAgnVcXwIAAA== X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Queue-Id: DB977180007 X-Rspamd-Server: rspam12 X-Stat-Signature: mo7d9be3ywne4hhusr6dnxyt41aroi9t X-HE-Tag: 1740028840-509675 X-HE-Meta: U2FsdGVkX18MCh1oti5o8Jg3p9YfH1KpDrUmY/EGEv29IuQtnimtDwqr52a7yEpKYPrfu+G3ztphQ80vCmZP2nmkFG1eNBisD2HmawGZQoausrh17VBmEv6AypVrH0DkBXtjRGVJoAiD3SPJW9CE9UM1pegu7KMgKi2ozYnvd0undzJreWFY8iMPtw+28QDktka0NcUPhnrMN3kwOZNdN7bZpdNtGEopGSdnf0M0VGRtb3dGWYJVUlxsiS6siwUhawizB2BjnEVBtiw8jcTPr6R2pSekb13IfxqTsl9G6m+jM+IAwTA1KjSDmfPGgk71lrPLL+jiWmOHPQuqpNoEXf0Z4vuRCL4tzA8upGI7cz5ViVo/JcpHvUufKy1TxGcCP1ojZdvs9TozEt/Vnq8/3jMf5KufMX3OuXlN76P79zCgGH5zOgiLZpvnkKUzz2+1rgd/x+ncKUR7mQVChox9F9Lup3KwPFuv0dUH1ge7sWQHtG+zJBBTeApRiUgmRr32ODwXbTlZiQGVcnkeH/ihUIb0PxBeo9fJL9jIDGuWBaP6nrdqrj5KTFA+BS0wM+dIWeyNw08VMrXazVLS9susOFTjTG5ktmhKxXqkiRoCyaNO5nXkueRaK49x+6brP0LKzv+fPg7bQcTEUTktm8t2ms3ZeSN+kUD62eFRWIWv5AvKfQ8k/DoCz2Ugap7yCT+w9rEYtghsEStfUZyO2vOqRJQbwHc3u+XEARmN3zzVsokID2s4qQVGfyVrT4YQS4CKM0qr8aYDleyNefut3G4O39f1v+EBjf9/Td+hXWEd1uIyH3IDBP4lL5lNRS1pnfeRYUJSbJDvtphAKuCJMi9sHdn+JfczweUxnVT1xijnpZ5BUKD26pmybZO0axxb2xhCE0MCbQeoVW2LEM2G8h3uN3DYKSyO9Rb/sXqBID3wHm/UTqxpTePK0r0CUh9zUKGMDTSssAXmpjARIxDCcSA BwwxvD13 pZbrWMv3/vSFJLjPOz4nCEDhEA4Baqysqh2ED 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: Functionally, no change. This is a preparation for luf mechanism that tracks need of tlb flush for each page residing in buddy. Since the private field in struct page is used only to store page order in buddy, ranging from 0 to MAX_PAGE_ORDER, that can be covered with unsigned short. So splitted it into two smaller ones, order and luf_key, so that the both can be used in buddy at the same time. Signed-off-by: Byungchul Park --- include/linux/mm_types.h | 42 +++++++++++++++++++++++++++++++++------- mm/internal.h | 4 ++-- mm/page_alloc.c | 2 +- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 80fef38d9d645..20d85c4e609de 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -106,13 +106,27 @@ struct page { pgoff_t index; /* Our offset within mapping. */ unsigned long share; /* share count for fsdax */ }; - /** - * @private: Mapping-private opaque data. - * Usually used for buffer_heads if PagePrivate. - * Used for swp_entry_t if swapcache flag set. - * Indicates order in the buddy system if PageBuddy. - */ - unsigned long private; + union { + /** + * @private: Mapping-private opaque data. + * Usually used for buffer_heads if PagePrivate. + * Used for swp_entry_t if swapcache flag set. + * Indicates order in the buddy system if PageBuddy. + */ + unsigned long private; + struct { + /* + * Indicates order in the buddy system if PageBuddy. + */ + unsigned short order; + + /* + * For tracking need of tlb flush, + * by luf(lazy unmap flush). + */ + unsigned short luf_key; + }; + }; }; struct { /* page_pool used by netstack */ /** @@ -537,6 +551,20 @@ static inline void set_page_private(struct page *page, unsigned long private) page->private = private; } +#define page_buddy_order(page) ((page)->order) + +static inline void set_page_buddy_order(struct page *page, unsigned int order) +{ + page->order = (unsigned short)order; +} + +#define page_luf_key(page) ((page)->luf_key) + +static inline void set_page_luf_key(struct page *page, unsigned short luf_key) +{ + page->luf_key = luf_key; +} + static inline void *folio_get_private(struct folio *folio) { return folio->private; diff --git a/mm/internal.h b/mm/internal.h index 5a7302baeed7c..754f1dd763448 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -541,7 +541,7 @@ struct alloc_context { static inline unsigned int buddy_order(struct page *page) { /* PageBuddy() must be checked by the caller */ - return page_private(page); + return page_buddy_order(page); } /* @@ -555,7 +555,7 @@ static inline unsigned int buddy_order(struct page *page) * times, potentially observing different values in the tests and the actual * use of the result. */ -#define buddy_order_unsafe(page) READ_ONCE(page_private(page)) +#define buddy_order_unsafe(page) READ_ONCE(page_buddy_order(page)) /* * This function checks whether a page is free && is the buddy diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 839708353cb77..59c26f59db3d6 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -576,7 +576,7 @@ void prep_compound_page(struct page *page, unsigned int order) static inline void set_buddy_order(struct page *page, unsigned int order) { - set_page_private(page, order); + set_page_buddy_order(page, order); __SetPageBuddy(page); }