@@ -271,7 +271,7 @@ void __init numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn)
#ifdef CONFIG_ACPI_NUMA
if ( !numa_off &&
- !acpi_scan_nodes(pfn_to_paddr(start_pfn), pfn_to_paddr(end_pfn)) )
+ !numa_scan_nodes(pfn_to_paddr(start_pfn), pfn_to_paddr(end_pfn)) )
return;
#endif
@@ -957,7 +957,7 @@ int cpu_add(uint32_t apic_id, uint32_t acpi_id, uint32_t pxm)
if ( !srat_disabled() )
{
- nodeid_t node = setup_node(pxm);
+ nodeid_t node = acpi_setup_node(pxm);
if ( node == NUMA_NO_NODE )
{
@@ -85,6 +85,14 @@ static inline bool node_found(unsigned int idx, unsigned int pxm)
(pxm2node[idx].node != NUMA_NO_NODE));
}
+static void reset_pxm2node(void)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(pxm2node); i++)
+ pxm2node[i].node = NUMA_NO_NODE;
+}
+
nodeid_t pxm_to_node(unsigned int pxm)
{
unsigned int i;
@@ -99,7 +107,7 @@ nodeid_t pxm_to_node(unsigned int pxm)
return NUMA_NO_NODE;
}
-nodeid_t setup_node(unsigned int pxm)
+nodeid_t acpi_setup_node(unsigned int pxm)
{
nodeid_t node;
unsigned int idx;
@@ -188,15 +196,14 @@ static void __init cutoff_node(nodeid_t i, paddr_t start, paddr_t end)
}
}
-static void __init bad_srat(void)
+static void __init numa_failed(void)
{
int i;
printk(KERN_ERR "SRAT: SRAT not used.\n");
acpi_numa = -1;
for (i = 0; i < MAX_LOCAL_APIC; i++)
apicid_to_node[i] = NUMA_NO_NODE;
- for (i = 0; i < ARRAY_SIZE(pxm2node); i++)
- pxm2node[i].node = NUMA_NO_NODE;
+ reset_pxm2node();
mem_hotplug = 0;
}
@@ -252,7 +259,7 @@ acpi_numa_x2apic_affinity_init(const struct acpi_srat_x2apic_cpu_affinity *pa)
if (srat_disabled())
return;
if (pa->header.length < sizeof(struct acpi_srat_x2apic_cpu_affinity)) {
- bad_srat();
+ numa_failed();
return;
}
if (!(pa->flags & ACPI_SRAT_CPU_ENABLED))
@@ -263,9 +270,9 @@ acpi_numa_x2apic_affinity_init(const struct acpi_srat_x2apic_cpu_affinity *pa)
}
pxm = pa->proximity_domain;
- node = setup_node(pxm);
+ node = acpi_setup_node(pxm);
if (node == NUMA_NO_NODE) {
- bad_srat();
+ numa_failed();
return;
}
@@ -286,7 +293,7 @@ acpi_numa_processor_affinity_init(const struct acpi_srat_cpu_affinity *pa)
if (srat_disabled())
return;
if (pa->header.length != sizeof(struct acpi_srat_cpu_affinity)) {
- bad_srat();
+ numa_failed();
return;
}
if (!(pa->flags & ACPI_SRAT_CPU_ENABLED))
@@ -297,9 +304,9 @@ acpi_numa_processor_affinity_init(const struct acpi_srat_cpu_affinity *pa)
pxm |= pa->proximity_domain_hi[1] << 16;
pxm |= pa->proximity_domain_hi[2] << 24;
}
- node = setup_node(pxm);
+ node = acpi_setup_node(pxm);
if (node == NUMA_NO_NODE) {
- bad_srat();
+ numa_failed();
return;
}
apicid_to_node[pa->apic_id] = node;
@@ -322,7 +329,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
if (srat_disabled())
return;
if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) {
- bad_srat();
+ numa_failed();
return;
}
if (!(ma->flags & ACPI_SRAT_MEM_ENABLED))
@@ -332,7 +339,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
{
dprintk(XENLOG_WARNING,
"Too many numa entry, try bigger NR_NODE_MEMBLKS \n");
- bad_srat();
+ numa_failed();
return;
}
@@ -341,9 +348,9 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
pxm = ma->proximity_domain;
if (srat_rev < 2)
pxm &= 0xff;
- node = setup_node(pxm);
+ node = acpi_setup_node(pxm);
if (node == NUMA_NO_NODE) {
- bad_srat();
+ numa_failed();
return;
}
/* It is fine to add this area to the nodes data it will be used later*/
@@ -360,7 +367,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
mismatch ? KERN_ERR : KERN_WARNING, pxm, start, end,
memblk->start, memblk->end);
if (mismatch) {
- bad_srat();
+ numa_failed();
return;
}
} else {
@@ -370,7 +377,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
"SRAT: PXM %u (%"PRIx64"-%"PRIx64") overlaps with PXM %u (%"PRIx64"-%"PRIx64")\n",
pxm, start, end, node_to_pxm(get_memblk_nodeid(i)),
memblk->start, memblk->end);
- bad_srat();
+ numa_failed();
return;
}
if (!(ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE)) {
@@ -392,7 +399,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
if (numa_add_memblk(node, start, ma->length)) {
printk(KERN_ERR "SRAT: node-id %u out of range\n", node);
- bad_srat();
+ numa_failed();
return;
}
@@ -405,7 +412,7 @@ acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity *ma)
/* Sanity check to catch more bad SRATs (they are amazingly common).
Make sure the PXMs cover all memory. */
-static int __init nodes_cover_memory(void)
+static bool __init arch_sanitize_nodes_memory(void)
{
int i;
@@ -443,10 +450,10 @@ static int __init nodes_cover_memory(void)
if (start < end) {
printk(KERN_ERR "SRAT: No PXM for e820 range: "
"%016Lx - %016Lx\n", start, end);
- return 0;
+ return false;
}
}
- return 1;
+ return true;
}
void __init acpi_numa_arch_fixup(void) {}
@@ -503,7 +510,7 @@ void __init srat_parse_regions(paddr_t addr)
}
/* Use the information discovered above to actually set up the nodes. */
-int __init acpi_scan_nodes(paddr_t start, paddr_t end)
+int __init numa_scan_nodes(paddr_t start, paddr_t end)
{
unsigned int i;
nodemask_t all_nodes_parsed;
@@ -517,8 +524,8 @@ int __init acpi_scan_nodes(paddr_t start, paddr_t end)
if (acpi_numa <= 0)
return -1;
- if (!nodes_cover_memory()) {
- bad_srat();
+ if (!arch_sanitize_nodes_memory()) {
+ numa_failed();
return -1;
}
@@ -529,7 +536,7 @@ int __init acpi_scan_nodes(paddr_t start, paddr_t end)
memnode_shift = 0;
printk(KERN_ERR
"SRAT: No NUMA node hash function found. Contact maintainer\n");
- bad_srat();
+ numa_failed();
return -1;
}
@@ -1368,7 +1368,7 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
if ( !mem_hotadd_check(spfn, epfn) )
return -EINVAL;
- if ( (node = setup_node(pxm)) == NUMA_NO_NODE )
+ if ( (node = acpi_setup_node(pxm)) == NUMA_NO_NODE )
return -EINVAL;
if ( !valid_numa_range(spfn << PAGE_SHIFT, epfn << PAGE_SHIFT, node) )
@@ -104,7 +104,7 @@ extern void acpi_reserve_bootmem(void);
#define ARCH_HAS_POWER_INIT 1
extern s8 acpi_numa;
-extern int acpi_scan_nodes(paddr_t start, paddr_t end);
+extern int numa_scan_nodes(paddr_t start, paddr_t end);
#ifdef CONFIG_ACPI_SLEEP
@@ -36,7 +36,7 @@ extern bool numa_off;
extern int srat_disabled(void);
extern void numa_set_node(int cpu, nodeid_t node);
-extern nodeid_t setup_node(unsigned int pxm);
+extern nodeid_t acpi_setup_node(unsigned int pxm);
extern void srat_detect_node(int cpu);
extern void setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end);