diff options
author | David Rientjes <rientjes@google.com> | 2009-09-25 18:20:04 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-10-12 16:56:46 -0400 |
commit | 8716273caef7f55f39fe4fc6c69c5f9f197f41f1 (patch) | |
tree | 7008ec37e866a2f23207a4ef41f0319b567dc7e0 /drivers/acpi | |
parent | 8ee2debce32412118cf8c239e0026ace56ea1425 (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')
-rw-r--r-- | drivers/acpi/numa.c | 10 |
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 | ||
284 | int __init acpi_numa_init(void) | 284 | int __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 | ||
304 | int acpi_get_pxm(acpi_handle h) | 306 | int acpi_get_pxm(acpi_handle h) |