numa.c (692d73d2f0f75e58828ab05872b3789ae1f486ef) | numa.c (1b5695b02444660297cc54cab44f123ff28de2cc) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* Common code for 32 and 64-bit NUMA */ 3#include <linux/acpi.h> 4#include <linux/kernel.h> 5#include <linux/mm.h> 6#include <linux/of.h> 7#include <linux/string.h> 8#include <linux/init.h> --- 439 unchanged lines hidden (view full) --- 448 } 449} 450 451u64 __init numa_emu_dma_end(void) 452{ 453 return PFN_PHYS(MAX_DMA32_PFN); 454} 455#endif /* CONFIG_NUMA_EMU */ | 1// SPDX-License-Identifier: GPL-2.0-only 2/* Common code for 32 and 64-bit NUMA */ 3#include <linux/acpi.h> 4#include <linux/kernel.h> 5#include <linux/mm.h> 6#include <linux/of.h> 7#include <linux/string.h> 8#include <linux/init.h> --- 439 unchanged lines hidden (view full) --- 448 } 449} 450 451u64 __init numa_emu_dma_end(void) 452{ 453 return PFN_PHYS(MAX_DMA32_PFN); 454} 455#endif /* CONFIG_NUMA_EMU */ |
456 457#ifdef CONFIG_NUMA_KEEP_MEMINFO 458static int meminfo_to_nid(struct numa_meminfo *mi, u64 start) 459{ 460 int i; 461 462 for (i = 0; i < mi->nr_blks; i++) 463 if (mi->blk[i].start <= start && mi->blk[i].end > start) 464 return mi->blk[i].nid; 465 return NUMA_NO_NODE; 466} 467 468int phys_to_target_node(phys_addr_t start) 469{ 470 int nid = meminfo_to_nid(&numa_meminfo, start); 471 472 /* 473 * Prefer online nodes, but if reserved memory might be 474 * hot-added continue the search with reserved ranges. 475 */ 476 if (nid != NUMA_NO_NODE) 477 return nid; 478 479 return meminfo_to_nid(&numa_reserved_meminfo, start); 480} 481EXPORT_SYMBOL_GPL(phys_to_target_node); 482 483int memory_add_physaddr_to_nid(u64 start) 484{ 485 int nid = meminfo_to_nid(&numa_meminfo, start); 486 487 if (nid == NUMA_NO_NODE) 488 nid = numa_meminfo.blk[0].nid; 489 return nid; 490} 491EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); 492 493#endif | |