aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/numa.c
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2009-09-25 18:20:04 -0400
committerIngo Molnar <mingo@elte.hu>2009-10-12 16:56:46 -0400
commit8716273caef7f55f39fe4fc6c69c5f9f197f41f1 (patch)
tree7008ec37e866a2f23207a4ef41f0319b567dc7e0 /drivers/acpi/numa.c
parent8ee2debce32412118cf8c239e0026ace56ea1425 (diff)
x86: Export srat physical topology
This is the counterpart to "x86: export k8 physical topology" for SRAT. It is not as invasive because the acpi code already seperates node setup into detection and registration steps, with the exception of registering e820 active regions in acpi_numa_memory_affinity_init(). This is now moved to acpi_scan_nodes() if NUMA emulation is disabled or deferred. acpi_numa_init() now returns a value which specifies whether an underlying SRAT was located. If so, that topology can be used by the emulation code to interleave emulated nodes over physical nodes or to register the nodes for ACPI. acpi_get_nodes() may now be used to export the srat physical topology of the machine for NUMA emulation. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Andreas Herrmann <andreas.herrmann3@amd.com> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Balbir Singh <balbir@linux.vnet.ibm.com> Cc: Ankita Garg <ankita@in.ibm.com> Cc: Len Brown <len.brown@intel.com> LKML-Reference: <alpine.DEB.1.00.0909251518580.14754@chino.kir.corp.google.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/acpi/numa.c')
-rw-r--r--drivers/acpi/numa.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index 202dd0c976a3..2be2fb66204e 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -283,22 +283,24 @@ acpi_table_parse_srat(enum acpi_srat_type id,
283 283
284int __init acpi_numa_init(void) 284int __init acpi_numa_init(void)
285{ 285{
286 int ret = 0;
287
286 /* SRAT: Static Resource Affinity Table */ 288 /* SRAT: Static Resource Affinity Table */
287 if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) { 289 if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
288 acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY, 290 acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY,
289 acpi_parse_x2apic_affinity, NR_CPUS); 291 acpi_parse_x2apic_affinity, NR_CPUS);
290 acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY, 292 acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
291 acpi_parse_processor_affinity, NR_CPUS); 293 acpi_parse_processor_affinity, NR_CPUS);
292 acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY, 294 ret = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
293 acpi_parse_memory_affinity, 295 acpi_parse_memory_affinity,
294 NR_NODE_MEMBLKS); 296 NR_NODE_MEMBLKS);
295 } 297 }
296 298
297 /* SLIT: System Locality Information Table */ 299 /* SLIT: System Locality Information Table */
298 acpi_table_parse(ACPI_SIG_SLIT, acpi_parse_slit); 300 acpi_table_parse(ACPI_SIG_SLIT, acpi_parse_slit);
299 301
300 acpi_numa_arch_fixup(); 302 acpi_numa_arch_fixup();
301 return 0; 303 return ret;
302} 304}
303 305
304int acpi_get_pxm(acpi_handle h) 306int acpi_get_pxm(acpi_handle h)