Commit 1cc3ea44 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://linux-acpi.bkbits.net/linux-acpi

into home.osdl.org:/home/torvalds/v2.5/linux
parents f399dae1 e466afe1
...@@ -420,6 +420,15 @@ acpi_boot_init (void) ...@@ -420,6 +420,15 @@ acpi_boot_init (void)
return 1; return 1;
} }
/*
* if "noapic" boot option, don't look for IO-APICs
*/
if (skip_ioapic_setup) {
printk(KERN_INFO PREFIX "Skipping IOAPIC probe "
"due to 'noapic' option.\n");
return 1;
}
result = acpi_table_parse_madt(ACPI_MADT_IOAPIC, acpi_parse_ioapic); result = acpi_table_parse_madt(ACPI_MADT_IOAPIC, acpi_parse_ioapic);
if (!result) { if (!result) {
printk(KERN_ERR PREFIX "No IOAPIC entries present\n"); printk(KERN_ERR PREFIX "No IOAPIC entries present\n");
......
...@@ -415,16 +415,19 @@ static __init int swab_apm_power_in_minutes(struct dmi_blacklist *d) ...@@ -415,16 +415,19 @@ static __init int swab_apm_power_in_minutes(struct dmi_blacklist *d)
* The MP1.4 table is right however and so SMP kernels tend to work. * The MP1.4 table is right however and so SMP kernels tend to work.
*/ */
extern int skip_ioapic_setup;
static __init int broken_pirq(struct dmi_blacklist *d) static __init int broken_pirq(struct dmi_blacklist *d)
{ {
printk(KERN_INFO " *** Possibly defective BIOS detected (irqtable)\n"); printk(KERN_INFO " *** Possibly defective BIOS detected (irqtable)\n");
printk(KERN_INFO " *** Many BIOSes matching this signature have incorrect IRQ routing tables.\n"); printk(KERN_INFO " *** Many BIOSes matching this signature have incorrect IRQ routing tables.\n");
printk(KERN_INFO " *** If you see IRQ problems, in particular SCSI resets and hangs at boot\n"); printk(KERN_INFO " *** If you see IRQ problems, in particular SCSI resets and hangs at boot\n");
printk(KERN_INFO " *** contact your hardware vendor and ask about updates.\n"); printk(KERN_INFO " *** contact your hardware vendor and ask about updates.\n");
printk(KERN_INFO " *** Building an SMP kernel may evade the bug some of the time.\n"); printk(KERN_INFO " *** Building an SMP kernel may evade the bug some of the time.\n");
#ifdef CONFIG_X86_IO_APIC #ifdef CONFIG_X86_IO_APIC
skip_ioapic_setup = 0; {
extern int skip_ioapic_setup;
skip_ioapic_setup = 0;
}
#endif #endif
return 0; return 0;
} }
...@@ -516,7 +519,6 @@ static __init int print_if_true(struct dmi_blacklist *d) ...@@ -516,7 +519,6 @@ static __init int print_if_true(struct dmi_blacklist *d)
extern int acpi_disabled, acpi_force; extern int acpi_disabled, acpi_force;
extern int skip_ioapic_setup;
static __init __attribute__((unused)) int acpi_disable(struct dmi_blacklist *d) static __init __attribute__((unused)) int acpi_disable(struct dmi_blacklist *d)
{ {
...@@ -1002,13 +1004,15 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={ ...@@ -1002,13 +1004,15 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
* returns 1 or we hit the end. * returns 1 or we hit the end.
*/ */
#define ACPI_BLACKLIST_CUTOFF_YEAR 2001
static __init void dmi_check_blacklist(void) static __init void dmi_check_blacklist(void)
{ {
struct dmi_blacklist *d; struct dmi_blacklist *d;
int i; int i;
#ifdef CONFIG_ACPI_BOOT
#define ACPI_BLACKLIST_CUTOFF_YEAR 2001
if (dmi_ident[DMI_BIOS_DATE]) { if (dmi_ident[DMI_BIOS_DATE]) {
char *s = strrchr(dmi_ident[DMI_BIOS_DATE], '/'); char *s = strrchr(dmi_ident[DMI_BIOS_DATE], '/');
if (s) { if (s) {
...@@ -1026,6 +1030,7 @@ static __init void dmi_check_blacklist(void) ...@@ -1026,6 +1030,7 @@ static __init void dmi_check_blacklist(void)
} }
} }
} }
#endif
d=&dmi_blacklist[0]; d=&dmi_blacklist[0];
while(d->callback) while(d->callback)
......
...@@ -542,6 +542,11 @@ static void __init parse_cmdline_early (char ** cmdline_p) ...@@ -542,6 +542,11 @@ static void __init parse_cmdline_early (char ** cmdline_p)
acpi_ht = 1; acpi_ht = 1;
if (!acpi_force) acpi_disabled = 1; if (!acpi_force) acpi_disabled = 1;
} }
/* disable IO-APIC */
else if (!memcmp(from, "noapic", 6)) {
skip_ioapic_setup = 1;
}
#endif #endif
/* /*
......
...@@ -6,7 +6,7 @@ menu "ACPI (Advanced Configuration and Power Interface) Support" ...@@ -6,7 +6,7 @@ menu "ACPI (Advanced Configuration and Power Interface) Support"
config ACPI_HT config ACPI_HT
bool "ACPI Processor Enumeration for HT" bool "ACPI Processor Enumeration for HT"
depends on (X86 && X86_LOCAL_APIC) depends on X86
default y default y
---help--- ---help---
ACPI enumerates both logical (a.k.a. Hyper-Threaded -- HT) ACPI enumerates both logical (a.k.a. Hyper-Threaded -- HT)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment