mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
x86/srat: Simplify memory affinity init error handling
The acpi_numa_memory_affinity_init() function can fail in several scenarios, use a single point of error return. Signed-off-by: Davidlohr Bueso <davidlohr.bueso@hp.com> Link: http://lkml.kernel.org/r/1357690721.1890.15.camel@buesod1.americas.hpqcorp.net [ Cleaned up the label naming a bit. ] Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
b9975dabe3
commit
479a99a8e5
@ -149,39 +149,40 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
|
||||
int node, pxm;
|
||||
|
||||
if (srat_disabled())
|
||||
return -1;
|
||||
if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) {
|
||||
bad_srat();
|
||||
return -1;
|
||||
}
|
||||
goto out_err;
|
||||
if (ma->header.length != sizeof(struct acpi_srat_mem_affinity))
|
||||
goto out_err_bad_srat;
|
||||
if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0)
|
||||
return -1;
|
||||
|
||||
goto out_err;
|
||||
if ((ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) && !save_add_info())
|
||||
return -1;
|
||||
goto out_err;
|
||||
|
||||
start = ma->base_address;
|
||||
end = start + ma->length;
|
||||
pxm = ma->proximity_domain;
|
||||
if (acpi_srat_revision <= 1)
|
||||
pxm &= 0xff;
|
||||
|
||||
node = setup_node(pxm);
|
||||
if (node < 0) {
|
||||
printk(KERN_ERR "SRAT: Too many proximity domains.\n");
|
||||
bad_srat();
|
||||
return -1;
|
||||
goto out_err_bad_srat;
|
||||
}
|
||||
|
||||
if (numa_add_memblk(node, start, end) < 0) {
|
||||
bad_srat();
|
||||
return -1;
|
||||
}
|
||||
if (numa_add_memblk(node, start, end) < 0)
|
||||
goto out_err_bad_srat;
|
||||
|
||||
node_set(node, numa_nodes_parsed);
|
||||
|
||||
printk(KERN_INFO "SRAT: Node %u PXM %u [mem %#010Lx-%#010Lx]\n",
|
||||
node, pxm,
|
||||
(unsigned long long) start, (unsigned long long) end - 1);
|
||||
|
||||
return 0;
|
||||
out_err_bad_srat:
|
||||
bad_srat();
|
||||
out_err:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void __init acpi_numa_arch_fixup(void) {}
|
||||
|
Loading…
Reference in New Issue
Block a user