* [Patch v2 0/2] mm/pageblock: improve readability of some pageblock handling @ 2025-08-27 2:11 Wei Yang 2025-08-27 2:11 ` [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading Wei Yang ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Wei Yang @ 2025-08-27 2:11 UTC (permalink / raw) To: akpm, david, lorenzo.stoakes, vbabka; +Cc: linux-mm, Wei Yang During code reading, found two possible points to improve the readability of pageblock handling. Patch 1: isolate bit is standalone and there are dedicated helpers. Instead of check the bit directly, we could use the helper to do it. Patch 2: remove PB_migratetype_bits and PB_migrate_end to reduce magical computation. v1->v2: remove PB_migratetype_bits and PB_migrate_end Wei Yang (2): mm/page_alloc: use xxx_pageblock_isolate() for better reading mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end include/linux/pageblock-flags.h | 12 +++++------- mm/page_alloc.c | 11 +++++------ 2 files changed, 10 insertions(+), 13 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading 2025-08-27 2:11 [Patch v2 0/2] mm/pageblock: improve readability of some pageblock handling Wei Yang @ 2025-08-27 2:11 ` Wei Yang 2025-08-27 9:33 ` Vlastimil Babka 2025-08-27 2:11 ` [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end Wei Yang 2025-08-27 8:04 ` [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling syzbot ci 2 siblings, 1 reply; 12+ messages in thread From: Wei Yang @ 2025-08-27 2:11 UTC (permalink / raw) To: akpm, david, lorenzo.stoakes, vbabka; +Cc: linux-mm, Wei Yang, Zi Yan Since commit e904bce2d9d4 ("mm/page_isolation: make page isolation a standalone bit"), it provides dedicated helper to handle isolation. Change to use these helpers to be better reading. No functional change intended. Signed-off-by: Wei Yang <richard.weiyang@gmail.com> Cc: Zi Yan <ziy@nvidia.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: David Hildenbrand <david@redhat.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Acked-by: David Hildenbrand <david@redhat.com> --- mm/page_alloc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index baead29b3e67..e534f31a6b39 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -538,8 +538,7 @@ static void set_pageblock_migratetype(struct page *page, "Use set_pageblock_isolate() for pageblock isolation"); return; } - VM_WARN_ONCE(get_pfnblock_bit(page, page_to_pfn(page), - PB_migrate_isolate), + VM_WARN_ONCE(get_pageblock_isolate(page), "Use clear_pageblock_isolate() to unisolate pageblock"); /* MIGRATETYPE_AND_ISO_MASK clears PB_migrate_isolate if it is set */ #endif @@ -2058,9 +2057,9 @@ static unsigned long find_large_buddy(unsigned long start_pfn) static inline void toggle_pageblock_isolate(struct page *page, bool isolate) { if (isolate) - set_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate); + set_pageblock_isolate(page); else - clear_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate); + clear_pageblock_isolate(page); } /** -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading 2025-08-27 2:11 ` [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading Wei Yang @ 2025-08-27 9:33 ` Vlastimil Babka 0 siblings, 0 replies; 12+ messages in thread From: Vlastimil Babka @ 2025-08-27 9:33 UTC (permalink / raw) To: Wei Yang, akpm, david, lorenzo.stoakes; +Cc: linux-mm, Zi Yan On 8/27/25 04:11, Wei Yang wrote: > Since commit e904bce2d9d4 ("mm/page_isolation: make page isolation a > standalone bit"), it provides dedicated helper to handle isolation. > > Change to use these helpers to be better reading. > > No functional change intended. > > Signed-off-by: Wei Yang <richard.weiyang@gmail.com> > Cc: Zi Yan <ziy@nvidia.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: David Hildenbrand <david@redhat.com> > Reviewed-by: Zi Yan <ziy@nvidia.com> > Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> > --- > mm/page_alloc.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index baead29b3e67..e534f31a6b39 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -538,8 +538,7 @@ static void set_pageblock_migratetype(struct page *page, > "Use set_pageblock_isolate() for pageblock isolation"); > return; > } > - VM_WARN_ONCE(get_pfnblock_bit(page, page_to_pfn(page), > - PB_migrate_isolate), > + VM_WARN_ONCE(get_pageblock_isolate(page), > "Use clear_pageblock_isolate() to unisolate pageblock"); > /* MIGRATETYPE_AND_ISO_MASK clears PB_migrate_isolate if it is set */ > #endif > @@ -2058,9 +2057,9 @@ static unsigned long find_large_buddy(unsigned long start_pfn) > static inline void toggle_pageblock_isolate(struct page *page, bool isolate) > { > if (isolate) > - set_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate); > + set_pageblock_isolate(page); > else > - clear_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate); > + clear_pageblock_isolate(page); > } > > /** ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 2:11 [Patch v2 0/2] mm/pageblock: improve readability of some pageblock handling Wei Yang 2025-08-27 2:11 ` [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading Wei Yang @ 2025-08-27 2:11 ` Wei Yang 2025-08-27 2:21 ` Zi Yan 2025-08-27 9:38 ` Vlastimil Babka 2025-08-27 8:04 ` [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling syzbot ci 2 siblings, 2 replies; 12+ messages in thread From: Wei Yang @ 2025-08-27 2:11 UTC (permalink / raw) To: akpm, david, lorenzo.stoakes, vbabka; +Cc: linux-mm, Wei Yang, Zi Yan enum pageblock_bits defines the meaning of pageblock bits. Currently PB_migratetype_bits says the lowest 3 bits represents migratetype and PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical computation. Remove the definition of PB_migratetype_bits/PB_migrate_end. Use PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can simplify related definition. Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks cleaner. No functional change intended. Signed-off-by: Wei Yang <richard.weiyang@gmail.com> Cc: Zi Yan <ziy@nvidia.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: David Hildenbrand <david@redhat.com> Suggested-by: David Hildenbrand <david@redhat.com> --- v2: remove PB_migratetype_bits and PB_migrate_end --- include/linux/pageblock-flags.h | 12 +++++------- mm/page_alloc.c | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h index 6a44be0f39f4..6e4c2da15706 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h @@ -13,12 +13,11 @@ #include <linux/types.h> -#define PB_migratetype_bits 3 /* Bit indices that affect a whole block of pages */ enum pageblock_bits { - PB_migrate, - PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, - /* 3 bits required for migrate types */ + PB_migrate_0, + PB_migrate_1, + PB_migrate_2, PB_compact_skip,/* If set the block is skipped by compaction */ #ifdef CONFIG_MEMORY_ISOLATION @@ -37,11 +36,10 @@ enum pageblock_bits { #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) #ifdef CONFIG_MEMORY_ISOLATION -#define MIGRATETYPE_AND_ISO_MASK \ - (((1UL << (PB_migrate_end + 1)) - 1) | BIT(PB_migrate_isolate)) +#define MIGRATETYPE_AND_ISO_MASK (MIGRATETYPE_MASK | BIT(PB_migrate_isolate)) #else #define MIGRATETYPE_AND_ISO_MASK MIGRATETYPE_MASK #endif diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e534f31a6b39..c1a18aaf8b41 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -355,7 +355,7 @@ static inline int pfn_to_bitidx(const struct page *page, unsigned long pfn) static __always_inline bool is_standalone_pb_bit(enum pageblock_bits pb_bit) { - return pb_bit > PB_migrate_end && pb_bit < __NR_PAGEBLOCK_BITS; + return pb_bit >= PB_compact_skip && pb_bit < __NR_PAGEBLOCK_BITS; } static __always_inline void @@ -370,7 +370,7 @@ get_pfnblock_bitmap_bitidx(const struct page *page, unsigned long pfn, #else BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); #endif - BUILD_BUG_ON(__MIGRATE_TYPE_END >= (1 << PB_migratetype_bits)); + BUILD_BUG_ON(__MIGRATE_TYPE_END > MIGRATETYPE_MASK); VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page); bitmap = get_pageblock_bitmap(page, pfn); -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 2:11 ` [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end Wei Yang @ 2025-08-27 2:21 ` Zi Yan 2025-08-27 6:43 ` Wei Yang 2025-08-27 9:17 ` David Hildenbrand 2025-08-27 9:38 ` Vlastimil Babka 1 sibling, 2 replies; 12+ messages in thread From: Zi Yan @ 2025-08-27 2:21 UTC (permalink / raw) To: Wei Yang; +Cc: akpm, david, lorenzo.stoakes, vbabka, linux-mm On 26 Aug 2025, at 22:11, Wei Yang wrote: > enum pageblock_bits defines the meaning of pageblock bits. Currently > PB_migratetype_bits says the lowest 3 bits represents migratetype and > PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical > computation. > > Remove the definition of PB_migratetype_bits/PB_migrate_end. Use > PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can > simplify related definition. > > Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. > Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks > cleaner. > > No functional change intended. > > Signed-off-by: Wei Yang <richard.weiyang@gmail.com> > Cc: Zi Yan <ziy@nvidia.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: David Hildenbrand <david@redhat.com> > Suggested-by: David Hildenbrand <david@redhat.com> > > --- > v2: remove PB_migratetype_bits and PB_migrate_end > --- > include/linux/pageblock-flags.h | 12 +++++------- > mm/page_alloc.c | 4 ++-- > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h > index 6a44be0f39f4..6e4c2da15706 100644 > --- a/include/linux/pageblock-flags.h > +++ b/include/linux/pageblock-flags.h > @@ -13,12 +13,11 @@ > > #include <linux/types.h> > > -#define PB_migratetype_bits 3 > /* Bit indices that affect a whole block of pages */ > enum pageblock_bits { > - PB_migrate, > - PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, > - /* 3 bits required for migrate types */ > + PB_migrate_0, > + PB_migrate_1, > + PB_migrate_2, > PB_compact_skip,/* If set the block is skipped by compaction */ > > #ifdef CONFIG_MEMORY_ISOLATION > @@ -37,11 +36,10 @@ enum pageblock_bits { > > #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) > > -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) > +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) I think David meant #define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migrate_2)) Otherwise, LGTM. Feel free to add Reviewed-by: Zi Yan <ziy@nvidia.com>, once you fix the above. > > #ifdef CONFIG_MEMORY_ISOLATION > -#define MIGRATETYPE_AND_ISO_MASK \ > - (((1UL << (PB_migrate_end + 1)) - 1) | BIT(PB_migrate_isolate)) > +#define MIGRATETYPE_AND_ISO_MASK (MIGRATETYPE_MASK | BIT(PB_migrate_isolate)) > #else > #define MIGRATETYPE_AND_ISO_MASK MIGRATETYPE_MASK > #endif > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e534f31a6b39..c1a18aaf8b41 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -355,7 +355,7 @@ static inline int pfn_to_bitidx(const struct page *page, unsigned long pfn) > > static __always_inline bool is_standalone_pb_bit(enum pageblock_bits pb_bit) > { > - return pb_bit > PB_migrate_end && pb_bit < __NR_PAGEBLOCK_BITS; > + return pb_bit >= PB_compact_skip && pb_bit < __NR_PAGEBLOCK_BITS; > } > > static __always_inline void > @@ -370,7 +370,7 @@ get_pfnblock_bitmap_bitidx(const struct page *page, unsigned long pfn, > #else > BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); > #endif > - BUILD_BUG_ON(__MIGRATE_TYPE_END >= (1 << PB_migratetype_bits)); > + BUILD_BUG_ON(__MIGRATE_TYPE_END > MIGRATETYPE_MASK); > VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page); > > bitmap = get_pageblock_bitmap(page, pfn); > -- > 2.34.1 -- Best Regards, Yan, Zi ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 2:21 ` Zi Yan @ 2025-08-27 6:43 ` Wei Yang 2025-08-27 9:16 ` David Hildenbrand 2025-08-27 9:17 ` David Hildenbrand 1 sibling, 1 reply; 12+ messages in thread From: Wei Yang @ 2025-08-27 6:43 UTC (permalink / raw) To: Zi Yan; +Cc: Wei Yang, akpm, david, lorenzo.stoakes, vbabka, linux-mm On Tue, Aug 26, 2025 at 10:21:20PM -0400, Zi Yan wrote: >On 26 Aug 2025, at 22:11, Wei Yang wrote: > >> enum pageblock_bits defines the meaning of pageblock bits. Currently >> PB_migratetype_bits says the lowest 3 bits represents migratetype and >> PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical >> computation. >> >> Remove the definition of PB_migratetype_bits/PB_migrate_end. Use >> PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can >> simplify related definition. >> >> Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. >> Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks >> cleaner. >> >> No functional change intended. >> >> Signed-off-by: Wei Yang <richard.weiyang@gmail.com> >> Cc: Zi Yan <ziy@nvidia.com> >> Cc: Vlastimil Babka <vbabka@suse.cz> >> Cc: David Hildenbrand <david@redhat.com> >> Suggested-by: David Hildenbrand <david@redhat.com> >> >> --- >> v2: remove PB_migratetype_bits and PB_migrate_end >> --- >> include/linux/pageblock-flags.h | 12 +++++------- >> mm/page_alloc.c | 4 ++-- >> 2 files changed, 7 insertions(+), 9 deletions(-) >> >> diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h >> index 6a44be0f39f4..6e4c2da15706 100644 >> --- a/include/linux/pageblock-flags.h >> +++ b/include/linux/pageblock-flags.h >> @@ -13,12 +13,11 @@ >> >> #include <linux/types.h> >> >> -#define PB_migratetype_bits 3 >> /* Bit indices that affect a whole block of pages */ >> enum pageblock_bits { >> - PB_migrate, >> - PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, >> - /* 3 bits required for migrate types */ >> + PB_migrate_0, >> + PB_migrate_1, >> + PB_migrate_2, >> PB_compact_skip,/* If set the block is skipped by compaction */ >> >> #ifdef CONFIG_MEMORY_ISOLATION >> @@ -37,11 +36,10 @@ enum pageblock_bits { >> >> #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) >> >> -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) >> +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) > >I think David meant > >#define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migrate_2)) > Oops, I thinks you are right. -- Wei Yang Help you, Help me ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 6:43 ` Wei Yang @ 2025-08-27 9:16 ` David Hildenbrand 2025-08-27 14:41 ` Wei Yang 0 siblings, 1 reply; 12+ messages in thread From: David Hildenbrand @ 2025-08-27 9:16 UTC (permalink / raw) To: Wei Yang, Zi Yan; +Cc: akpm, lorenzo.stoakes, vbabka, linux-mm On 27.08.25 08:43, Wei Yang wrote: > On Tue, Aug 26, 2025 at 10:21:20PM -0400, Zi Yan wrote: >> On 26 Aug 2025, at 22:11, Wei Yang wrote: >> >>> enum pageblock_bits defines the meaning of pageblock bits. Currently >>> PB_migratetype_bits says the lowest 3 bits represents migratetype and >>> PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical >>> computation. >>> >>> Remove the definition of PB_migratetype_bits/PB_migrate_end. Use >>> PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can >>> simplify related definition. >>> >>> Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. >>> Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks >>> cleaner. >>> >>> No functional change intended. >>> >>> Signed-off-by: Wei Yang <richard.weiyang@gmail.com> >>> Cc: Zi Yan <ziy@nvidia.com> >>> Cc: Vlastimil Babka <vbabka@suse.cz> >>> Cc: David Hildenbrand <david@redhat.com> >>> Suggested-by: David Hildenbrand <david@redhat.com> >>> >>> --- >>> v2: remove PB_migratetype_bits and PB_migrate_end >>> --- >>> include/linux/pageblock-flags.h | 12 +++++------- >>> mm/page_alloc.c | 4 ++-- >>> 2 files changed, 7 insertions(+), 9 deletions(-) >>> >>> diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h >>> index 6a44be0f39f4..6e4c2da15706 100644 >>> --- a/include/linux/pageblock-flags.h >>> +++ b/include/linux/pageblock-flags.h >>> @@ -13,12 +13,11 @@ >>> >>> #include <linux/types.h> >>> >>> -#define PB_migratetype_bits 3 >>> /* Bit indices that affect a whole block of pages */ >>> enum pageblock_bits { >>> - PB_migrate, >>> - PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, >>> - /* 3 bits required for migrate types */ >>> + PB_migrate_0, >>> + PB_migrate_1, >>> + PB_migrate_2, >>> PB_compact_skip,/* If set the block is skipped by compaction */ >>> >>> #ifdef CONFIG_MEMORY_ISOLATION >>> @@ -37,11 +36,10 @@ enum pageblock_bits { >>> >>> #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) >>> >>> -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) >>> +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) >> >> I think David meant >> >> #define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migrate_2)) Yes :) >> > > Oops, I thinks you are right. It goes without saying: please test your patches before submitting ;) -- Cheers David / dhildenb ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 9:16 ` David Hildenbrand @ 2025-08-27 14:41 ` Wei Yang 0 siblings, 0 replies; 12+ messages in thread From: Wei Yang @ 2025-08-27 14:41 UTC (permalink / raw) To: David Hildenbrand Cc: Wei Yang, Zi Yan, akpm, lorenzo.stoakes, vbabka, linux-mm On Wed, Aug 27, 2025 at 11:16:02AM +0200, David Hildenbrand wrote: [...] >> > > >> > > #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) >> > > >> > > -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) >> > > +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) >> > >> > I think David meant >> > >> > #define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migrate_2)) > >Yes :) > >> > >> >> Oops, I thinks you are right. > >It goes without saying: please test your patches before submitting ;) > To be honest, I tested before submitting. And I confused why I don't see error. Finally I found the reason is I don't set CONFIG_CMA... fortunate or unfortunate... >-- >Cheers > >David / dhildenb -- Wei Yang Help you, Help me ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 2:21 ` Zi Yan 2025-08-27 6:43 ` Wei Yang @ 2025-08-27 9:17 ` David Hildenbrand 1 sibling, 0 replies; 12+ messages in thread From: David Hildenbrand @ 2025-08-27 9:17 UTC (permalink / raw) To: Zi Yan, Wei Yang; +Cc: akpm, lorenzo.stoakes, vbabka, linux-mm On 27.08.25 04:21, Zi Yan wrote: > On 26 Aug 2025, at 22:11, Wei Yang wrote: > >> enum pageblock_bits defines the meaning of pageblock bits. Currently >> PB_migratetype_bits says the lowest 3 bits represents migratetype and >> PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical >> computation. >> >> Remove the definition of PB_migratetype_bits/PB_migrate_end. Use >> PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can >> simplify related definition. >> >> Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. >> Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks >> cleaner. >> >> No functional change intended. >> >> Signed-off-by: Wei Yang <richard.weiyang@gmail.com> >> Cc: Zi Yan <ziy@nvidia.com> >> Cc: Vlastimil Babka <vbabka@suse.cz> >> Cc: David Hildenbrand <david@redhat.com> >> Suggested-by: David Hildenbrand <david@redhat.com> >> >> --- >> v2: remove PB_migratetype_bits and PB_migrate_end >> --- >> include/linux/pageblock-flags.h | 12 +++++------- >> mm/page_alloc.c | 4 ++-- >> 2 files changed, 7 insertions(+), 9 deletions(-) >> >> diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h >> index 6a44be0f39f4..6e4c2da15706 100644 >> --- a/include/linux/pageblock-flags.h >> +++ b/include/linux/pageblock-flags.h >> @@ -13,12 +13,11 @@ >> >> #include <linux/types.h> >> >> -#define PB_migratetype_bits 3 >> /* Bit indices that affect a whole block of pages */ >> enum pageblock_bits { >> - PB_migrate, >> - PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, >> - /* 3 bits required for migrate types */ >> + PB_migrate_0, >> + PB_migrate_1, >> + PB_migrate_2, >> PB_compact_skip,/* If set the block is skipped by compaction */ >> >> #ifdef CONFIG_MEMORY_ISOLATION >> @@ -37,11 +36,10 @@ enum pageblock_bits { >> >> #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) >> >> -#define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) >> +#define MIGRATETYPE_MASK (PB_migrate_0|PB_migrate_1|PB_migrate_2) > > I think David meant > > #define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migrate_2)) > > Otherwise, LGTM. Feel free to add Reviewed-by: Zi Yan <ziy@nvidia.com>, > once you fix the above. Yes, with that this should just work Acked-by: David Hildenbrand <david@redhat.com> -- Cheers David / dhildenb ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end 2025-08-27 2:11 ` [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end Wei Yang 2025-08-27 2:21 ` Zi Yan @ 2025-08-27 9:38 ` Vlastimil Babka 1 sibling, 0 replies; 12+ messages in thread From: Vlastimil Babka @ 2025-08-27 9:38 UTC (permalink / raw) To: Wei Yang, akpm, david, lorenzo.stoakes; +Cc: linux-mm, Zi Yan On 8/27/25 04:11, Wei Yang wrote: > enum pageblock_bits defines the meaning of pageblock bits. Currently > PB_migratetype_bits says the lowest 3 bits represents migratetype and > PB_migrate_end/MIGRATETYPE_MASK's definition rely on it with magical > computation. > > Remove the definition of PB_migratetype_bits/PB_migrate_end. Use > PB_migrate_[0|1|2] to represent lowest bits for migratetype. Then we can > simplify related definition. > > Also, MIGRATETYPE_AND_ISO_MASK is MIGRATETYPE_MASK add isolation bit. > Use MIGRATETYPE_MASK in the definition of MIGRATETYPE_AND_ISO_MASK looks > cleaner. > > No functional change intended. > > Signed-off-by: Wei Yang <richard.weiyang@gmail.com> > Cc: Zi Yan <ziy@nvidia.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: David Hildenbrand <david@redhat.com> > Suggested-by: David Hildenbrand <david@redhat.com> Once fixed as suggested, Acked-by: Vlastimil Babka <vbabka@suse.cz> ^ permalink raw reply [flat|nested] 12+ messages in thread
* [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling 2025-08-27 2:11 [Patch v2 0/2] mm/pageblock: improve readability of some pageblock handling Wei Yang 2025-08-27 2:11 ` [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading Wei Yang 2025-08-27 2:11 ` [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end Wei Yang @ 2025-08-27 8:04 ` syzbot ci 2025-08-27 14:43 ` Wei Yang 2 siblings, 1 reply; 12+ messages in thread From: syzbot ci @ 2025-08-27 8:04 UTC (permalink / raw) To: akpm, david, linux-mm, lorenzo.stoakes, richard.weiyang, vbabka, ziy Cc: syzbot, syzkaller-bugs syzbot ci has tested the following series [v2] mm/pageblock: improve readability of some pageblock handling https://lore.kernel.org/all/20250827021121.13645-1-richard.weiyang@gmail.com * [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading * [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end and found the following issue: kernel build error Full report is available here: https://ci.syzbot.org/series/51db4b94-ae73-4ea0-8cf3-4ea5b7715cf1 *** kernel build error tree: torvalds URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux base: fab1beda7597fac1cecc01707d55eadb6bbe773c arch: amd64 compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 config: https://ci.syzbot.org/builds/49ee15fe-3add-4064-a3a9-1461fbba8c85/config mm/page_alloc.c:373:2: error: call to '__compiletime_assert_1636' declared with 'error' attribute: BUILD_BUG_ON failed: __MIGRATE_TYPE_END > MIGRATETYPE_MASK *** If these findings have caused you to resend the series or submit a separate fix, please add the following tag to your commit message: Tested-by: syzbot@syzkaller.appspotmail.com --- This report is generated by a bot. It may contain errors. syzbot ci engineers can be reached at syzkaller@googlegroups.com. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling 2025-08-27 8:04 ` [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling syzbot ci @ 2025-08-27 14:43 ` Wei Yang 0 siblings, 0 replies; 12+ messages in thread From: Wei Yang @ 2025-08-27 14:43 UTC (permalink / raw) To: syzbot ci Cc: akpm, david, linux-mm, lorenzo.stoakes, richard.weiyang, vbabka, ziy, syzbot, syzkaller-bugs On Wed, Aug 27, 2025 at 01:04:19AM -0700, syzbot ci wrote: >syzbot ci has tested the following series > >[v2] mm/pageblock: improve readability of some pageblock handling >https://lore.kernel.org/all/20250827021121.13645-1-richard.weiyang@gmail.com >* [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading >* [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end > >and found the following issue: >kernel build error > >Full report is available here: >https://ci.syzbot.org/series/51db4b94-ae73-4ea0-8cf3-4ea5b7715cf1 > >*** > >kernel build error > >tree: torvalds >URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux >base: fab1beda7597fac1cecc01707d55eadb6bbe773c >arch: amd64 >compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 >config: https://ci.syzbot.org/builds/49ee15fe-3add-4064-a3a9-1461fbba8c85/config > >mm/page_alloc.c:373:2: error: call to '__compiletime_assert_1636' declared with 'error' attribute: BUILD_BUG_ON failed: __MIGRATE_TYPE_END > MIGRATETYPE_MASK > Thanks, this is noticed by Zi Yan. >*** > >If these findings have caused you to resend the series or submit a >separate fix, please add the following tag to your commit message: > Tested-by: syzbot@syzkaller.appspotmail.com > >--- >This report is generated by a bot. It may contain errors. >syzbot ci engineers can be reached at syzkaller@googlegroups.com. -- Wei Yang Help you, Help me ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-08-27 14:43 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-27 2:11 [Patch v2 0/2] mm/pageblock: improve readability of some pageblock handling Wei Yang 2025-08-27 2:11 ` [Patch v2 1/2] mm/page_alloc: use xxx_pageblock_isolate() for better reading Wei Yang 2025-08-27 9:33 ` Vlastimil Babka 2025-08-27 2:11 ` [Patch v2 2/2] mm/pageblock-flags: remove PB_migratetype_bits/PB_migrate_end Wei Yang 2025-08-27 2:21 ` Zi Yan 2025-08-27 6:43 ` Wei Yang 2025-08-27 9:16 ` David Hildenbrand 2025-08-27 14:41 ` Wei Yang 2025-08-27 9:17 ` David Hildenbrand 2025-08-27 9:38 ` Vlastimil Babka 2025-08-27 8:04 ` [syzbot ci] Re: mm/pageblock: improve readability of some pageblock handling syzbot ci 2025-08-27 14:43 ` Wei Yang
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).