/* Number of siblings per CPU package */
int smp_num_siblings = 1;
int phys_proc_id[NR_CPUS]; /* Package ID of each logical CPU */
+EXPORT_SYMBOL(phys_proc_id);
/* bitmap of online cpus */
cpumask_t cpu_online_map;
-static cpumask_t cpu_callin_map;
+cpumask_t cpu_callin_map;
cpumask_t cpu_callout_map;
static cpumask_t smp_commenced_mask;
setup_local_APIC();
map_cpu_to_logical_apicid();
- local_irq_enable();
-
/*
* Get our bogomips.
*/
smp_store_cpu_info(cpuid);
disable_APIC_timer();
- local_irq_disable();
+
/*
* Allow the master to continue.
*/
int cpucount;
-extern int cpu_idle(void);
-
/*
* Activate a secondary processor.
*/
-int __init start_secondary(void *unused)
+static void __init start_secondary(void *unused)
{
/*
* Dont put anything before smp_callin(), SMP
*/
local_flush_tlb();
cpu_set(smp_processor_id(), cpu_online_map);
+
+ /* We can take interrupts now: we're officially "up". */
+ local_irq_enable();
+
wmb();
- return cpu_idle();
+ cpu_idle();
}
/*
printk(KERN_INFO
"Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
cpucount+1,
- bogosum/(500000/HZ),
- (bogosum/(5000/HZ))%100);
+ HZ*(bogosum >> 3)/62500,
+ (HZ*(bogosum >> 3)/625) % 100);
Dprintk("Before bogocount - setting activated=1.\n");