From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0DE35C25B75 for ; Mon, 3 Jun 2024 12:41:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 706356B0096; Mon, 3 Jun 2024 08:41:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B4C46B0098; Mon, 3 Jun 2024 08:41:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5A36B6B0099; Mon, 3 Jun 2024 08:41:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 3C4DF6B0098 for ; Mon, 3 Jun 2024 08:41:31 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F3BB5A23A5 for ; Mon, 3 Jun 2024 12:41:30 +0000 (UTC) X-FDA: 82189538340.02.2A3D96F Received: from out-171.mta0.migadu.com (out-171.mta0.migadu.com [91.218.175.171]) by imf25.hostedemail.com (Postfix) with ESMTP id CAD32A0009 for ; Mon, 3 Jun 2024 12:41:28 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=tDB4cice; spf=pass (imf25.hostedemail.com: domain of yajun.deng@linux.dev designates 91.218.175.171 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717418489; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=r9ORv+D4KXvQw4kDs7LTGsygzFqYpk/yJ4Bzv0bGNrk=; b=75wmUfyFixcXKRM2u+u2yWhRVi7lPOjW28Oq5TJVXlYBSYH5YAeCF2qcG+/U3vh0sj99lZ crKuVhW+QJhecK46lWAaPs3OJ5SyassEY83MTV8KZcNxcPtQoi2olzdAseMuiTVKONowmP S7hz8aDUzPbe+NtOGl+Rq0F7nCfvX5c= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=tDB4cice; spf=pass (imf25.hostedemail.com: domain of yajun.deng@linux.dev designates 91.218.175.171 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717418489; a=rsa-sha256; cv=none; b=Y9ltmtC5a/KO3oFQ9HfcJVXE+wCmp5Q5+iIiscZ+8d6S16dgIJGXLZHL7rSIQzGE6Hp+y6 2ZimurAxMC7J5YifcZFE4WjDApYy/nEO/tHCqFaoB32Jvwk/F7vdwpkXPMxrK9jrsEfT8r 9dn79F1bYM32suAKiBvkeljpkZuB3SM= X-Envelope-To: akpm@linux-foundation.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1717418486; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=r9ORv+D4KXvQw4kDs7LTGsygzFqYpk/yJ4Bzv0bGNrk=; b=tDB4ciceghAj/5wh/U5v3RkLjY6MlxxUatHh8wJtp+DjEwwESQu+JHk0ILtWTJpF3a9rjL VHbO2J0PHNrrWu8tLe5f/7bQFZv+b0nFpxmrtJdCIaWXwxmiXUklwRMRVOIBcl/iWqFuG9 ndQbs2tpG22gH4zKmemKBAMvRxPO20U= X-Envelope-To: rppt@kernel.org X-Envelope-To: hannes@cmpxchg.org X-Envelope-To: linux-mm@kvack.org X-Envelope-To: linux-kernel@vger.kernel.org X-Envelope-To: yajun.deng@linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Yajun Deng To: akpm@linux-foundation.org, rppt@kernel.org, hannes@cmpxchg.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yajun Deng Subject: [PATCH] mm: pass the pfn to set_pageblock_migratetype Date: Mon, 3 Jun 2024 20:41:00 +0800 Message-Id: <20240603124100.2834-1-yajun.deng@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: CAD32A0009 X-Stat-Signature: 8d7zx811f9ry9hycqhikf6kib7hg5b5c X-HE-Tag: 1717418488-577066 X-HE-Meta: U2FsdGVkX18AZP5CENbTSJ4ATwhUImmNpxKrBkeLzS6tQItZ/6mjs8/s8jTOawitd1TlMUJ1XUYhYfuApv858AJ5ca/R1r22l5VS22TzVMCPway6sjUh2F/Ij7LZ3CVXWdXVXyoY6Mb1erBeUbKCVbxqqUs3Lun195edWr26LHDKCC3WgvQNYnlaf3w/C0jOzCCHsR2jdAC73uOtasofubBSzBdZ6KCRbvoMtCmJSt0pSiBYesucR8RZ8TsTnVGqUkeeE47ZeiQH/ALwbYf+C+rBWJbUaR0kvGe1a4lc0jj1L4dlw8k9vQxfYSGgkLpoDB4PWeJf9tCjlq5pjG4oEhzkbJb4UKmx5TVb9VXh5dHa4jC6fTk1jNB0/9RxA3XcrURtauS8YlOrDX+e6JhLKgxoOudOy1O0sRR9YoAS3VuqwO4i0kScnm6HoGABN0WQITvwHQqNyw7VIiy/oSRt6wIeUMimDMortBTfbQcBnZh0ItdFvkBmd4CiIKgI701gPtzjfhmOkkWHIEdNdbVtenMTxWxlli1kvA6ISbfI5Y2XnvkotjBKVwIy8xVZmPUUIU/rgToYEwzo/uoV7ikIyr0kL3K99yKjzp/l3g7FTA9AdofpR2aROU+zK0NE7fhf+dMbkrV6FA1/e4labFCVobx5/o8D7oxc0OV4Lhn9tLgqsMvNCo8c6f3Jamv/DLGdUSuTKTs+SK/XnOAk1F6Wg4iN4cWcAfIztkR3H/pr1XFdEMzYDYrHxA2STae9QShH3LsKAI87m5Fg1Es4ojZn5+t2e4AVOVNeoOM6e0LD4rgKg/4kJaGCh1iuEYB6rvXaxquU4OtSqAmpgt2Q8uDcqMUxMTbnK1LJHOWMHMTxVHpOIe2B2EkXBQusPlGjlW3UdICQ8pGJ+5WLAIDQUyMW0SuqIDrdojxqP3BK+VcfIeH88jnySXIf3K46AS5j1yUVaQ9XWVnGCVH57K4Ef6u 6HBXH8p+ K9M+bDBYuFv93BxyFrl84+BKyICleryIh5JaV1wCAJP4j9xXLoUZhi3X8+D8XU1bQ2OTPiKnM+5GypY3pQ/PbbBfw+IG4npLtsFy3WIrp6uF/quSZnhp3msqjM45lvQAsS9wU X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: It is necessary to calculate the pfn in the set_pageblock_migratetype(), but most of the callers already have the pfn. To reduce the calculation, pass the pfn to set_pageblock_migratetype(). Signed-off-by: Yajun Deng --- include/linux/page-isolation.h | 2 +- mm/mm_init.c | 10 +++++----- mm/page_alloc.c | 18 +++++++++--------- mm/page_isolation.c | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index c16db0067090..b7d55f35eac0 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -33,7 +33,7 @@ static inline bool is_migrate_isolate(int migratetype) #define MEMORY_OFFLINE 0x1 #define REPORT_FAILURE 0x2 -void set_pageblock_migratetype(struct page *page, int migratetype); +void set_pageblock_migratetype(struct page *page, unsigned long pfn, int migratetype); bool move_freepages_block_isolate(struct zone *zone, struct page *page, int migratetype); diff --git a/mm/mm_init.c b/mm/mm_init.c index 426314eeecec..85a98d3b8c0e 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -901,7 +901,7 @@ void __meminit memmap_init_range(unsigned long size, int nid, unsigned long zone * over the place during system boot. */ if (pageblock_aligned(pfn)) { - set_pageblock_migratetype(page, migratetype); + set_pageblock_migratetype(page, pfn, migratetype); cond_resched(); } pfn++; @@ -1005,7 +1005,7 @@ static void __ref __init_zone_device_page(struct page *page, unsigned long pfn, * because this is done early in section_activate() */ if (pageblock_aligned(pfn)) { - set_pageblock_migratetype(page, MIGRATE_MOVABLE); + set_pageblock_migratetype(page, pfn, MIGRATE_MOVABLE); cond_resched(); } @@ -1927,7 +1927,7 @@ static void __init deferred_free_range(unsigned long pfn, /* Free a large naturally-aligned chunk if possible */ if (nr_pages == MAX_ORDER_NR_PAGES && IS_MAX_ORDER_ALIGNED(pfn)) { for (i = 0; i < nr_pages; i += pageblock_nr_pages) - set_pageblock_migratetype(page + i, MIGRATE_MOVABLE); + set_pageblock_migratetype(page + i, pfn + i, MIGRATE_MOVABLE); __free_pages_core(page, MAX_PAGE_ORDER); return; } @@ -1937,7 +1937,7 @@ static void __init deferred_free_range(unsigned long pfn, for (i = 0; i < nr_pages; i++, page++, pfn++) { if (pageblock_aligned(pfn)) - set_pageblock_migratetype(page, MIGRATE_MOVABLE); + set_pageblock_migratetype(page, pfn, MIGRATE_MOVABLE); __free_pages_core(page, 0); } } @@ -2291,7 +2291,7 @@ void __init init_cma_reserved_pageblock(struct page *page) set_page_count(p, 0); } while (++p, --i); - set_pageblock_migratetype(page, MIGRATE_CMA); + set_pageblock_migratetype(page, page_to_pfn(page), MIGRATE_CMA); set_page_refcounted(page); __free_pages(page, pageblock_order); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 3734fe7e67c0..fe9d37f1b1e4 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -412,14 +412,14 @@ void set_pfnblock_flags_mask(struct page *page, unsigned long flags, } while (!try_cmpxchg(&bitmap[word_bitidx], &word, (word & ~mask) | flags)); } -void set_pageblock_migratetype(struct page *page, int migratetype) +void set_pageblock_migratetype(struct page *page, unsigned long pfn, int migratetype) { if (unlikely(page_group_by_mobility_disabled && migratetype < MIGRATE_PCPTYPES)) migratetype = MIGRATE_UNMOVABLE; set_pfnblock_flags_mask(page, (unsigned long)migratetype, - page_to_pfn(page), MIGRATETYPE_MASK); + pfn, MIGRATETYPE_MASK); } #ifdef CONFIG_DEBUG_VM @@ -817,7 +817,7 @@ static inline void __free_one_page(struct page *page, * expand() down the line puts the sub-blocks * on the right freelists. */ - set_pageblock_migratetype(buddy, migratetype); + set_pageblock_migratetype(buddy, buddy_pfn, migratetype); } combined_pfn = buddy_pfn & pfn; @@ -1579,7 +1579,7 @@ static int __move_freepages_block(struct zone *zone, unsigned long start_pfn, pages_moved += 1 << order; } - set_pageblock_migratetype(pfn_to_page(start_pfn), new_mt); + set_pageblock_migratetype(pfn_to_page(start_pfn), start_pfn, new_mt); return pages_moved; } @@ -1730,7 +1730,7 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(buddy, zone, order, get_pfnblock_migratetype(buddy, pfn)); - set_pageblock_migratetype(page, migratetype); + set_pageblock_migratetype(page, page_to_pfn(page), migratetype); split_large_buddy(zone, buddy, pfn, order); return true; } @@ -1741,7 +1741,7 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(page, zone, order, get_pfnblock_migratetype(page, pfn)); - set_pageblock_migratetype(page, migratetype); + set_pageblock_migratetype(page, pfn, migratetype); split_large_buddy(zone, page, pfn, order); return true; } @@ -1753,14 +1753,14 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, } #endif /* CONFIG_MEMORY_ISOLATION */ -static void change_pageblock_range(struct page *pageblock_page, +static void change_pageblock_range(struct page *page, int start_order, int migratetype) { int nr_pageblocks = 1 << (start_order - pageblock_order); while (nr_pageblocks--) { - set_pageblock_migratetype(pageblock_page, migratetype); - pageblock_page += pageblock_nr_pages; + set_pageblock_migratetype(page, page_to_pfn(page), migratetype); + page += pageblock_nr_pages; } } diff --git a/mm/page_isolation.c b/mm/page_isolation.c index 042937d5abe4..a436bf4da04e 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -254,7 +254,7 @@ static void unset_migratetype_isolate(struct page *page, int migratetype) */ WARN_ON_ONCE(!move_freepages_block_isolate(zone, page, migratetype)); } else { - set_pageblock_migratetype(page, migratetype); + set_pageblock_migratetype(page, page_to_pfn(page), migratetype); __putback_isolated_page(page, order, migratetype); } zone->nr_isolate_pageblock--; -- 2.25.1