|
@@ -39,6 +39,7 @@
|
|
|
#include <asm/atomic.h>
|
|
|
#include <asm/cacheflush.h>
|
|
|
#include <asm/cputype.h>
|
|
|
+#include <asm/cpu_ops.h>
|
|
|
#include <asm/mmu_context.h>
|
|
|
#include <asm/pgtable.h>
|
|
|
#include <asm/pgalloc.h>
|
|
@@ -232,28 +233,6 @@ void __init smp_prepare_boot_cpu(void)
|
|
|
|
|
|
static void (*smp_cross_call)(const struct cpumask *, unsigned int);
|
|
|
|
|
|
-static const struct smp_enable_ops *enable_ops[] __initconst = {
|
|
|
- &smp_spin_table_ops,
|
|
|
- &smp_psci_ops,
|
|
|
- NULL,
|
|
|
-};
|
|
|
-
|
|
|
-static const struct smp_enable_ops *smp_enable_ops[NR_CPUS];
|
|
|
-
|
|
|
-static const struct smp_enable_ops * __init smp_get_enable_ops(const char *name)
|
|
|
-{
|
|
|
- const struct smp_enable_ops **ops = enable_ops;
|
|
|
-
|
|
|
- while (*ops) {
|
|
|
- if (!strcmp(name, (*ops)->name))
|
|
|
- return *ops;
|
|
|
-
|
|
|
- ops++;
|
|
|
- }
|
|
|
-
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Enumerate the possible CPU set from the device tree and build the
|
|
|
* cpu logical map array containing MPIDR values related to logical
|
|
@@ -263,7 +242,7 @@ void __init smp_init_cpus(void)
|
|
|
{
|
|
|
const char *enable_method;
|
|
|
struct device_node *dn = NULL;
|
|
|
- int i, cpu = 1;
|
|
|
+ unsigned int i, cpu = 1;
|
|
|
bool bootcpu_valid = false;
|
|
|
|
|
|
while ((dn = of_find_node_by_type(dn, "cpu"))) {
|
|
@@ -342,15 +321,15 @@ void __init smp_init_cpus(void)
|
|
|
goto next;
|
|
|
}
|
|
|
|
|
|
- smp_enable_ops[cpu] = smp_get_enable_ops(enable_method);
|
|
|
+ cpu_ops[cpu] = cpu_get_ops(enable_method);
|
|
|
|
|
|
- if (!smp_enable_ops[cpu]) {
|
|
|
+ if (!cpu_ops[cpu]) {
|
|
|
pr_err("%s: invalid enable-method property: %s\n",
|
|
|
dn->full_name, enable_method);
|
|
|
goto next;
|
|
|
}
|
|
|
|
|
|
- if (smp_enable_ops[cpu]->init_cpu(dn, cpu))
|
|
|
+ if (cpu_ops[cpu]->cpu_init(dn, cpu))
|
|
|
goto next;
|
|
|
|
|
|
pr_debug("cpu logical map 0x%llx\n", hwid);
|
|
@@ -380,8 +359,8 @@ next:
|
|
|
|
|
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
|
{
|
|
|
- int cpu, err;
|
|
|
- unsigned int ncores = num_possible_cpus();
|
|
|
+ int err;
|
|
|
+ unsigned int cpu, ncores = num_possible_cpus();
|
|
|
|
|
|
/*
|
|
|
* are we trying to boot more cores than exist?
|
|
@@ -408,10 +387,10 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
|
if (cpu == smp_processor_id())
|
|
|
continue;
|
|
|
|
|
|
- if (!smp_enable_ops[cpu])
|
|
|
+ if (!cpu_ops[cpu])
|
|
|
continue;
|
|
|
|
|
|
- err = smp_enable_ops[cpu]->prepare_cpu(cpu);
|
|
|
+ err = cpu_ops[cpu]->cpu_prepare(cpu);
|
|
|
if (err)
|
|
|
continue;
|
|
|
|