linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] mm: convert page type macros to enum
@ 2024-06-06 18:26 Stephen Brennan
  2024-06-06 18:42 ` David Hildenbrand
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Brennan @ 2024-06-06 18:26 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Stephen Brennan, Omar Sandoval, Hao Ge, David Hildenbrand,
	Vlastimil Babka, linux-kernel, Vishal Moola (Oracle),
	linux-mm, linux-debuggers, Matthew Wilcox (Oracle)

Changing PG_slab from a page flag to a page type in commit 46df8e73a4a3
("mm: free up PG_slab") in has the unintended consequence of removing
the PG_slab constant from kernel debuginfo. The commit does add the
value to the vmcoreinfo note, which allows debuggers to find the value
without hardcoding it. However it's most flexible to continue
representing the constant with an enum. To that end, convert the page
type fields into an enum. Debuggers will now be able to detect that
PG_slab's type has changed from enum pageflags to enum page_type.

Fixes: 46df8e73a4a3 ("mm: free up PG_slab")

Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
---
v1 -> v2: include PAGE_TYPE_BASE and PAGE_MAPCOUNT_RESERVE

 include/linux/page-flags.h | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 104078afe0b16..74ffdacd3a134 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -944,15 +944,19 @@ PAGEFLAG_FALSE(HasHWPoisoned, has_hwpoisoned)
  * mistaken for a page type value.
  */
 
-#define PAGE_TYPE_BASE	0xf0000000
-/* Reserve		0x0000007f to catch underflows of _mapcount */
-#define PAGE_MAPCOUNT_RESERVE	-128
-#define PG_buddy	0x00000080
-#define PG_offline	0x00000100
-#define PG_table	0x00000200
-#define PG_guard	0x00000400
-#define PG_hugetlb	0x00000800
-#define PG_slab		0x00001000
+enum page_type {
+	PG_buddy	= 0x00000080,
+	PG_offline	= 0x00000100,
+	PG_table	= 0x00000200,
+	PG_guard	= 0x00000400,
+	PG_hugetlb	= 0x00000800,
+	PG_slab		= 0x00001000,
+
+	PAGE_TYPE_BASE	= 0xf0000000,
+
+	/* Reserve	0x0000007f to catch underflows of _mapcount */
+	PAGE_MAPCOUNT_RESERVE	= -128,
+};
 
 #define PageType(page, flag)						\
 	((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
-- 
2.43.0



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] mm: convert page type macros to enum
  2024-06-06 18:26 [PATCH v2] mm: convert page type macros to enum Stephen Brennan
@ 2024-06-06 18:42 ` David Hildenbrand
  2024-06-07  0:06   ` Stephen Brennan
  0 siblings, 1 reply; 3+ messages in thread
From: David Hildenbrand @ 2024-06-06 18:42 UTC (permalink / raw)
  To: Stephen Brennan, Andrew Morton
  Cc: Omar Sandoval, Hao Ge, Vlastimil Babka, linux-kernel,
	Vishal Moola (Oracle),
	linux-mm, linux-debuggers, Matthew Wilcox (Oracle)

On 06.06.24 20:26, Stephen Brennan wrote:
> Changing PG_slab from a page flag to a page type in commit 46df8e73a4a3
> ("mm: free up PG_slab") in has the unintended consequence of removing
> the PG_slab constant from kernel debuginfo. The commit does add the
> value to the vmcoreinfo note, which allows debuggers to find the value
> without hardcoding it. However it's most flexible to continue
> representing the constant with an enum. To that end, convert the page
> type fields into an enum. Debuggers will now be able to detect that
> PG_slab's type has changed from enum pageflags to enum page_type.
> 
> Fixes: 46df8e73a4a3 ("mm: free up PG_slab")
> 
> Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
> ---
> v1 -> v2: include PAGE_TYPE_BASE and PAGE_MAPCOUNT_RESERVE

This has a conflict with mm/mm-unstable.

-- 
Cheers,

David / dhildenb



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] mm: convert page type macros to enum
  2024-06-06 18:42 ` David Hildenbrand
@ 2024-06-07  0:06   ` Stephen Brennan
  0 siblings, 0 replies; 3+ messages in thread
From: Stephen Brennan @ 2024-06-07  0:06 UTC (permalink / raw)
  To: David Hildenbrand, Andrew Morton
  Cc: Omar Sandoval, Hao Ge, Vlastimil Babka, linux-kernel,
	Vishal Moola (Oracle),
	linux-mm, linux-debuggers, Matthew Wilcox (Oracle)

David Hildenbrand <david@redhat.com> writes:
> On 06.06.24 20:26, Stephen Brennan wrote:
>> Changing PG_slab from a page flag to a page type in commit 46df8e73a4a3
>> ("mm: free up PG_slab") in has the unintended consequence of removing
>> the PG_slab constant from kernel debuginfo. The commit does add the
>> value to the vmcoreinfo note, which allows debuggers to find the value
>> without hardcoding it. However it's most flexible to continue
>> representing the constant with an enum. To that end, convert the page
>> type fields into an enum. Debuggers will now be able to detect that
>> PG_slab's type has changed from enum pageflags to enum page_type.
>> 
>> Fixes: 46df8e73a4a3 ("mm: free up PG_slab")
>> 
>> Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
>> ---
>> v1 -> v2: include PAGE_TYPE_BASE and PAGE_MAPCOUNT_RESERVE
>
> This has a conflict with mm/mm-unstable.

Thank you, that's what I get for developing on master. I'll send v3
based on mm-unstable once it finishes compiling.

-Stephen


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-06-07  0:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-06 18:26 [PATCH v2] mm: convert page type macros to enum Stephen Brennan
2024-06-06 18:42 ` David Hildenbrand
2024-06-07  0:06   ` Stephen Brennan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox