|
@@ -106,11 +106,23 @@ static void socfpga_cpu_die(unsigned int cpu)
|
|
cpu_do_idle();
|
|
cpu_do_idle();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * We need a dummy function so that platform_can_cpu_hotplug() knows
|
|
|
|
+ * we support CPU hotplug. However, the function does not need to do
|
|
|
|
+ * anything, because CPUs going offline just do WFI. We could reset
|
|
|
|
+ * the CPUs but it would increase power consumption.
|
|
|
|
+ */
|
|
|
|
+static int socfpga_cpu_kill(unsigned int cpu)
|
|
|
|
+{
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
+
|
|
static struct smp_operations socfpga_smp_ops __initdata = {
|
|
static struct smp_operations socfpga_smp_ops __initdata = {
|
|
.smp_prepare_cpus = socfpga_smp_prepare_cpus,
|
|
.smp_prepare_cpus = socfpga_smp_prepare_cpus,
|
|
.smp_boot_secondary = socfpga_boot_secondary,
|
|
.smp_boot_secondary = socfpga_boot_secondary,
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
.cpu_die = socfpga_cpu_die,
|
|
.cpu_die = socfpga_cpu_die,
|
|
|
|
+ .cpu_kill = socfpga_cpu_kill,
|
|
#endif
|
|
#endif
|
|
};
|
|
};
|
|
|
|
|
|
@@ -119,6 +131,7 @@ static struct smp_operations socfpga_a10_smp_ops __initdata = {
|
|
.smp_boot_secondary = socfpga_a10_boot_secondary,
|
|
.smp_boot_secondary = socfpga_a10_boot_secondary,
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
.cpu_die = socfpga_cpu_die,
|
|
.cpu_die = socfpga_cpu_die,
|
|
|
|
+ .cpu_kill = socfpga_cpu_kill,
|
|
#endif
|
|
#endif
|
|
};
|
|
};
|
|
|
|
|