|
@@ -17,7 +17,6 @@
|
|
|
#include <linux/io.h>
|
|
|
|
|
|
#include <asm/cacheflush.h>
|
|
|
-#include <asm/localtimer.h>
|
|
|
#include <asm/smp_scu.h>
|
|
|
#include <asm/unified.h>
|
|
|
|
|
@@ -136,20 +135,10 @@ void __init smp_init_cpus(void)
|
|
|
set_cpu_possible(i, true);
|
|
|
}
|
|
|
|
|
|
-void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
|
+void __init platform_smp_prepare_cpus(unsigned int max_cpus)
|
|
|
{
|
|
|
- unsigned int ncores = num_possible_cpus();
|
|
|
- unsigned int cpu = smp_processor_id();
|
|
|
int i;
|
|
|
|
|
|
- smp_store_cpu_info(cpu);
|
|
|
-
|
|
|
- /*
|
|
|
- * are we trying to boot more cores than exist?
|
|
|
- */
|
|
|
- if (max_cpus > ncores)
|
|
|
- max_cpus = ncores;
|
|
|
-
|
|
|
/*
|
|
|
* Initialise the present map, which describes the set of CPUs
|
|
|
* actually populated at the present time.
|
|
@@ -157,27 +146,15 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
|
for (i = 0; i < max_cpus; i++)
|
|
|
set_cpu_present(i, true);
|
|
|
|
|
|
+ scu_enable(scu_base_addr());
|
|
|
+
|
|
|
/*
|
|
|
- * Initialise the SCU if there are more than one CPU and let
|
|
|
- * them know where to start.
|
|
|
+ * Write the address of secondary startup into the
|
|
|
+ * system-wide flags register. The boot monitor waits
|
|
|
+ * until it receives a soft interrupt, and then the
|
|
|
+ * secondary CPU branches to this address.
|
|
|
*/
|
|
|
- if (max_cpus > 1) {
|
|
|
- /*
|
|
|
- * Enable the local timer or broadcast device for the
|
|
|
- * boot CPU, but only if we have more than one CPU.
|
|
|
- */
|
|
|
- percpu_timer_setup();
|
|
|
-
|
|
|
- scu_enable(scu_base_addr());
|
|
|
-
|
|
|
- /*
|
|
|
- * Write the address of secondary startup into the
|
|
|
- * system-wide flags register. The boot monitor waits
|
|
|
- * until it receives a soft interrupt, and then the
|
|
|
- * secondary CPU branches to this address.
|
|
|
- */
|
|
|
- writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));
|
|
|
- writel(BSYM(virt_to_phys(vexpress_secondary_startup)),
|
|
|
- MMIO_P2V(V2M_SYS_FLAGSSET));
|
|
|
- }
|
|
|
+ writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));
|
|
|
+ writel(BSYM(virt_to_phys(vexpress_secondary_startup)),
|
|
|
+ MMIO_P2V(V2M_SYS_FLAGSSET));
|
|
|
}
|