MIPS: Add arch generic CPU hotplug
Each platform has to add support for CPU hotplugging itself by providing suitable definitions for the cpu_disable and cpu_die of the smp_ops methods and setting SYS_SUPPORTS_HOTPLUG_CPU. A platform should only set SYS_SUPPORTS_HOTPLUG_CPU once all it's smp_ops definitions have the necessary changes. This patch contains the changes to the dummy smp_ops definition for uni-processor systems. Parts of the code contributed by Cavium Inc. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -26,6 +26,10 @@ struct plat_smp_ops {
|
||||
void (*boot_secondary)(int cpu, struct task_struct *idle);
|
||||
void (*smp_setup)(void);
|
||||
void (*prepare_cpus)(unsigned int max_cpus);
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
int (*cpu_disable)(void);
|
||||
void (*cpu_die)(unsigned int cpu);
|
||||
#endif
|
||||
};
|
||||
|
||||
extern void register_smp_ops(struct plat_smp_ops *ops);
|
||||
|
@@ -41,6 +41,7 @@ extern int __cpu_logical_map[NR_CPUS];
|
||||
/* Octeon - Tell another core to flush its icache */
|
||||
#define SMP_ICACHE_FLUSH 0x4
|
||||
|
||||
extern cpumask_t cpu_callin_map;
|
||||
|
||||
extern void asmlinkage smp_bootstrap(void);
|
||||
|
||||
@@ -56,6 +57,24 @@ static inline void smp_send_reschedule(int cpu)
|
||||
mp_ops->send_ipi_single(cpu, SMP_RESCHEDULE_YOURSELF);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
static inline int __cpu_disable(void)
|
||||
{
|
||||
extern struct plat_smp_ops *mp_ops; /* private */
|
||||
|
||||
return mp_ops->cpu_disable();
|
||||
}
|
||||
|
||||
static inline void __cpu_die(unsigned int cpu)
|
||||
{
|
||||
extern struct plat_smp_ops *mp_ops; /* private */
|
||||
|
||||
mp_ops->cpu_die(cpu);
|
||||
}
|
||||
|
||||
extern void play_dead(void);
|
||||
#endif
|
||||
|
||||
extern asmlinkage void smp_call_function_interrupt(void);
|
||||
|
||||
extern void arch_send_call_function_single_ipi(int cpu);
|
||||
|
Reference in New Issue
Block a user