diff options
Diffstat (limited to 'arch/x86/kernel/acpi/boot.c')
| -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; |
