diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig | 3 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 47 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/processor.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/cpufreq/speedstep-lib.c | 5 | ||||
-rw-r--r-- | arch/x86/kernel/srat_32.c | 2 |
5 files changed, 13 insertions, 50 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 923c3babd667..c95482b6b6dd 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -105,6 +105,9 @@ config GENERIC_TIME_VSYSCALL | |||
105 | bool | 105 | bool |
106 | default X86_64 | 106 | default X86_64 |
107 | 107 | ||
108 | config ARCH_HAS_CPU_RELAX | ||
109 | def_bool y | ||
110 | |||
108 | config HAVE_SETUP_PER_CPU_AREA | 111 | config HAVE_SETUP_PER_CPU_AREA |
109 | def_bool X86_64 | 112 | def_bool X86_64 |
110 | 113 | ||
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index d2a58431a074..680b7300a489 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -78,7 +78,6 @@ int acpi_ht __initdata = 1; /* enable HT */ | |||
78 | int acpi_lapic; | 78 | int acpi_lapic; |
79 | int acpi_ioapic; | 79 | int acpi_ioapic; |
80 | int acpi_strict; | 80 | int acpi_strict; |
81 | EXPORT_SYMBOL(acpi_strict); | ||
82 | 81 | ||
83 | u8 acpi_sci_flags __initdata; | 82 | u8 acpi_sci_flags __initdata; |
84 | int acpi_sci_override_gsi __initdata; | 83 | int acpi_sci_override_gsi __initdata; |
@@ -106,7 +105,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC; | |||
106 | #ifdef CONFIG_X86_64 | 105 | #ifdef CONFIG_X86_64 |
107 | 106 | ||
108 | /* rely on all ACPI tables being in the direct mapping */ | 107 | /* rely on all ACPI tables being in the direct mapping */ |
109 | char *__acpi_map_table(unsigned long phys_addr, unsigned long size) | 108 | char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size) |
110 | { | 109 | { |
111 | if (!phys_addr || !size) | 110 | if (!phys_addr || !size) |
112 | return NULL; | 111 | return NULL; |
@@ -131,7 +130,7 @@ char *__acpi_map_table(unsigned long phys_addr, unsigned long size) | |||
131 | * from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and | 130 | * from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and |
132 | * count idx down while incrementing the phys address. | 131 | * count idx down while incrementing the phys address. |
133 | */ | 132 | */ |
134 | char *__acpi_map_table(unsigned long phys, unsigned long size) | 133 | char *__init __acpi_map_table(unsigned long phys, unsigned long size) |
135 | { | 134 | { |
136 | unsigned long base, offset, mapped_size; | 135 | unsigned long base, offset, mapped_size; |
137 | int idx; | 136 | int idx; |
@@ -490,8 +489,6 @@ int acpi_register_gsi(u32 gsi, int triggering, int polarity) | |||
490 | return irq; | 489 | return irq; |
491 | } | 490 | } |
492 | 491 | ||
493 | EXPORT_SYMBOL(acpi_register_gsi); | ||
494 | |||
495 | /* | 492 | /* |
496 | * ACPI based hotplug support for CPU | 493 | * ACPI based hotplug support for CPU |
497 | */ | 494 | */ |
@@ -587,25 +584,6 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) | |||
587 | 584 | ||
588 | EXPORT_SYMBOL(acpi_unregister_ioapic); | 585 | EXPORT_SYMBOL(acpi_unregister_ioapic); |
589 | 586 | ||
590 | static unsigned long __init | ||
591 | acpi_scan_rsdp(unsigned long start, unsigned long length) | ||
592 | { | ||
593 | unsigned long offset = 0; | ||
594 | unsigned long sig_len = sizeof("RSD PTR ") - 1; | ||
595 | |||
596 | /* | ||
597 | * Scan all 16-byte boundaries of the physical memory region for the | ||
598 | * RSDP signature. | ||
599 | */ | ||
600 | for (offset = 0; offset < length; offset += 16) { | ||
601 | if (strncmp((char *)(phys_to_virt(start) + offset), "RSD PTR ", sig_len)) | ||
602 | continue; | ||
603 | return (start + offset); | ||
604 | } | ||
605 | |||
606 | return 0; | ||
607 | } | ||
608 | |||
609 | static int __init acpi_parse_sbf(struct acpi_table_header *table) | 587 | static int __init acpi_parse_sbf(struct acpi_table_header *table) |
610 | { | 588 | { |
611 | struct acpi_table_boot *sb; | 589 | struct acpi_table_boot *sb; |
@@ -748,27 +726,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
748 | return 0; | 726 | return 0; |
749 | } | 727 | } |
750 | 728 | ||
751 | unsigned long __init acpi_find_rsdp(void) | ||
752 | { | ||
753 | unsigned long rsdp_phys = 0; | ||
754 | |||
755 | if (efi_enabled) { | ||
756 | if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) | ||
757 | return efi.acpi20; | ||
758 | else if (efi.acpi != EFI_INVALID_TABLE_ADDR) | ||
759 | return efi.acpi; | ||
760 | } | ||
761 | /* | ||
762 | * Scan memory looking for the RSDP signature. First search EBDA (low | ||
763 | * memory) paragraphs and then search upper memory (E0000-FFFFF). | ||
764 | */ | ||
765 | rsdp_phys = acpi_scan_rsdp(0, 0x400); | ||
766 | if (!rsdp_phys) | ||
767 | rsdp_phys = acpi_scan_rsdp(0xE0000, 0x20000); | ||
768 | |||
769 | return rsdp_phys; | ||
770 | } | ||
771 | |||
772 | #ifdef CONFIG_X86_LOCAL_APIC | 729 | #ifdef CONFIG_X86_LOCAL_APIC |
773 | /* | 730 | /* |
774 | * Parse LAPIC entries in MADT | 731 | * Parse LAPIC entries in MADT |
diff --git a/arch/x86/kernel/acpi/processor.c b/arch/x86/kernel/acpi/processor.c index a25db514c719..324eb0cab19c 100644 --- a/arch/x86/kernel/acpi/processor.c +++ b/arch/x86/kernel/acpi/processor.c | |||
@@ -46,6 +46,12 @@ static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c) | |||
46 | buf[1] = 1; | 46 | buf[1] = 1; |
47 | buf[2] = ACPI_PDC_C_CAPABILITY_SMP; | 47 | buf[2] = ACPI_PDC_C_CAPABILITY_SMP; |
48 | 48 | ||
49 | /* | ||
50 | * The default of PDC_SMP_T_SWCOORD bit is set for intel x86 cpu so | ||
51 | * that OSPM is capable of native ACPI throttling software | ||
52 | * coordination using BIOS supplied _TSD info. | ||
53 | */ | ||
54 | buf[2] |= ACPI_PDC_SMP_T_SWCOORD; | ||
49 | if (cpu_has(c, X86_FEATURE_EST)) | 55 | if (cpu_has(c, X86_FEATURE_EST)) |
50 | buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP; | 56 | buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP; |
51 | 57 | ||
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c b/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c index 76c3ab0da468..98d4fdb7dc04 100644 --- a/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c +++ b/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c | |||
@@ -189,10 +189,7 @@ static unsigned int pentium4_get_frequency(void) | |||
189 | printk(KERN_DEBUG "speedstep-lib: couldn't detect FSB speed. Please send an e-mail to <linux@brodo.de>\n"); | 189 | printk(KERN_DEBUG "speedstep-lib: couldn't detect FSB speed. Please send an e-mail to <linux@brodo.de>\n"); |
190 | 190 | ||
191 | /* Multiplier. */ | 191 | /* Multiplier. */ |
192 | if (c->x86_model < 2) | 192 | mult = msr_lo >> 24; |
193 | mult = msr_lo >> 27; | ||
194 | else | ||
195 | mult = msr_lo >> 24; | ||
196 | 193 | ||
197 | dprintk("P4 - FSB %u kHz; Multiplier %u; Speed %u kHz\n", fsb, mult, (fsb * mult)); | 194 | dprintk("P4 - FSB %u kHz; Multiplier %u; Speed %u kHz\n", fsb, mult, (fsb * mult)); |
198 | 195 | ||
diff --git a/arch/x86/kernel/srat_32.c b/arch/x86/kernel/srat_32.c index 2bf6903cb444..b72e61359c36 100644 --- a/arch/x86/kernel/srat_32.c +++ b/arch/x86/kernel/srat_32.c | |||
@@ -274,7 +274,7 @@ int __init get_memcfg_from_srat(void) | |||
274 | int tables = 0; | 274 | int tables = 0; |
275 | int i = 0; | 275 | int i = 0; |
276 | 276 | ||
277 | rsdp_address = acpi_find_rsdp(); | 277 | rsdp_address = acpi_os_get_root_pointer(); |
278 | if (!rsdp_address) { | 278 | if (!rsdp_address) { |
279 | printk("%s: System description tables not found\n", | 279 | printk("%s: System description tables not found\n", |
280 | __FUNCTION__); | 280 | __FUNCTION__); |