From: "Vishal Moola (Oracle)" <vishal.moola@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>,
Matthew Wilcox <willy@infradead.org>
Cc: linux-mm@kvack.org, linux-arch@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev,
linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org,
linux-openrisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, sparclinux@vger.kernel.org,
linux-um@lists.infradead.org, xen-devel@lists.xenproject.org,
kvm@vger.kernel.org, Hugh Dickins <hughd@google.com>,
"Vishal Moola (Oracle)" <vishal.moola@gmail.com>,
Mike Rapoport <rppt@kernel.org>
Subject: [PATCH mm-unstable v7 01/31] mm: Add PAGE_TYPE_OP folio functions
Date: Mon, 24 Jul 2023 21:20:21 -0700 [thread overview]
Message-ID: <20230725042051.36691-2-vishal.moola@gmail.com> (raw)
In-Reply-To: <20230725042051.36691-1-vishal.moola@gmail.com>
No folio equivalents for page type operations have been defined, so
define them for later folio conversions.
Also changes the Page##uname macros to take in const struct page* since
we only read the memory here.
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
---
include/linux/page-flags.h | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 92a2063a0a23..9218028caf33 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -908,6 +908,8 @@ static inline bool is_page_hwpoison(struct page *page)
#define PageType(page, flag) \
((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
+#define folio_test_type(folio, flag) \
+ ((folio->page.page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
static inline int page_type_has_type(unsigned int page_type)
{
@@ -919,27 +921,41 @@ static inline int page_has_type(struct page *page)
return page_type_has_type(page->page_type);
}
-#define PAGE_TYPE_OPS(uname, lname) \
-static __always_inline int Page##uname(struct page *page) \
+#define PAGE_TYPE_OPS(uname, lname, fname) \
+static __always_inline int Page##uname(const struct page *page) \
{ \
return PageType(page, PG_##lname); \
} \
+static __always_inline int folio_test_##fname(const struct folio *folio)\
+{ \
+ return folio_test_type(folio, PG_##lname); \
+} \
static __always_inline void __SetPage##uname(struct page *page) \
{ \
VM_BUG_ON_PAGE(!PageType(page, 0), page); \
page->page_type &= ~PG_##lname; \
} \
+static __always_inline void __folio_set_##fname(struct folio *folio) \
+{ \
+ VM_BUG_ON_FOLIO(!folio_test_type(folio, 0), folio); \
+ folio->page.page_type &= ~PG_##lname; \
+} \
static __always_inline void __ClearPage##uname(struct page *page) \
{ \
VM_BUG_ON_PAGE(!Page##uname(page), page); \
page->page_type |= PG_##lname; \
-}
+} \
+static __always_inline void __folio_clear_##fname(struct folio *folio) \
+{ \
+ VM_BUG_ON_FOLIO(!folio_test_##fname(folio), folio); \
+ folio->page.page_type |= PG_##lname; \
+} \
/*
* PageBuddy() indicates that the page is free and in the buddy system
* (see mm/page_alloc.c).
*/
-PAGE_TYPE_OPS(Buddy, buddy)
+PAGE_TYPE_OPS(Buddy, buddy, buddy)
/*
* PageOffline() indicates that the page is logically offline although the
@@ -963,7 +979,7 @@ PAGE_TYPE_OPS(Buddy, buddy)
* pages should check PageOffline() and synchronize with such drivers using
* page_offline_freeze()/page_offline_thaw().
*/
-PAGE_TYPE_OPS(Offline, offline)
+PAGE_TYPE_OPS(Offline, offline, offline)
extern void page_offline_freeze(void);
extern void page_offline_thaw(void);
@@ -973,12 +989,12 @@ extern void page_offline_end(void);
/*
* Marks pages in use as page tables.
*/
-PAGE_TYPE_OPS(Table, table)
+PAGE_TYPE_OPS(Table, table, pgtable)
/*
* Marks guardpages used with debug_pagealloc.
*/
-PAGE_TYPE_OPS(Guard, guard)
+PAGE_TYPE_OPS(Guard, guard, guard)
extern bool is_free_buddy_page(struct page *page);
--
2.40.1
next prev parent reply other threads:[~2023-07-25 4:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-25 4:20 [PATCH mm-unstable v7 00/31] Split ptdesc from struct page Vishal Moola (Oracle)
2023-07-25 4:20 ` Vishal Moola (Oracle) [this message]
2023-07-25 4:20 ` [PATCH mm-unstable v7 02/31] pgtable: Create struct ptdesc Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 03/31] mm: add utility functions for ptdesc Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 04/31] mm: Convert pmd_pgtable_page() callers to use pmd_ptdesc() Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 05/31] mm: Convert ptlock_alloc() to use ptdescs Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 06/31] mm: Convert ptlock_ptr() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 07/31] mm: Convert pmd_ptlock_init() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 08/31] mm: Convert ptlock_init() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 09/31] mm: Convert pmd_ptlock_free() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 10/31] mm: Convert ptlock_free() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 11/31] mm: Create ptdesc equivalents for pgtable_{pte,pmd}_page_{ctor,dtor} Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 12/31] powerpc: Convert various functions to use ptdescs Vishal Moola (Oracle)
2023-07-25 23:33 ` kernel test robot
2023-07-25 4:20 ` [PATCH mm-unstable v7 13/31] x86: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 14/31] s390: Convert various pgalloc " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 15/31] mm: Remove page table members from struct page Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 16/31] pgalloc: Convert various functions to use ptdescs Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 17/31] arm: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 18/31] arm64: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 19/31] csky: Convert __pte_free_tlb() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 20/31] hexagon: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 21/31] loongarch: Convert various functions " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 22/31] m68k: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 23/31] mips: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 24/31] nios2: Convert __pte_free_tlb() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 25/31] openrisc: " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 26/31] riscv: Convert alloc_{pmd, pte}_late() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 27/31] sh: Convert pte_free_tlb() " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 28/31] sparc64: Convert various functions " Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 29/31] sparc: Convert pgtable_pte_page_{ctor, dtor}() to ptdesc equivalents Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 30/31] um: Convert {pmd, pte}_free_tlb() to use ptdescs Vishal Moola (Oracle)
2023-07-25 4:20 ` [PATCH mm-unstable v7 31/31] mm: Remove pgtable_{pmd, pte}_page_{ctor, dtor}() wrappers Vishal Moola (Oracle)
2023-07-25 4:41 ` [PATCH mm-unstable v7 00/31] Split ptdesc from struct page Hugh Dickins
2023-07-26 14:34 ` Matthew Wilcox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230725042051.36691-2-vishal.moola@gmail.com \
--to=vishal.moola@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=hughd@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-csky@vger.kernel.org \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-openrisc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=rppt@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=willy@infradead.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).