diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 28 | ||||
-rw-r--r-- | arch/x86/Kconfig | 6 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 44 | ||||
-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, 25 insertions, 60 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 00b5d08f6da8..90680255032e 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -69,6 +69,20 @@ unsigned int acpi_cpei_phys_cpuid; | |||
69 | 69 | ||
70 | unsigned long acpi_wakeup_address = 0; | 70 | unsigned long acpi_wakeup_address = 0; |
71 | 71 | ||
72 | #ifdef CONFIG_IA64_GENERIC | ||
73 | static unsigned long __init acpi_find_rsdp(void) | ||
74 | { | ||
75 | unsigned long rsdp_phys = 0; | ||
76 | |||
77 | if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) | ||
78 | rsdp_phys = efi.acpi20; | ||
79 | else if (efi.acpi != EFI_INVALID_TABLE_ADDR) | ||
80 | printk(KERN_WARNING PREFIX | ||
81 | "v1.0/r0.71 tables no longer supported\n"); | ||
82 | return rsdp_phys; | ||
83 | } | ||
84 | #endif | ||
85 | |||
72 | const char __init * | 86 | const char __init * |
73 | acpi_get_sysname(void) | 87 | acpi_get_sysname(void) |
74 | { | 88 | { |
@@ -152,7 +166,7 @@ int acpi_request_vector(u32 int_type) | |||
152 | return vector; | 166 | return vector; |
153 | } | 167 | } |
154 | 168 | ||
155 | char *__acpi_map_table(unsigned long phys_addr, unsigned long size) | 169 | char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size) |
156 | { | 170 | { |
157 | return __va(phys_addr); | 171 | return __va(phys_addr); |
158 | } | 172 | } |
@@ -631,18 +645,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
631 | return 0; | 645 | return 0; |
632 | } | 646 | } |
633 | 647 | ||
634 | unsigned long __init acpi_find_rsdp(void) | ||
635 | { | ||
636 | unsigned long rsdp_phys = 0; | ||
637 | |||
638 | if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) | ||
639 | rsdp_phys = efi.acpi20; | ||
640 | else if (efi.acpi != EFI_INVALID_TABLE_ADDR) | ||
641 | printk(KERN_WARNING PREFIX | ||
642 | "v1.0/r0.71 tables no longer supported\n"); | ||
643 | return rsdp_phys; | ||
644 | } | ||
645 | |||
646 | int __init acpi_boot_init(void) | 648 | int __init acpi_boot_init(void) |
647 | { | 649 | { |
648 | 650 | ||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index e6728bd61cc1..3954ae96b0c7 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -98,6 +98,9 @@ config ARCH_HAS_ILOG2_U32 | |||
98 | config ARCH_HAS_ILOG2_U64 | 98 | config ARCH_HAS_ILOG2_U64 |
99 | def_bool n | 99 | def_bool n |
100 | 100 | ||
101 | config ARCH_HAS_CPU_IDLE_WAIT | ||
102 | def_bool y | ||
103 | |||
101 | config GENERIC_CALIBRATE_DELAY | 104 | config GENERIC_CALIBRATE_DELAY |
102 | def_bool y | 105 | def_bool y |
103 | 106 | ||
@@ -105,6 +108,9 @@ config GENERIC_TIME_VSYSCALL | |||
105 | bool | 108 | bool |
106 | default X86_64 | 109 | default X86_64 |
107 | 110 | ||
111 | config ARCH_HAS_CPU_RELAX | ||
112 | def_bool y | ||
113 | |||
108 | config HAVE_SETUP_PER_CPU_AREA | 114 | config HAVE_SETUP_PER_CPU_AREA |
109 | def_bool X86_64 | 115 | def_bool X86_64 |
110 | 116 | ||
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index d2a58431a074..f3e049ea86eb 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -106,7 +106,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC; | |||
106 | #ifdef CONFIG_X86_64 | 106 | #ifdef CONFIG_X86_64 |
107 | 107 | ||
108 | /* rely on all ACPI tables being in the direct mapping */ | 108 | /* rely on all ACPI tables being in the direct mapping */ |
109 | char *__acpi_map_table(unsigned long phys_addr, unsigned long size) | 109 | char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size) |
110 | { | 110 | { |
111 | if (!phys_addr || !size) | 111 | if (!phys_addr || !size) |
112 | return NULL; | 112 | return NULL; |
@@ -131,7 +131,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 | 131 | * 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. | 132 | * count idx down while incrementing the phys address. |
133 | */ | 133 | */ |
134 | char *__acpi_map_table(unsigned long phys, unsigned long size) | 134 | char *__init __acpi_map_table(unsigned long phys, unsigned long size) |
135 | { | 135 | { |
136 | unsigned long base, offset, mapped_size; | 136 | unsigned long base, offset, mapped_size; |
137 | int idx; | 137 | int idx; |
@@ -587,25 +587,6 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) | |||
587 | 587 | ||
588 | EXPORT_SYMBOL(acpi_unregister_ioapic); | 588 | EXPORT_SYMBOL(acpi_unregister_ioapic); |
589 | 589 | ||
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) | 590 | static int __init acpi_parse_sbf(struct acpi_table_header *table) |
610 | { | 591 | { |
611 | struct acpi_table_boot *sb; | 592 | struct acpi_table_boot *sb; |
@@ -748,27 +729,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
748 | return 0; | 729 | return 0; |
749 | } | 730 | } |
750 | 731 | ||
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 | 732 | #ifdef CONFIG_X86_LOCAL_APIC |
773 | /* | 733 | /* |
774 | * Parse LAPIC entries in MADT | 734 | * Parse LAPIC entries in MADT |
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__); |