diff options
Diffstat (limited to 'arch/x86/kernel/acpi/boot.c')
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 0ca27c7b0e8d..fc8825d4b996 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -496,7 +496,8 @@ EXPORT_SYMBOL(acpi_register_gsi); | |||
496 | * ACPI based hotplug support for CPU | 496 | * ACPI based hotplug support for CPU |
497 | */ | 497 | */ |
498 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | 498 | #ifdef CONFIG_ACPI_HOTPLUG_CPU |
499 | int acpi_map_lsapic(acpi_handle handle, int *pcpu) | 499 | |
500 | static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) | ||
500 | { | 501 | { |
501 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 502 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
502 | union acpi_object *obj; | 503 | union acpi_object *obj; |
@@ -551,6 +552,11 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu) | |||
551 | return 0; | 552 | return 0; |
552 | } | 553 | } |
553 | 554 | ||
555 | /* wrapper to silence section mismatch warning */ | ||
556 | int __ref acpi_map_lsapic(acpi_handle handle, int *pcpu) | ||
557 | { | ||
558 | return _acpi_map_lsapic(handle, pcpu); | ||
559 | } | ||
554 | EXPORT_SYMBOL(acpi_map_lsapic); | 560 | EXPORT_SYMBOL(acpi_map_lsapic); |
555 | 561 | ||
556 | int acpi_unmap_lsapic(int cpu) | 562 | int acpi_unmap_lsapic(int cpu) |
@@ -581,25 +587,6 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) | |||
581 | 587 | ||
582 | EXPORT_SYMBOL(acpi_unregister_ioapic); | 588 | EXPORT_SYMBOL(acpi_unregister_ioapic); |
583 | 589 | ||
584 | static unsigned long __init | ||
585 | acpi_scan_rsdp(unsigned long start, unsigned long length) | ||
586 | { | ||
587 | unsigned long offset = 0; | ||
588 | unsigned long sig_len = sizeof("RSD PTR ") - 1; | ||
589 | |||
590 | /* | ||
591 | * Scan all 16-byte boundaries of the physical memory region for the | ||
592 | * RSDP signature. | ||
593 | */ | ||
594 | for (offset = 0; offset < length; offset += 16) { | ||
595 | if (strncmp((char *)(phys_to_virt(start) + offset), "RSD PTR ", sig_len)) | ||
596 | continue; | ||
597 | return (start + offset); | ||
598 | } | ||
599 | |||
600 | return 0; | ||
601 | } | ||
602 | |||
603 | static int __init acpi_parse_sbf(struct acpi_table_header *table) | 590 | static int __init acpi_parse_sbf(struct acpi_table_header *table) |
604 | { | 591 | { |
605 | struct acpi_table_boot *sb; | 592 | struct acpi_table_boot *sb; |
@@ -742,27 +729,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
742 | return 0; | 729 | return 0; |
743 | } | 730 | } |
744 | 731 | ||
745 | unsigned long __init acpi_find_rsdp(void) | ||
746 | { | ||
747 | unsigned long rsdp_phys = 0; | ||
748 | |||
749 | if (efi_enabled) { | ||
750 | if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) | ||
751 | return efi.acpi20; | ||
752 | else if (efi.acpi != EFI_INVALID_TABLE_ADDR) | ||
753 | return efi.acpi; | ||
754 | } | ||
755 | /* | ||
756 | * Scan memory looking for the RSDP signature. First search EBDA (low | ||
757 | * memory) paragraphs and then search upper memory (E0000-FFFFF). | ||
758 | */ | ||
759 | rsdp_phys = acpi_scan_rsdp(0, 0x400); | ||
760 | if (!rsdp_phys) | ||
761 | rsdp_phys = acpi_scan_rsdp(0xE0000, 0x20000); | ||
762 | |||
763 | return rsdp_phys; | ||
764 | } | ||
765 | |||
766 | #ifdef CONFIG_X86_LOCAL_APIC | 732 | #ifdef CONFIG_X86_LOCAL_APIC |
767 | /* | 733 | /* |
768 | * Parse LAPIC entries in MADT | 734 | * Parse LAPIC entries in MADT |