#include <linux/config.h>
#include <linux/acpi.h>
#include <asm/pgalloc.h>
+#include <asm/io_apic.h>
#include <asm/apic.h>
#include <asm/io.h>
#include <asm/mpspec.h>
extern int acpi_disabled;
extern int acpi_ht;
+int acpi_lapic = 0;
+int acpi_ioapic = 0;
+
/* --------------------------------------------------------------------------
Boot-time Configuration
-------------------------------------------------------------------------- */
#ifdef CONFIG_X86_LOCAL_APIC
-int acpi_lapic;
-
static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
return 0;
}
-#ifdef CONFIG_ACPI
-
static int __init
acpi_parse_lapic_nmi (
acpi_table_entry_header *header)
return 0;
}
-#endif /*CONFIG_ACPI*/
#endif /*CONFIG_X86_LOCAL_APIC*/
#ifdef CONFIG_X86_IO_APIC
-int acpi_ioapic;
-
-#ifdef CONFIG_ACPI
static int __init
acpi_parse_ioapic (
return 0;
}
-#endif /*CONFIG_ACPI*/
#endif /*CONFIG_X86_IO_APIC*/
if (result)
return result;
-#ifdef CONFIG_ACPI
result = acpi_blacklisted();
if (result) {
printk(KERN_WARNING PREFIX "BIOS listed in blacklist, disabling ACPI support\n");
acpi_disabled = 1;
return result;
}
-#endif
#ifdef CONFIG_X86_LOCAL_APIC
return result;
}
-#ifdef CONFIG_ACPI
result = acpi_table_parse_madt(ACPI_MADT_LAPIC_NMI, acpi_parse_lapic_nmi);
if (result < 0) {
printk(KERN_ERR PREFIX "Error parsing LAPIC NMI entry\n");
/* TBD: Cleanup to allow fallback to MPS */
return result;
}
-#endif /*CONFIG_ACPI*/
acpi_lapic = 1;
#endif /*CONFIG_X86_LOCAL_APIC*/
#ifdef CONFIG_X86_IO_APIC
-#ifdef CONFIG_ACPI
/*
* I/O APIC
/*
* if "noapic" boot option, don't look for IO-APICs
*/
- if (skip_ioapic_setup) {
+ if (ioapic_setup_disabled()) {
printk(KERN_INFO PREFIX "Skipping IOAPIC probe "
"due to 'noapic' option.\n");
return 1;
acpi_irq_model = ACPI_IRQ_MODEL_IOAPIC;
acpi_ioapic = 1;
-
-#endif /*CONFIG_ACPI*/
#endif /*CONFIG_X86_IO_APIC*/
#ifdef CONFIG_X86_LOCAL_APIC
}
/* disable IO-APIC */
- else if (!memcmp(from, "noapic", 6)) {
- skip_ioapic_setup = 1;
- }
+ else if (!memcmp(from, "noapic", 6))
+ disable_ioapic_setup();
#endif
/*
generic_apic_probe(*cmdline_p);
#endif
-#ifdef CONFIG_ACPI_BOOT
/*
* Parse the ACPI tables for possible boot-time SMP configuration.
*/
- (void) acpi_boot_init();
-#endif
+ acpi_boot_init();
+
#ifdef CONFIG_X86_LOCAL_APIC
if (smp_found_config)
get_smp_config();
:"0"(n_hi), "1"(n_lo))
-#if defined(CONFIG_ACPI_BOOT) && defined(CONFIG_X86_LOCAL_APIC)
- extern int acpi_lapic;
-#else
- #define acpi_lapic 0
-#endif
+#ifdef CONFIG_ACPI_BOOT
+extern int acpi_lapic;
+extern int acpi_ioapic;
-#if defined(CONFIG_ACPI_BOOT) && defined(CONFIG_X86_IO_APIC)
- extern int acpi_ioapic;
-#else
- #define acpi_ioapic 0
-#endif
-#ifdef CONFIG_ACPI_BOOT
/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */
#define FIX_ACPI_PAGES 4
+
+#ifdef CONFIG_X86_IO_APIC
+extern int skip_ioapic_setup;
+
+static inline void disable_ioapic_setup(void)
+{
+ skip_ioapic_setup = 1;
+}
+
+static inline int ioapic_setup_disabled(void)
+{
+ return skip_ioapic_setup;
+}
+
+#else
+static inline void disable_ioapic_setup(void)
+{ }
+
+#endif
+
+#else /* CONFIG_ACPI_BOOT */
+# define acpi_lapic 0
+# define acpi_ioapic 0
+
#endif
#ifdef CONFIG_ACPI_SLEEP