aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 12:45:58 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 12:45:58 -0500
commitf0f1b3364ae7f48084bdf2837fb979ff59622523 (patch)
treee5ef68c0071f44178cc8d1948b64e216d57422aa /arch
parent4383f18b7f94a4d668c5eec68645c75d44556235 (diff)
parentb7143156c9ceee1a072c57aac8729d2dec5b3bf1 (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.c6
-rw-r--r--arch/ia64/kernel/acpi.c32
-rw-r--r--arch/x86/Kconfig3
-rw-r--r--arch/x86/kernel/acpi/boot.c47
-rw-r--r--arch/x86/kernel/acpi/processor.c6
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-lib.c5
-rw-r--r--arch/x86/kernel/srat_32.c2
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
70unsigned long acpi_wakeup_address = 0; 70unsigned long acpi_wakeup_address = 0;
71 71
72#ifdef CONFIG_IA64_GENERIC
73static 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
72const char __init * 86const char __init *
73acpi_get_sysname(void) 87acpi_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
155char *__acpi_map_table(unsigned long phys_addr, unsigned long size) 169char *__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
604EXPORT_SYMBOL(acpi_register_gsi);
605
606void acpi_unregister_gsi(u32 gsi) 618void 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
614EXPORT_SYMBOL(acpi_unregister_gsi);
615
616static int __init acpi_parse_fadt(struct acpi_table_header *table) 626static 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
634unsigned 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
646int __init acpi_boot_init(void) 644int __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
108config ARCH_HAS_CPU_RELAX
109 def_bool y
110
108config HAVE_SETUP_PER_CPU_AREA 111config 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 */
78int acpi_lapic; 78int acpi_lapic;
79int acpi_ioapic; 79int acpi_ioapic;
80int acpi_strict; 80int acpi_strict;
81EXPORT_SYMBOL(acpi_strict);
82 81
83u8 acpi_sci_flags __initdata; 82u8 acpi_sci_flags __initdata;
84int acpi_sci_override_gsi __initdata; 83int 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 */
109char *__acpi_map_table(unsigned long phys_addr, unsigned long size) 108char *__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 */
134char *__acpi_map_table(unsigned long phys, unsigned long size) 133char *__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
493EXPORT_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
588EXPORT_SYMBOL(acpi_unregister_ioapic); 585EXPORT_SYMBOL(acpi_unregister_ioapic);
589 586
590static unsigned long __init
591acpi_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
609static int __init acpi_parse_sbf(struct acpi_table_header *table) 587static 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
751unsigned 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__);