i386: move common parts of smp into their own file
PATCH 1/1 i386: move common parts of smp into their own file
Several parts of kernel/smp.c and smpboot.c are generally useful for other subarchitectures and paravirt_ops implementations, so make them available for reuse.
Signed-off-by Jeremy Fitzhardinge <[email protected]>
Cc James Bottomley <[email protected]>
Cc Eric W. Biederman <[email protected]>
--- arch/i386/kernel/Makefile | 1 arch/i386/kernel/smp.c | 65 +++------------------------------- arch/i386/kernel/smpboot.c | 22 ----------- arch/i386/kernel/smpcommon.c | 79 ++++++++++++++++++++++++++++++++++++++++++ include/asm-i386/processor.h | 4 ++ 5 files changed, 90 insertions(+), 81 deletions(-)
===================================================================
arch/i386/kernel/Makefile +1 -0
@@ -20,6 +20,7 @@ obj-$(CONFIG_MICROCODE) += microcode.o obj-$(CONFIG_MICROCODE) += microcode.o obj-$(CONFIG_APM) += apm.o obj-$(CONFIG_X86_SMP) += smp.o smpboot.o tsc_sync.o +obj-$(CONFIG_SMP) += smpcommon.o obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o obj-$(CONFIG_X86_MPPARSE) += mpparse.o obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o
===================================================================
arch/i386/kernel/smp.c +6 -59
89 lines not on this page · raw message
===================================================================
arch/i386/kernel/smpboot.c +0 -22
@@ -99,9 +99,6 @@ EXPORT_SYMBOL(x86_cpu_to_apicid);u8 apicid_2_node[MAX_APICID ]; -DEFINE_PER_CPU(unsigned long, this_cpu_off); -EXPORT_PER_CPU_SYMBOL (this_cpu_off); -/* * Trampoline 80x86 program as an array. */
@@ -766,25 +763,6 @@ static inline struct task_struct * alloc#define alloc_idle_task (cpu) fork_idle(cpu)#endif -/* Initialize the CPU's GDT. This is either the boot CPU doing itself -(still using the master per-cpu area), or a CPU doing it for a -secondary which will soon come up. */ -static __cpuinit void init_gdt (int cpu) -{ -struct desc_struct *gdt =get_cpu_gdt_table (cpu); - -pack_descriptor ((u32 *)&gdt[GDT_ENTRY_PERCPU ].a, - (u32 *)&gdt[GDT_ENTRY_PERCPU ].b, - __per_cpu_offset[cpu],0xFFFFF , -0x80 |DESCTYPE_S |0x2 ,0x8 ); - -per_cpu (this_cpu_off, cpu) = __per_cpu_offset[cpu]; -per_cpu (cpu_number, cpu) = cpu; -} - -/* Defined in head.S */ -extern struct Xgt_desc_struct early_gdt_descr; -static int __cpuinit do_boot_cpu (int apicid,int cpu)/* * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad
===================================================================
arch/i386/kernel/smpcommon.c new file +79 -0
79 lines not on this page · raw message
===================================================================
include/asm-i386/processor.h +4 -0
@@ -749,9 +749,13 @@ extern void enable_sep_cpu(void);extern void enable_sep_cpu (void );extern int sysenter_setup (void ); +/* Defined in head.S */ +extern struct Xgt_desc_struct early_gdt_descr; +extern void cpu_set_gdt (int );extern void switch_to_new_gdt (void );extern void cpu_init (void ); +extern void init_gdt (int cpu);extern int force_mwait;