#include <linux/mm.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/memblock.h>
#include <linux/kernel_stat.h>
#include <linux/mc146818rtc.h>
#include <linux/bitops.h>
#include <linux/acpi.h>
#include <linux/smp.h>
#include <linux/pci.h>
#include <asm/i8259.h>
#include <asm/io_apic.h>
#include <asm/acpi.h>
#include <asm/irqdomain.h>
#include <asm/mtrr.h>
#include <asm/mpspec.h>
#include <asm/proto.h>
#include <asm/bios_ebda.h>
#include <asm/e820/api.h>
#include <asm/setup.h>
#include <asm/smp.h>
#include <asm/apic.h>
static unsigned int num_procs __initdata;
static int __init mpf_checksum(unsigned char *mp, int len)
{ … }
static void __init MP_processor_info(struct mpc_cpu *m)
{ … }
#ifdef CONFIG_X86_IO_APIC
static void __init mpc_oem_bus_info(struct mpc_bus *m, char *str)
{ … }
static void __init MP_bus_info(struct mpc_bus *m)
{ … }
static void __init MP_ioapic_info(struct mpc_ioapic *m)
{ … }
static void __init print_mp_irq_info(struct mpc_intsrc *mp_irq)
{ … }
#else
static inline void __init MP_bus_info(struct mpc_bus *m) {}
static inline void __init MP_ioapic_info(struct mpc_ioapic *m) {}
#endif
static void __init MP_lintsrc_info(struct mpc_lintsrc *m)
{ … }
static int __init smp_check_mpc(struct mpc_table *mpc, char *oem, char *str)
{ … }
static void skip_entry(unsigned char **ptr, int *count, int size)
{ … }
static void __init smp_dump_mptable(struct mpc_table *mpc, unsigned char *mpt)
{ … }
static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)
{ … }
#ifdef CONFIG_X86_IO_APIC
static int __init ELCR_trigger(unsigned int irq)
{ … }
static void __init construct_default_ioirq_mptable(int mpc_default_type)
{ … }
static void __init construct_ioapic_table(int mpc_default_type)
{ … }
#else
static inline void __init construct_ioapic_table(int mpc_default_type) { }
#endif
static inline void __init construct_default_ISA_mptable(int mpc_default_type)
{ … }
static unsigned long mpf_base;
static bool mpf_found;
static unsigned long __init get_mpc_size(unsigned long physptr)
{ … }
static int __init check_physptr(struct mpf_intel *mpf, unsigned int early)
{ … }
static __init void mpparse_get_smp_config(unsigned int early)
{ … }
void __init mpparse_parse_early_smp_config(void)
{ … }
void __init mpparse_parse_smp_config(void)
{ … }
static void __init smp_reserve_memory(struct mpf_intel *mpf)
{ … }
static int __init smp_scan_config(unsigned long base, unsigned long length)
{ … }
void __init mpparse_find_mptable(void)
{ … }
#ifdef CONFIG_X86_IO_APIC
static u8 __initdata irq_used[MAX_IRQ_SOURCES];
static int __init get_MP_intsrc_index(struct mpc_intsrc *m)
{ … }
#define SPARE_SLOT_NUM …
static struct mpc_intsrc __initdata *m_spare[SPARE_SLOT_NUM];
static void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare)
{ … }
static int __init
check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length, int count)
{ … }
#else
static
inline void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {}
#endif
static int __init replace_intsrc_all(struct mpc_table *mpc,
unsigned long mpc_new_phys,
unsigned long mpc_new_length)
{ … }
int enable_update_mptable;
static int __init update_mptable_setup(char *str)
{ … }
early_param(…);
static unsigned long __initdata mpc_new_phys;
static unsigned long mpc_new_length __initdata = …;
static int __initdata alloc_mptable;
static int __init parse_alloc_mptable_opt(char *p)
{ … }
early_param(…);
void __init e820__memblock_alloc_reserved_mpc_new(void)
{ … }
static int __init update_mp_table(void)
{ … }
late_initcall(update_mp_table);