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: Andy Fleming <afleming@freescale.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
3cd8525023
commit
39fd40274d
@ -255,6 +255,7 @@ out:
|
||||
|
||||
struct smp_ops_t smp_85xx_ops = {
|
||||
.kick_cpu = smp_85xx_kick_cpu,
|
||||
.cpu_bootable = smp_generic_cpu_bootable,
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
.cpu_disable = generic_cpu_disable,
|
||||
.cpu_die = generic_cpu_die,
|
||||
|
@ -136,25 +136,12 @@ static int smp_cell_kick_cpu(int nr)
|
||||
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 = {
|
||||
.message_pass = iic_message_pass,
|
||||
.probe = smp_iic_probe,
|
||||
.kick_cpu = smp_cell_kick_cpu,
|
||||
.setup_cpu = smp_cell_setup_cpu,
|
||||
.cpu_bootable = smp_cell_cpu_bootable,
|
||||
.cpu_bootable = smp_generic_cpu_bootable,
|
||||
};
|
||||
|
||||
/* This is called very early */
|
||||
|
@ -46,22 +46,6 @@ static void pnv_smp_setup_cpu(int 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)
|
||||
{
|
||||
unsigned int pcpu = get_hard_smp_processor_id(nr);
|
||||
@ -195,7 +179,7 @@ static struct smp_ops_t pnv_smp_ops = {
|
||||
.probe = xics_smp_probe,
|
||||
.kick_cpu = pnv_smp_kick_cpu,
|
||||
.setup_cpu = pnv_smp_setup_cpu,
|
||||
.cpu_bootable = pnv_smp_cpu_bootable,
|
||||
.cpu_bootable = smp_generic_cpu_bootable,
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
.cpu_disable = pnv_smp_cpu_disable,
|
||||
.cpu_die = generic_cpu_die,
|
||||
|
@ -187,22 +187,6 @@ static int smp_pSeries_kick_cpu(int nr)
|
||||
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 */
|
||||
static void pSeries_cause_ipi_mux(int cpu, unsigned long data)
|
||||
{
|
||||
@ -237,7 +221,7 @@ static struct smp_ops_t pSeries_xics_smp_ops = {
|
||||
.probe = pSeries_smp_probe,
|
||||
.kick_cpu = smp_pSeries_kick_cpu,
|
||||
.setup_cpu = smp_xics_setup_cpu,
|
||||
.cpu_bootable = smp_pSeries_cpu_bootable,
|
||||
.cpu_bootable = smp_generic_cpu_bootable,
|
||||
};
|
||||
|
||||
/* This is called very early */
|
||||
|
@ -17,7 +17,6 @@ extern void scom_init_wsp(void);
|
||||
extern void a2_setup_smp(void);
|
||||
extern int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx,
|
||||
struct device_node *np);
|
||||
extern int smp_a2_cpu_bootable(unsigned int nr);
|
||||
extern int smp_a2_kick_cpu(int nr);
|
||||
|
||||
extern void opb_pic_init(void);
|
||||
|
Loading…
Reference in New Issue
Block a user