powerpc: Add smp_generic_cpu_bootable
Cell and PSeries both implemented their own versions of a cpu_bootable smp_op which do the same thing (well, the PSeries one has support for more than 2 threads). Copy the PSeries one to generic code, and rename it smp_generic_cpu_bootable. Signed-off-by: Andy Fleming <afleming@freescale.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
3b04c30007
commit
3cd8525023
@@ -186,6 +186,8 @@ extern int smt_enabled_at_boot;
|
|||||||
extern int smp_mpic_probe(void);
|
extern int smp_mpic_probe(void);
|
||||||
extern void smp_mpic_setup_cpu(int cpu);
|
extern void smp_mpic_setup_cpu(int cpu);
|
||||||
extern int smp_generic_kick_cpu(int nr);
|
extern int smp_generic_kick_cpu(int nr);
|
||||||
|
extern int smp_generic_cpu_bootable(unsigned int nr);
|
||||||
|
|
||||||
|
|
||||||
extern void smp_generic_give_timebase(void);
|
extern void smp_generic_give_timebase(void);
|
||||||
extern void smp_generic_take_timebase(void);
|
extern void smp_generic_take_timebase(void);
|
||||||
|
@@ -81,6 +81,28 @@ int smt_enabled_at_boot = 1;
|
|||||||
|
|
||||||
static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL;
|
static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns 1 if the specified cpu should be brought up during boot.
|
||||||
|
* Used to inhibit booting threads if they've been disabled or
|
||||||
|
* limited on the command line
|
||||||
|
*/
|
||||||
|
int smp_generic_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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
int smp_generic_kick_cpu(int nr)
|
int smp_generic_kick_cpu(int nr)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user