linux/arch/x86/kernel/mpparse.c

// SPDX-License-Identifier: GPL-2.0
/*
 *	Intel Multiprocessor Specification 1.1 and 1.4
 *	compliant MP-table parsing routines.
 *
 *	(c) 1995 Alan Cox, Building #3 <[email protected]>
 *	(c) 1998, 1999, 2000, 2009 Ingo Molnar <[email protected]>
 *      (c) 2008 Alexey Starikovskiy <[email protected]>
 */

#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>
/*
 * Checksum an MP configuration block.
 */

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 /* CONFIG_X86_IO_APIC */
static inline void __init MP_bus_info(struct mpc_bus *m) {}
static inline void __init MP_ioapic_info(struct mpc_ioapic *m) {}
#endif /* CONFIG_X86_IO_APIC */

static void __init MP_lintsrc_info(struct mpc_lintsrc *m)
{}

/*
 * Read/parse the MPC
 */
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)
{}

/*
 * Scan the memory blocks for an SMP configuration block.
 */
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 /* CONFIG_X86_IO_APIC */
static
inline void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {}
#endif /* CONFIG_X86_IO_APIC */

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 =;

/* alloc_mptable or alloc_mptable=4k */
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);