]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm-page_alloc-find_large_buddy-from-start_pfn-aligned-order-v2
authorWei Yang <richard.weiyang@gmail.com>
Tue, 2 Sep 2025 02:58:07 +0000 (02:58 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 12 Sep 2025 00:25:25 +0000 (17:25 -0700)
add comment on assignment of order

Link: https://lkml.kernel.org/r/20250828091618.7869-1-richard.weiyang@gmail.com
Link: https://lkml.kernel.org/r/20250902025807.11467-1-richard.weiyang@gmail.com
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: David Hildenbrand <david@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/page_alloc.c

index d8b7268f19f74874706df4c9e216eea8c9db8375..0873d640f26cc57d95f91df944d2c940a9dade53 100644 (file)
@@ -2033,6 +2033,12 @@ static int move_freepages_block(struct zone *zone, struct page *page,
 /* Look for a buddy that straddles start_pfn */
 static unsigned long find_large_buddy(unsigned long start_pfn)
 {
+       /*
+        * If start_pfn is not an order-0 PageBuddy, next PageBuddy containing
+        * start_pfn has minimal order of __ffs(start_pfn) + 1. Start checking
+        * the order with __ffs(start_pfn). If start_pfn is order-0 PageBuddy,
+        * the starting order does not matter.
+        */
        int order = start_pfn ? __ffs(start_pfn) : MAX_PAGE_ORDER;
        struct page *page;
        unsigned long pfn = start_pfn;