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

Commit 6f177c01 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

x86, smp: clean up ->trampoline_phys_low/high handling



- spread out the namespace on a per apic driver basis

 - remove wrapper macros

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent dac5f412
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
#ifndef __ASM_ES7000_WAKECPU_H
#define __ASM_ES7000_WAKECPU_H

#define TRAMPOLINE_PHYS_LOW	0x467
#define TRAMPOLINE_PHYS_HIGH	0x469
#define ES7000_TRAMPOLINE_PHYS_LOW	0x467
#define ES7000_TRAMPOLINE_PHYS_HIGH	0x469

static inline void wait_for_init_deassert(atomic_t *deassert)
{
+2 −2
Original line number Diff line number Diff line
#ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
#define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H

#define TRAMPOLINE_PHYS_LOW (0x467)
#define TRAMPOLINE_PHYS_HIGH (0x469)
#define DEFAULT_TRAMPOLINE_PHYS_LOW (0x467)
#define DEFAULT_TRAMPOLINE_PHYS_HIGH (0x469)

static inline void wait_for_init_deassert(atomic_t *deassert)
{
+3 −3
Original line number Diff line number Diff line
@@ -13,10 +13,10 @@ static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
	CMOS_WRITE(0xa, 0xf);
	local_flush_tlb();
	pr_debug("1.\n");
	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
	*((volatile unsigned short *)phys_to_virt(apic->trampoline_phys_high)) =
								 start_eip >> 4;
	pr_debug("2.\n");
	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
	*((volatile unsigned short *)phys_to_virt(apic->trampoline_phys_low)) =
							 start_eip & 0xf;
	pr_debug("3.\n");
}
@@ -34,7 +34,7 @@ static inline void smpboot_restore_warm_reset_vector(void)
	 */
	CMOS_WRITE(0, 0xf);

	*((volatile long *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = 0;
	*((volatile long *)phys_to_virt(apic->trampoline_phys_low)) = 0;
}

static inline void __init smpboot_setup_io_apic(void)
+0 −2
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 TRAMPOLINE_PHYS_LOW (apic->trampoline_phys_low)
#define TRAMPOLINE_PHYS_HIGH (apic->trampoline_phys_high)
#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)
+6 −6
Original line number Diff line number Diff line
@@ -3,8 +3,8 @@

/* This file copes with machines that wakeup secondary CPUs by NMIs */

#define TRAMPOLINE_PHYS_LOW (0x8)
#define TRAMPOLINE_PHYS_HIGH (0xa)
#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)
@@ -24,17 +24,17 @@ static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
{
	printk("Storing NMI vector\n");
	*high =
	  *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH));
	  *((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_HIGH));
	*low =
	  *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW));
	  *((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_LOW));
}

static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
{
	printk("Restoring NMI vector\n");
	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
	*((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_HIGH)) =
								 *high;
	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
	*((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_LOW)) =
								 *low;
}

Loading