diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 12:45:58 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 12:45:58 -0500 |
commit | f0f1b3364ae7f48084bdf2837fb979ff59622523 (patch) | |
tree | e5ef68c0071f44178cc8d1948b64e216d57422aa /arch | |
parent | 4383f18b7f94a4d668c5eec68645c75d44556235 (diff) | |
parent | b7143156c9ceee1a072c57aac8729d2dec5b3bf1 (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (112 commits)
ACPI: fix build warning
Revert "cpuidle: build fix for non-x86"
ACPI: update intrd DSDT override console messages
ACPI: update DSDT override documentation
ACPI: Add "acpi_no_initrd_override" kernel parameter
ACPI: its a directory not a folder....
ACPI: misc cleanups
ACPI: add missing prink prefix strings
ACPI: cleanup acpi.h
ACPICA: fix CONFIG_ACPI_DEBUG_FUNC_TRACE build
ACPI: video: Ignore ACPI video devices that aren't present in hardware
ACPI: video: reset brightness on resume
ACPI: video: call ACPI notifier chain for ACPI video notifications
ACPI: create notifier chain to get hotkey events to graphics driver
ACPI: video: delete unused display switch on hotkey event code
ACPI: video: create "brightness_switch_enabled" modparam
cpuidle: Add a poll_idle method
ACPI: cpuidle: Support C1 idle time accounting
ACPI: enable MWAIT for C1 idle
ACPI: idle: Fix acpi_safe_halt usages and interrupt enabling/disabling
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/acpi-processor.c | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/acpi.c | 32 | ||||
-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 |
7 files changed, 34 insertions, 67 deletions
diff --git a/arch/ia64/kernel/acpi-processor.c b/arch/ia64/kernel/acpi-processor.c index 5a216c019924..cbe6cee5a550 100644 --- a/arch/ia64/kernel/acpi-processor.c +++ b/arch/ia64/kernel/acpi-processor.c | |||
@@ -45,6 +45,12 @@ static void init_intel_pdc(struct acpi_processor *pr) | |||
45 | buf[0] = ACPI_PDC_REVISION_ID; | 45 | buf[0] = ACPI_PDC_REVISION_ID; |
46 | buf[1] = 1; | 46 | buf[1] = 1; |
47 | buf[2] = ACPI_PDC_EST_CAPABILITY_SMP; | 47 | buf[2] = ACPI_PDC_EST_CAPABILITY_SMP; |
48 | /* | ||
49 | * The default of PDC_SMP_T_SWCOORD bit is set for IA64 cpu so | ||
50 | * that OSPM is capable of native ACPI throttling software | ||
51 | * coordination using BIOS supplied _TSD info. | ||
52 | */ | ||
53 | buf[2] |= ACPI_PDC_SMP_T_SWCOORD; | ||
48 | 54 | ||
49 | obj->type = ACPI_TYPE_BUFFER; | 55 | obj->type = ACPI_TYPE_BUFFER; |
50 | obj->buffer.length = 12; | 56 | obj->buffer.length = 12; |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 00b5d08f6da8..78f28d825f30 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 | } |
@@ -601,8 +615,6 @@ int acpi_register_gsi(u32 gsi, int triggering, int polarity) | |||
601 | IOSAPIC_LEVEL); | 615 | IOSAPIC_LEVEL); |
602 | } | 616 | } |
603 | 617 | ||
604 | EXPORT_SYMBOL(acpi_register_gsi); | ||
605 | |||
606 | void acpi_unregister_gsi(u32 gsi) | 618 | void acpi_unregister_gsi(u32 gsi) |
607 | { | 619 | { |
608 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) | 620 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) |
@@ -611,8 +623,6 @@ void acpi_unregister_gsi(u32 gsi) | |||
611 | iosapic_unregister_intr(gsi); | 623 | iosapic_unregister_intr(gsi); |
612 | } | 624 | } |
613 | 625 | ||
614 | EXPORT_SYMBOL(acpi_unregister_gsi); | ||
615 | |||
616 | static int __init acpi_parse_fadt(struct acpi_table_header *table) | 626 | static int __init acpi_parse_fadt(struct acpi_table_header *table) |
617 | { | 627 | { |
618 | struct acpi_table_header *fadt_header; | 628 | struct acpi_table_header *fadt_header; |
@@ -631,18 +641,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
631 | return 0; | 641 | return 0; |
632 | } | 642 | } |
633 | 643 | ||
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) | 644 | int __init acpi_boot_init(void) |
647 | { | 645 | { |
648 | 646 | ||
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__); |