x86_init.mpparse.find_mptable = x86_init_noop;
x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
x86_init.mpparse.parse_smp_cfg = x86_init_noop;
- x86_init.mpparse.get_smp_config = x86_init_uint_noop;
x86_platform.get_wallclock = get_rtc_noop;
x86_platform.set_wallclock = set_rtc_noop;
# define smp_found_config 0
#endif
-static inline void get_smp_config(void)
-{
- x86_init.mpparse.get_smp_config(0);
-}
-
static inline void early_get_smp_config(void)
{
- x86_init.mpparse.get_smp_config(1);
+ x86_init.mpparse.early_parse_smp_cfg();
}
#ifdef CONFIG_X86_MPPARSE
extern void mpparse_find_mptable(void);
extern void mpparse_parse_early_smp_config(void);
extern void mpparse_parse_smp_config(void);
-extern void mpparse_get_smp_config(unsigned int early);
#else
static inline void e820__memblock_alloc_reserved_mpc_new(void) { }
#define enable_update_mptable 0
#define mpparse_find_mptable x86_init_noop
#define mpparse_parse_early_smp_config x86_init_noop
#define mpparse_parse_smp_config x86_init_noop
-#define mpparse_get_smp_config x86_init_uint_noop
#endif
int generic_processor_info(int apicid);
* struct x86_init_mpparse - platform specific mpparse ops
* @setup_ioapic_ids: platform specific ioapic id override
* @find_mptable: Find MPTABLE early to reserve the memory region
- * @get_smp_config: get the smp configuration
* @early_parse_smp_cfg: Parse the SMP configuration data early before initmem_init()
* @parse_smp_cfg: Parse the SMP configuration data
*/
struct x86_init_mpparse {
void (*setup_ioapic_ids)(void);
void (*find_mptable)(void);
- void (*get_smp_config)(unsigned int early);
void (*early_parse_smp_cfg)(void);
void (*parse_smp_cfg)(void);
};
#endif
}
-static void __init jailhouse_get_smp_config(unsigned int early)
+static void __init jailhouse_parse_smp_config(void)
{
struct ioapic_domain_cfg ioapic_cfg = {
.type = IOAPIC_DOMAIN_STRICT,
}
}
-static void __init jailhouse_parse_smp_config(void)
-{
- jailhouse_get_smp_config(false);
-}
-
static void jailhouse_no_restart(void)
{
pr_notice("Jailhouse: Restart not supported, halting\n");
x86_init.mpparse.find_mptable = x86_init_noop;
x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
x86_init.mpparse.parse_smp_cfg = jailhouse_parse_smp_config;
- x86_init.mpparse.get_smp_config = jailhouse_get_smp_config;
x86_init.pci.arch_init = jailhouse_pci_arch_init;
x86_platform.calibrate_cpu = jailhouse_get_tsc;
/*
* Scan the memory blocks for an SMP configuration block.
*/
-void __init mpparse_get_smp_config(unsigned int early)
+static __init void mpparse_get_smp_config(unsigned int early)
{
struct mpf_intel *mpf;
early_quirks();
/*
- * Read APIC and some other early information from ACPI tables.
+ * Parse SMP configuration. Try ACPI first and then the platform
+ * specific parser.
*/
acpi_boot_init();
- x86_dtb_parse_smp_config();
-
- /*
- * get boot-time SMP configuration:
- */
- get_smp_config();
+ x86_init.mpparse.parse_smp_cfg();
/*
* Systems w/o ACPI and mptables might not have it mapped the local
.mpparse = {
.setup_ioapic_ids = x86_init_noop,
.find_mptable = mpparse_find_mptable,
- .get_smp_config = mpparse_get_smp_config,
+ .early_parse_smp_cfg = mpparse_parse_early_smp_config,
+ .parse_smp_cfg = mpparse_parse_smp_config,
},
.irqs = {
x86_init.mpparse.find_mptable = x86_init_noop;
x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
x86_init.mpparse.parse_smp_cfg = x86_dtb_parse_smp_config;
- x86_init.mpparse.get_smp_config = x86_init_uint_noop;
x86_init.pci.init = ce4100_pci_init;
x86_init.pci.init_irq = sdv_pci_init;
x86_init.mpparse.find_mptable = x86_init_noop;
x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
x86_init.mpparse.parse_smp_cfg = x86_init_noop;
- x86_init.mpparse.get_smp_config = x86_init_uint_noop;
set_bit(MP_BUS_ISA, mp_bus_not_pci);
}
return rc;
}
-static void __init _get_smp_config(unsigned int early)
+static void __init xen_pv_smp_config(void)
{
int i, rc;
unsigned int subtract = 0;
- if (early)
- return;
-
num_processors = 0;
disabled_cpus = 0;
for (i = 0; i < nr_cpu_ids; i++) {
smp_found_config = 1;
}
-static void __init xen_pv_smp_config(void)
-{
- _get_smp_config(false);
-}
-
static void __init xen_pv_smp_prepare_boot_cpu(void)
{
BUG_ON(smp_processor_id() != 0);
x86_init.mpparse.find_mptable = x86_init_noop;
x86_init.mpparse.early_parse_smp_cfg = x86_init_noop;
x86_init.mpparse.parse_smp_cfg = xen_pv_smp_config;
- x86_init.mpparse.get_smp_config = _get_smp_config;
}