forked from Minki/linux
x86: merge smp_prepare_boot_cpu
it is practically the same between arches now, so it is moved to smpboot.c. Minor differences (gdt initialization) live inside an ifdef Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
bbc2ff6a91
commit
a8db8453ff
@ -24,6 +24,9 @@
|
||||
#include <mach_wakecpu.h>
|
||||
#include <smpboot_hooks.h>
|
||||
|
||||
/* State of each CPU */
|
||||
DEFINE_PER_CPU(int, cpu_state) = { 0 };
|
||||
|
||||
/* Store all idle threads, this can be reused instead of creating
|
||||
* a new thread. Also avoids complicated thread destroy functionality
|
||||
* for idle threads.
|
||||
@ -999,6 +1002,21 @@ int __cpuinit native_cpu_up(unsigned int cpu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Early setup to make printk work.
|
||||
*/
|
||||
void __init native_smp_prepare_boot_cpu(void)
|
||||
{
|
||||
int me = smp_processor_id();
|
||||
#ifdef CONFIG_X86_32
|
||||
init_gdt(me);
|
||||
switch_to_new_gdt();
|
||||
#endif
|
||||
/* already set me in cpu_online_map in boot_cpu_init() */
|
||||
cpu_set(me, cpu_callout_map);
|
||||
per_cpu(cpu_state, me) = CPU_ONLINE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
void remove_siblinginfo(int cpu)
|
||||
{
|
||||
|
@ -77,9 +77,6 @@ u8 apicid_2_node[MAX_APICID];
|
||||
extern void map_cpu_to_logical_apicid(void);
|
||||
extern void unmap_cpu_to_logical_apicid(int cpu);
|
||||
|
||||
/* State of each CPU. */
|
||||
DEFINE_PER_CPU(int, cpu_state) = { 0 };
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
void cpu_exit_clear(void)
|
||||
{
|
||||
@ -219,17 +216,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
|
||||
smp_boot_cpus(max_cpus);
|
||||
}
|
||||
|
||||
void __init native_smp_prepare_boot_cpu(void)
|
||||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
||||
init_gdt(cpu);
|
||||
switch_to_new_gdt();
|
||||
|
||||
cpu_set(cpu, cpu_callout_map);
|
||||
__get_cpu_var(cpu_state) = CPU_ONLINE;
|
||||
}
|
||||
|
||||
extern void impress_friends(void);
|
||||
extern void smp_checks(void);
|
||||
|
||||
|
@ -68,9 +68,6 @@
|
||||
/* Set when the idlers are all forked */
|
||||
int smp_threads_ready;
|
||||
|
||||
/* State of each CPU */
|
||||
DEFINE_PER_CPU(int, cpu_state) = { 0 };
|
||||
|
||||
cycles_t cacheflush_time;
|
||||
unsigned long cache_decay_ticks;
|
||||
|
||||
@ -216,17 +213,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
|
||||
print_cpu_info(&cpu_data(0));
|
||||
}
|
||||
|
||||
/*
|
||||
* Early setup to make printk work.
|
||||
*/
|
||||
void __init native_smp_prepare_boot_cpu(void)
|
||||
{
|
||||
int me = smp_processor_id();
|
||||
/* already set me in cpu_online_map in boot_cpu_init() */
|
||||
cpu_set(me, cpu_callout_map);
|
||||
per_cpu(cpu_state, me) = CPU_ONLINE;
|
||||
}
|
||||
|
||||
extern void impress_friends(void);
|
||||
extern void smp_checks(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user