From: Kemeng Shi Date: Fri, 11 Aug 2023 11:59:45 +0000 (+0800) Subject: mm/page_alloc: use get_pfnblock_migratetype to avoid extra page_to_pfn X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b5ffd2973365298c4d829802653133038837a6f9;p=tomoyo%2Ftomoyo-test1.git mm/page_alloc: use get_pfnblock_migratetype to avoid extra page_to_pfn We have get_pageblock_migratetype and get_pfnblock_migratetype to get migratetype of page. get_pfnblock_migratetype accepts both page and pfn from caller while get_pageblock_migratetype only accept page and get pfn with page_to_pfn from page. In case we already record pfn of page, we can simply call get_pfnblock_migratetype to avoid a page_to_pfn. Link: https://lkml.kernel.org/r/20230811115945.3423894-3-shikemeng@huaweicloud.com Signed-off-by: Kemeng Shi Acked-by: Mel Gorman Cc: Baolin Wang Cc: David Hildenbrand Cc: Matthew Wilcox (Oracle) Signed-off-by: Andrew Morton --- diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5e67fe937e19..986b56db96b5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -813,7 +813,7 @@ static inline void __free_one_page(struct page *page, * pageblock isolation could cause incorrect freepage or CMA * accounting or HIGHATOMIC accounting. */ - int buddy_mt = get_pageblock_migratetype(buddy); + int buddy_mt = get_pfnblock_migratetype(buddy, buddy_pfn); if (migratetype != buddy_mt && (!migratetype_is_mergeable(migratetype) || @@ -889,7 +889,7 @@ int split_free_page(struct page *free_page, goto out; } - mt = get_pageblock_migratetype(free_page); + mt = get_pfnblock_migratetype(free_page, free_page_pfn); if (likely(!is_migrate_isolate(mt))) __mod_zone_freepage_state(zone, -(1UL << order), mt);