diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 10 | ||||
-rw-r--r-- | arch/x86/kernel/e820.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/srat.c | 4 |
3 files changed, 12 insertions, 6 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index bfb4d01e0e51..5207035dc061 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN]; | |||
429 | static struct acpi_table_slit __initdata *slit_table; | 429 | static struct acpi_table_slit __initdata *slit_table; |
430 | cpumask_t early_cpu_possible_map = CPU_MASK_NONE; | 430 | cpumask_t early_cpu_possible_map = CPU_MASK_NONE; |
431 | 431 | ||
432 | static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa) | 432 | static int __init |
433 | get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa) | ||
433 | { | 434 | { |
434 | int pxm; | 435 | int pxm; |
435 | 436 | ||
436 | pxm = pa->proximity_domain_lo; | 437 | pxm = pa->proximity_domain_lo; |
437 | if (ia64_platform_is("sn2")) | 438 | if (ia64_platform_is("sn2") || acpi_srat_revision >= 2) |
438 | pxm += pa->proximity_domain_hi[0] << 8; | 439 | pxm += pa->proximity_domain_hi[0] << 8; |
439 | return pxm; | 440 | return pxm; |
440 | } | 441 | } |
441 | 442 | ||
442 | static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma) | 443 | static int __init |
444 | get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma) | ||
443 | { | 445 | { |
444 | int pxm; | 446 | int pxm; |
445 | 447 | ||
446 | pxm = ma->proximity_domain; | 448 | pxm = ma->proximity_domain; |
447 | if (!ia64_platform_is("sn2")) | 449 | if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1) |
448 | pxm &= 0xff; | 450 | pxm &= 0xff; |
449 | 451 | ||
450 | return pxm; | 452 | return pxm; |
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 174d938d576b..62d61e9976eb 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -703,7 +703,7 @@ void __init e820_mark_nosave_regions(unsigned long limit_pfn) | |||
703 | } | 703 | } |
704 | #endif | 704 | #endif |
705 | 705 | ||
706 | #ifdef CONFIG_HIBERNATION | 706 | #ifdef CONFIG_ACPI |
707 | /** | 707 | /** |
708 | * Mark ACPI NVS memory region, so that we can save/restore it during | 708 | * Mark ACPI NVS memory region, so that we can save/restore it during |
709 | * hibernation and the subsequent resume. | 709 | * hibernation and the subsequent resume. |
@@ -716,7 +716,7 @@ static int __init e820_mark_nvs_memory(void) | |||
716 | struct e820entry *ei = &e820.map[i]; | 716 | struct e820entry *ei = &e820.map[i]; |
717 | 717 | ||
718 | if (ei->type == E820_NVS) | 718 | if (ei->type == E820_NVS) |
719 | suspend_nvs_register(ei->addr, ei->size); | 719 | acpi_nvs_register(ei->addr, ei->size); |
720 | } | 720 | } |
721 | 721 | ||
722 | return 0; | 722 | return 0; |
diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c index fd61b3fb7341..1c1c4f46a7c1 100644 --- a/arch/x86/mm/srat.c +++ b/arch/x86/mm/srat.c | |||
@@ -109,6 +109,8 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) | |||
109 | if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0) | 109 | if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0) |
110 | return; | 110 | return; |
111 | pxm = pa->proximity_domain_lo; | 111 | pxm = pa->proximity_domain_lo; |
112 | if (acpi_srat_revision >= 2) | ||
113 | pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8; | ||
112 | node = setup_node(pxm); | 114 | node = setup_node(pxm); |
113 | if (node < 0) { | 115 | if (node < 0) { |
114 | printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm); | 116 | printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm); |
@@ -160,6 +162,8 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) | |||
160 | start = ma->base_address; | 162 | start = ma->base_address; |
161 | end = start + ma->length; | 163 | end = start + ma->length; |
162 | pxm = ma->proximity_domain; | 164 | pxm = ma->proximity_domain; |
165 | if (acpi_srat_revision <= 1) | ||
166 | pxm &= 0xff; | ||
163 | node = setup_node(pxm); | 167 | node = setup_node(pxm); |
164 | if (node < 0) { | 168 | if (node < 0) { |
165 | printk(KERN_ERR "SRAT: Too many proximity domains.\n"); | 169 | printk(KERN_ERR "SRAT: Too many proximity domains.\n"); |