Commit 39fd4027 authored by Andy Fleming's avatar Andy Fleming Committed by Benjamin Herrenschmidt

powerpc: Convert platforms to smp_generic_cpu_bootable

T4, Cell, powernv, and pseries had the same implementation, so switch
them to use a generic version. A2 apparently had a version, but
removed it at some point, so we remove the declaration, too.
Signed-off-by: default avatarAndy Fleming <afleming@freescale.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 3cd85250
...@@ -255,6 +255,7 @@ static int smp_85xx_kick_cpu(int nr) ...@@ -255,6 +255,7 @@ static int smp_85xx_kick_cpu(int nr)
struct smp_ops_t smp_85xx_ops = { struct smp_ops_t smp_85xx_ops = {
.kick_cpu = smp_85xx_kick_cpu, .kick_cpu = smp_85xx_kick_cpu,
.cpu_bootable = smp_generic_cpu_bootable,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
.cpu_disable = generic_cpu_disable, .cpu_disable = generic_cpu_disable,
.cpu_die = generic_cpu_die, .cpu_die = generic_cpu_die,
......
...@@ -136,25 +136,12 @@ static int smp_cell_kick_cpu(int nr) ...@@ -136,25 +136,12 @@ static int smp_cell_kick_cpu(int nr)
return 0; return 0;
} }
static int smp_cell_cpu_bootable(unsigned int nr)
{
/* Special case - we inhibit secondary thread startup
* during boot if the user requests it. Odd-numbered
* cpus are assumed to be secondary threads.
*/
if (system_state == SYSTEM_BOOTING &&
cpu_has_feature(CPU_FTR_SMT) &&
!smt_enabled_at_boot && cpu_thread_in_core(nr) != 0)
return 0;
return 1;
}
static struct smp_ops_t bpa_iic_smp_ops = { static struct smp_ops_t bpa_iic_smp_ops = {
.message_pass = iic_message_pass, .message_pass = iic_message_pass,
.probe = smp_iic_probe, .probe = smp_iic_probe,
.kick_cpu = smp_cell_kick_cpu, .kick_cpu = smp_cell_kick_cpu,
.setup_cpu = smp_cell_setup_cpu, .setup_cpu = smp_cell_setup_cpu,
.cpu_bootable = smp_cell_cpu_bootable, .cpu_bootable = smp_generic_cpu_bootable,
}; };
/* This is called very early */ /* This is called very early */
......
...@@ -46,22 +46,6 @@ static void pnv_smp_setup_cpu(int cpu) ...@@ -46,22 +46,6 @@ static void pnv_smp_setup_cpu(int cpu)
xics_setup_cpu(); xics_setup_cpu();
} }
static int pnv_smp_cpu_bootable(unsigned int nr)
{
/* Special case - we inhibit secondary thread startup
* during boot if the user requests it.
*/
if (system_state == SYSTEM_BOOTING && cpu_has_feature(CPU_FTR_SMT)) {
if (!smt_enabled_at_boot && cpu_thread_in_core(nr) != 0)
return 0;
if (smt_enabled_at_boot
&& cpu_thread_in_core(nr) >= smt_enabled_at_boot)
return 0;
}
return 1;
}
int pnv_smp_kick_cpu(int nr) int pnv_smp_kick_cpu(int nr)
{ {
unsigned int pcpu = get_hard_smp_processor_id(nr); unsigned int pcpu = get_hard_smp_processor_id(nr);
...@@ -195,7 +179,7 @@ static struct smp_ops_t pnv_smp_ops = { ...@@ -195,7 +179,7 @@ static struct smp_ops_t pnv_smp_ops = {
.probe = xics_smp_probe, .probe = xics_smp_probe,
.kick_cpu = pnv_smp_kick_cpu, .kick_cpu = pnv_smp_kick_cpu,
.setup_cpu = pnv_smp_setup_cpu, .setup_cpu = pnv_smp_setup_cpu,
.cpu_bootable = pnv_smp_cpu_bootable, .cpu_bootable = smp_generic_cpu_bootable,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
.cpu_disable = pnv_smp_cpu_disable, .cpu_disable = pnv_smp_cpu_disable,
.cpu_die = generic_cpu_die, .cpu_die = generic_cpu_die,
......
...@@ -187,22 +187,6 @@ static int smp_pSeries_kick_cpu(int nr) ...@@ -187,22 +187,6 @@ static int smp_pSeries_kick_cpu(int nr)
return 0; return 0;
} }
static int smp_pSeries_cpu_bootable(unsigned int nr)
{
/* Special case - we inhibit secondary thread startup
* during boot if the user requests it.
*/
if (system_state == SYSTEM_BOOTING && cpu_has_feature(CPU_FTR_SMT)) {
if (!smt_enabled_at_boot && cpu_thread_in_core(nr) != 0)
return 0;
if (smt_enabled_at_boot
&& cpu_thread_in_core(nr) >= smt_enabled_at_boot)
return 0;
}
return 1;
}
/* Only used on systems that support multiple IPI mechanisms */ /* Only used on systems that support multiple IPI mechanisms */
static void pSeries_cause_ipi_mux(int cpu, unsigned long data) static void pSeries_cause_ipi_mux(int cpu, unsigned long data)
{ {
...@@ -237,7 +221,7 @@ static struct smp_ops_t pSeries_xics_smp_ops = { ...@@ -237,7 +221,7 @@ static struct smp_ops_t pSeries_xics_smp_ops = {
.probe = pSeries_smp_probe, .probe = pSeries_smp_probe,
.kick_cpu = smp_pSeries_kick_cpu, .kick_cpu = smp_pSeries_kick_cpu,
.setup_cpu = smp_xics_setup_cpu, .setup_cpu = smp_xics_setup_cpu,
.cpu_bootable = smp_pSeries_cpu_bootable, .cpu_bootable = smp_generic_cpu_bootable,
}; };
/* This is called very early */ /* This is called very early */
......
...@@ -17,7 +17,6 @@ extern void scom_init_wsp(void); ...@@ -17,7 +17,6 @@ extern void scom_init_wsp(void);
extern void a2_setup_smp(void); extern void a2_setup_smp(void);
extern int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx, extern int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx,
struct device_node *np); struct device_node *np);
extern int smp_a2_cpu_bootable(unsigned int nr);
extern int smp_a2_kick_cpu(int nr); extern int smp_a2_kick_cpu(int nr);
extern void opb_pic_init(void); extern void opb_pic_init(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment