x86-64, NUMA: Add common find_node_by_addr()
srat_64.c and amdtopology_64.c had their own versions of find_node_by_addr() which were basically the same. Add common one in numa_64.c and remove the duplicates. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: Cyrill Gorcunov <gorcunov@gmail.com> Cc: Shaohui Zheng <shaohui.zheng@intel.com> Cc: David Rientjes <rientjes@google.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
56e827fbde
commit
a844ef46fa
|
@ -35,6 +35,7 @@ extern int __init numa_add_memblk(int nodeid, u64 start, u64 end);
|
||||||
#define FAKE_NODE_MIN_SIZE ((u64)32 << 20)
|
#define FAKE_NODE_MIN_SIZE ((u64)32 << 20)
|
||||||
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
|
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
|
||||||
void numa_emu_cmdline(char *);
|
void numa_emu_cmdline(char *);
|
||||||
|
int __init find_node_by_addr(unsigned long addr);
|
||||||
#endif /* CONFIG_NUMA_EMU */
|
#endif /* CONFIG_NUMA_EMU */
|
||||||
#else
|
#else
|
||||||
static inline int numa_cpu_node(int cpu) { return NUMA_NO_NODE; }
|
static inline int numa_cpu_node(int cpu) { return NUMA_NO_NODE; }
|
||||||
|
|
|
@ -205,19 +205,6 @@ static s16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
|
||||||
[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
|
[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init find_node_by_addr(unsigned long addr)
|
|
||||||
{
|
|
||||||
int ret = NUMA_NO_NODE;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
if (addr >= numa_nodes[i].start && addr < numa_nodes[i].end) {
|
|
||||||
ret = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For NUMA emulation, fake proximity domain (_PXM) to node id mappings must be
|
* For NUMA emulation, fake proximity domain (_PXM) to node id mappings must be
|
||||||
* setup to represent the physical topology but reflect the emulated
|
* setup to represent the physical topology but reflect the emulated
|
||||||
|
|
|
@ -430,6 +430,25 @@ void __init numa_emu_cmdline(char *str)
|
||||||
cmdline = str;
|
cmdline = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __init find_node_by_addr(unsigned long addr)
|
||||||
|
{
|
||||||
|
int ret = NUMA_NO_NODE;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for_each_node_mask(i, mem_nodes_parsed) {
|
||||||
|
/*
|
||||||
|
* Find the real node that this emulated node appears on. For
|
||||||
|
* the sake of simplicity, we only use a real node's starting
|
||||||
|
* address to determine which emulated node it appears on.
|
||||||
|
*/
|
||||||
|
if (addr >= numa_nodes[i].start && addr < numa_nodes[i].end) {
|
||||||
|
ret = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int __init setup_physnodes(unsigned long start, unsigned long end)
|
static int __init setup_physnodes(unsigned long start, unsigned long end)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
|
@ -277,24 +277,6 @@ static int fake_node_to_pxm_map[MAX_NUMNODES] __initdata = {
|
||||||
static s16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
|
static s16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
|
||||||
[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
|
[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
|
||||||
};
|
};
|
||||||
static int __init find_node_by_addr(unsigned long addr)
|
|
||||||
{
|
|
||||||
int ret = NUMA_NO_NODE;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for_each_node_mask(i, mem_nodes_parsed) {
|
|
||||||
/*
|
|
||||||
* Find the real node that this emulated node appears on. For
|
|
||||||
* the sake of simplicity, we only use a real node's starting
|
|
||||||
* address to determine which emulated node it appears on.
|
|
||||||
*/
|
|
||||||
if (addr >= numa_nodes[i].start && addr < numa_nodes[i].end) {
|
|
||||||
ret = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In NUMA emulation, we need to setup proximity domain (_PXM) to node ID
|
* In NUMA emulation, we need to setup proximity domain (_PXM) to node ID
|
||||||
|
|
Loading…
Reference in New Issue