Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9659366 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

x86, smp: refactor ->wait_for_init_deassert()



- spread out the namespace on a per APIC driver basis

 - handle a NULL ->wait_for_init_deassert() as a 'dont wait' default method

 - remove NUMAQ and Summit handlers

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent abfa584c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
#define ES7000_TRAMPOLINE_PHYS_LOW	0x467
#define ES7000_TRAMPOLINE_PHYS_HIGH	0x469

static inline void wait_for_init_deassert(atomic_t *deassert)
static inline void es7000_wait_for_init_deassert(atomic_t *deassert)
{
#ifndef CONFIG_ES7000_CLUSTERED_APIC
	while (!atomic_read(deassert))
+1 −1
Original line number Diff line number Diff line
#ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
#define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H

static inline void wait_for_init_deassert(atomic_t *deassert)
static inline void default_wait_for_init_deassert(atomic_t *deassert)
{
	while (!atomic_read(deassert))
		cpu_relax();
+0 −1
Original line number Diff line number Diff line
#ifndef _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H
#define _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H

#define wait_for_init_deassert (apic->wait_for_init_deassert)
#define smp_callin_clear_local_apic (apic->smp_callin_clear_local_apic)
#define store_NMI_vector (apic->store_NMI_vector)
#define restore_NMI_vector (apic->restore_NMI_vector)
+0 −5
Original line number Diff line number Diff line
@@ -6,11 +6,6 @@
#define NUMAQ_TRAMPOLINE_PHYS_LOW (0x8)
#define NUMAQ_TRAMPOLINE_PHYS_HIGH (0xa)

/* We don't do anything here because we use NMI's to boot instead */
static inline void wait_for_init_deassert(atomic_t *deassert)
{
}

/*
 * Because we use NMIs rather than the INIT-STARTUP sequence to
 * bootstrap the CPUs, the APIC may be in a weird state. Kick it.
+1 −5
Original line number Diff line number Diff line
@@ -182,10 +182,6 @@ static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
	return 0;
}

static void noop_wait_for_deassert(atomic_t *deassert_not_used)
{
}

static int __init es7000_update_genapic(void)
{
	apic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
@@ -194,7 +190,7 @@ static int __init es7000_update_genapic(void)
	if (boot_cpu_data.x86 == 6 &&
	    (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) {
		es7000_update_genapic_to_cluster();
		apic->wait_for_init_deassert = noop_wait_for_deassert;
		apic->wait_for_init_deassert = NULL;
		apic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
	}

Loading