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

Commit a8db8453 authored by Glauber de Oliveira Costa's avatar Glauber de Oliveira Costa Committed by Ingo Molnar
Browse files

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: default avatarGlauber Costa <gcosta@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent bbc2ff6a
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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)
{
+0 −14
Original line number Diff line number Diff line
@@ -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);

+0 −14
Original line number Diff line number Diff line
@@ -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);