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

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

x86: isolate sanity checking



Isolate all sanity checking in a smp_sanity_check()
function as x86_64 does.

Signed-off-by: default avatarGlauber Costa <gcosta@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fa8004d8
Loading
Loading
Loading
Loading
+31 −26
Original line number Diff line number Diff line
@@ -735,10 +735,6 @@ static int __cpuinit __smp_prepare_cpu(int cpu)
}
#endif

/*
 * Cycle through the processors sending APIC IPIs to boot each.
 */

static int boot_cpu_logical_apicid;
/* Where the IO area was mapped on multiquad, always 0 otherwise */
void *xquad_portio;
@@ -746,26 +742,8 @@ void *xquad_portio;
EXPORT_SYMBOL(xquad_portio);
#endif

static void __init smp_boot_cpus(unsigned int max_cpus)
static int __init smp_sanity_check(unsigned max_cpus)
{
	int apicid, cpu, bit, kicked;
	unsigned long bogosum = 0;

	/*
	 * Setup boot CPU information
	 */
	smp_store_cpu_info(0); /* Final full version of the data */
	printk("CPU%d: ", 0);
	print_cpu_info(&cpu_data(0));

	boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
	boot_cpu_logical_apicid = logical_smp_processor_id();
	per_cpu(x86_cpu_to_apicid, 0) = boot_cpu_physical_apicid;

	current_thread_info()->cpu = 0;

	set_cpu_sibling_map(0);

	/*
	 * If we couldn't find an SMP configuration at boot time,
	 * get out of here now!
@@ -780,7 +758,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
		map_cpu_to_logical_apicid();
		cpu_set(0, per_cpu(cpu_sibling_map, 0));
		cpu_set(0, per_cpu(cpu_core_map, 0));
		return;
		return -1;
	}

	/*
@@ -806,7 +784,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
		map_cpu_to_logical_apicid();
		cpu_set(0, per_cpu(cpu_sibling_map, 0));
		cpu_set(0, per_cpu(cpu_core_map, 0));
		return;
		return -1;
	}

	verify_local_APIC();
@@ -828,9 +806,36 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
		map_cpu_to_logical_apicid();
		cpu_set(0, per_cpu(cpu_sibling_map, 0));
		cpu_set(0, per_cpu(cpu_core_map, 0));
		return;
		return -1;
	}
	return 0;
}


/*
 * Cycle through the processors sending APIC IPIs to boot each.
 */
static void __init smp_boot_cpus(unsigned int max_cpus)
{
	int apicid, cpu, bit, kicked;
	unsigned long bogosum = 0;

	/*
	 * Setup boot CPU information
	 */
	smp_store_cpu_info(0); /* Final full version of the data */
	printk(KERN_INFO "CPU%d: ", 0);
	print_cpu_info(&cpu_data(0));

	boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
	boot_cpu_logical_apicid = logical_smp_processor_id();
	per_cpu(x86_cpu_to_apicid, 0) = boot_cpu_physical_apicid;

	current_thread_info()->cpu = 0;

	set_cpu_sibling_map(0);

	smp_sanity_check(max_cpus);
	connect_bsp_APIC();
	setup_local_APIC();
	map_cpu_to_logical_apicid();