This is a note to let you know that I've just added the patch titled Revert "mm: memblock: replace dereferences of memblock_region.nid with API calls" to the 5.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: revert-mm-memblock-replace-dereferences-of-memblock_.patch and it can be found in the queue-5.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. commit 9bfbdc69a529208b28202eb9eb05a85653bd0522 Author: Sasha Levin <sashal@xxxxxxxxxx> Date: Thu Jun 27 15:55:18 2024 -0400 Revert "mm: memblock: replace dereferences of memblock_region.nid with API calls" This reverts commit 43996cf3480ac3c7d16d48003c2ae5a6e7704029. Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 58c83c2b8748f..53ebb4babf3a7 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -354,16 +354,13 @@ static int __init numa_register_nodes(void) struct memblock_region *mblk; /* Check that valid nid is set to memblks */ - for_each_memblock(memory, mblk) { - int mblk_nid = memblock_get_region_node(mblk); - - if (mblk_nid == NUMA_NO_NODE || mblk_nid >= MAX_NUMNODES) { + for_each_memblock(memory, mblk) + if (mblk->nid == NUMA_NO_NODE || mblk->nid >= MAX_NUMNODES) { pr_warn("Warning: invalid memblk node %d [mem %#010Lx-%#010Lx]\n", - mblk_nid, mblk->base, + mblk->nid, mblk->base, mblk->base + mblk->size - 1); return -EINVAL; } - } /* Finally register nodes. */ for_each_node_mask(nid, numa_nodes_parsed) { diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index bd52ce954d59a..7316dca7e846a 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c @@ -502,10 +502,8 @@ static void __init numa_clear_kernel_node_hotplug(void) * reserve specific pages for Sandy Bridge graphics. ] */ for_each_memblock(reserved, mb_region) { - int nid = memblock_get_region_node(mb_region); - - if (nid != MAX_NUMNODES) - node_set(nid, reserved_nodemask); + if (mb_region->nid != MAX_NUMNODES) + node_set(mb_region->nid, reserved_nodemask); } /* diff --git a/mm/memblock.c b/mm/memblock.c index d2d85d4d16b74..a75cc65f03307 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1170,15 +1170,13 @@ void __init_memblock __next_mem_pfn_range(int *idx, int nid, { struct memblock_type *type = &memblock.memory; struct memblock_region *r; - int r_nid; while (++*idx < type->cnt) { r = &type->regions[*idx]; - r_nid = memblock_get_region_node(r); if (PFN_UP(r->base) >= PFN_DOWN(r->base + r->size)) continue; - if (nid == MAX_NUMNODES || nid == r_nid) + if (nid == MAX_NUMNODES || nid == r->nid) break; } if (*idx >= type->cnt) { @@ -1191,7 +1189,7 @@ void __init_memblock __next_mem_pfn_range(int *idx, int nid, if (out_end_pfn) *out_end_pfn = PFN_DOWN(r->base + r->size); if (out_nid) - *out_nid = r_nid; + *out_nid = r->nid; } /** @@ -1732,7 +1730,7 @@ int __init_memblock memblock_search_pfn_nid(unsigned long pfn, *start_pfn = PFN_DOWN(type->regions[mid].base); *end_pfn = PFN_DOWN(type->regions[mid].base + type->regions[mid].size); - return memblock_get_region_node(&type->regions[mid]); + return type->regions[mid].nid; } #endif diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4a649111178cc..0ad582945f54d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -7214,7 +7214,7 @@ static void __init find_zone_movable_pfns_for_nodes(void) if (!memblock_is_hotpluggable(r)) continue; - nid = memblock_get_region_node(r); + nid = r->nid; usable_startpfn = PFN_DOWN(r->base); zone_movable_pfn[nid] = zone_movable_pfn[nid] ? @@ -7235,7 +7235,7 @@ static void __init find_zone_movable_pfns_for_nodes(void) if (memblock_is_mirror(r)) continue; - nid = memblock_get_region_node(r); + nid = r->nid; usable_startpfn = memblock_region_memory_base_pfn(r);