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 = {
|
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)
|
|||||||
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)
|
|||||||
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 = {
|
|||||||
.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)
|
|||||||
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 = {
|
|||||||
.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);
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user