[PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT If no DSDT found, call acpi_disable_pci When using pci=noacpi, or apci=noirq, acpi_noirq is set. We should skip acpi_process_madt. So to avoid enumerate lapic two times. Signed-off-by: Yinghai Lu diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index bfb3bfc..f497d78 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c @@ -297,6 +297,7 @@ acpi_get_table_header_early(enum acpi_ta if (!*header) { printk(KERN_WARNING PREFIX "Unable to map DSDT\n"); + acpi_disable_pci(); return -ENODEV; } } diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index d12fb97..0d350d0 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c @@ -1242,7 +1242,11 @@ int __init acpi_boot_init(void) /* * Process the Multiple APIC Description Table (MADT), if present */ - acpi_process_madt(); + /* with acpi_noirq we don't need to process madt, So don't need + * ennumerate lapic two times + */ + if(!acpi_noirq && !acpi_pci_disabled) + acpi_process_madt(); acpi_table_parse(ACPI_HPET, acpi_parse_hpet);