diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:39:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:39:36 -0500 |
commit | 1eca9acbf9cda6437db7de1097c7a18014b1289d (patch) | |
tree | 04c03ae847df74e45eac2eba5920761986a779c6 /arch/x86/kernel/acpi | |
parent | 0091945b4732469bb39bbb4556ce08a25d89d1c2 (diff) | |
parent | ca2107c9d6cf44fb915402d6f12b9d9ff3925cd7 (diff) |
Merge branch 'x86-numa-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-numa-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, numa: Remove configurable node size support for numa emulation
x86, numa: Add fixed node size option for numa emulation
x86, numa: Fix numa emulation calculation of big nodes
x86, acpi: Map hotadded cpu to correct node.
Diffstat (limited to 'arch/x86/kernel/acpi')
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index af1c5833ff23..f95703098f8d 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -49,6 +49,7 @@ EXPORT_SYMBOL(acpi_disabled); | |||
49 | 49 | ||
50 | #ifdef CONFIG_X86_64 | 50 | #ifdef CONFIG_X86_64 |
51 | # include <asm/proto.h> | 51 | # include <asm/proto.h> |
52 | # include <asm/numa_64.h> | ||
52 | #endif /* X86 */ | 53 | #endif /* X86 */ |
53 | 54 | ||
54 | #define BAD_MADT_ENTRY(entry, end) ( \ | 55 | #define BAD_MADT_ENTRY(entry, end) ( \ |
@@ -482,6 +483,25 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, int polarity) | |||
482 | */ | 483 | */ |
483 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | 484 | #ifdef CONFIG_ACPI_HOTPLUG_CPU |
484 | 485 | ||
486 | static void acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) | ||
487 | { | ||
488 | #ifdef CONFIG_ACPI_NUMA | ||
489 | int nid; | ||
490 | |||
491 | nid = acpi_get_node(handle); | ||
492 | if (nid == -1 || !node_online(nid)) | ||
493 | return; | ||
494 | #ifdef CONFIG_X86_64 | ||
495 | apicid_to_node[physid] = nid; | ||
496 | numa_set_node(cpu, nid); | ||
497 | #else /* CONFIG_X86_32 */ | ||
498 | apicid_2_node[physid] = nid; | ||
499 | cpu_to_node_map[cpu] = nid; | ||
500 | #endif | ||
501 | |||
502 | #endif | ||
503 | } | ||
504 | |||
485 | static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) | 505 | static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) |
486 | { | 506 | { |
487 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 507 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
@@ -540,6 +560,7 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) | |||
540 | } | 560 | } |
541 | 561 | ||
542 | cpu = cpumask_first(new_map); | 562 | cpu = cpumask_first(new_map); |
563 | acpi_map_cpu2node(handle, cpu, physid); | ||
543 | 564 | ||
544 | *pcpu = cpu; | 565 | *pcpu = cpu; |
545 | retval = 0; | 566 | retval = 0; |