[MIPS] SMP: Scatter __cpuinit over the code as needed.
MIPS doesn't do CPU hotplugging yet but since many of the functions don't even have an __init let's fix this right. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -287,7 +287,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* (unsigned long)idle->thread_info the gp
|
* (unsigned long)idle->thread_info the gp
|
||||||
* assumes a 1:1 mapping of TC => VPE
|
* assumes a 1:1 mapping of TC => VPE
|
||||||
*/
|
*/
|
||||||
void prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
struct thread_info *gp = task_thread_info(idle);
|
struct thread_info *gp = task_thread_info(idle);
|
||||||
dvpe();
|
dvpe();
|
||||||
@@ -321,7 +321,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
|
|||||||
evpe(EVPE_ENABLE);
|
evpe(EVPE_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
/* Enable per-cpu interrupts */
|
/* Enable per-cpu interrupts */
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ void prom_init_secondary(void)
|
|||||||
(STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP6 | STATUSF_IP7));
|
(STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP6 | STATUSF_IP7));
|
||||||
}
|
}
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ));
|
write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ));
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ void core_send_ipi(int cpu, unsigned int action)
|
|||||||
* Platform "CPU" startup hook
|
* Platform "CPU" startup hook
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
smtc_boot_secondary(cpu, idle);
|
smtc_boot_secondary(cpu, idle);
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
|
|||||||
* Post-config but pre-boot cleanup entry point
|
* Post-config but pre-boot cleanup entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
void smtc_init_secondary(void);
|
void smtc_init_secondary(void);
|
||||||
int myvpe;
|
int myvpe;
|
||||||
@@ -75,7 +75,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* SMP initialization finalization entry point
|
* SMP initialization finalization entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
smtc_smp_finish();
|
smtc_smp_finish();
|
||||||
}
|
}
|
||||||
|
@@ -53,7 +53,7 @@ void core_send_ipi(int cpu, unsigned int action)
|
|||||||
* Platform "CPU" startup hook
|
* Platform "CPU" startup hook
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
smtc_boot_secondary(cpu, idle);
|
smtc_boot_secondary(cpu, idle);
|
||||||
@@ -64,7 +64,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
|
|||||||
* Post-config but pre-boot cleanup entry point
|
* Post-config but pre-boot cleanup entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
void smtc_init_secondary(void);
|
void smtc_init_secondary(void);
|
||||||
@@ -103,7 +103,7 @@ void plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* SMP initialization finalization entry point
|
* SMP initialization finalization entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
smtc_smp_finish();
|
smtc_smp_finish();
|
||||||
|
@@ -77,7 +77,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* stack so the first thing we do is throw away that stuff and load useful
|
* stack so the first thing we do is throw away that stuff and load useful
|
||||||
* values into the registers ...
|
* values into the registers ...
|
||||||
*/
|
*/
|
||||||
void __init prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
unsigned long gp = (unsigned long) task_thread_info(idle);
|
unsigned long gp = (unsigned long) task_thread_info(idle);
|
||||||
unsigned long sp = __KSTK_TOS(idle);
|
unsigned long sp = __KSTK_TOS(idle);
|
||||||
@@ -97,12 +97,12 @@ void prom_cpus_done(void)
|
|||||||
* After we've done initial boot, this function is called to allow the
|
* After we've done initial boot, this function is called to allow the
|
||||||
* board code to clean up state, if needed
|
* board code to clean up state, if needed
|
||||||
*/
|
*/
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
set_c0_status(ST0_CO | ST0_IE | ST0_IM);
|
set_c0_status(ST0_CO | ST0_IE | ST0_IM);
|
||||||
}
|
}
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,11 +22,11 @@ void core_send_ipi(int cpu, unsigned int action)
|
|||||||
* After we've done initial boot, this function is called to allow the
|
* After we've done initial boot, this function is called to allow the
|
||||||
* board code to clean up state, if needed
|
* board code to clean up state, if needed
|
||||||
*/
|
*/
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
|
|||||||
/*
|
/*
|
||||||
* Firmware CPU startup hook
|
* Firmware CPU startup hook
|
||||||
*/
|
*/
|
||||||
void prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -171,7 +171,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* set sp to the kernel stack of the newly created idle process, gp to the proc
|
* set sp to the kernel stack of the newly created idle process, gp to the proc
|
||||||
* struct so that current_thread_info() will work.
|
* struct so that current_thread_info() will work.
|
||||||
*/
|
*/
|
||||||
void __init prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
unsigned long gp = (unsigned long)task_thread_info(idle);
|
unsigned long gp = (unsigned long)task_thread_info(idle);
|
||||||
unsigned long sp = __KSTK_TOS(idle);
|
unsigned long sp = __KSTK_TOS(idle);
|
||||||
@@ -191,7 +191,7 @@ void __init prom_cpus_done(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -58,7 +58,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
|
|||||||
* Setup the PC, SP, and GP of a secondary processor and start it
|
* Setup the PC, SP, and GP of a secondary processor and start it
|
||||||
* running!
|
* running!
|
||||||
*/
|
*/
|
||||||
void prom_boot_secondary(int cpu, struct task_struct *idle)
|
void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
|
|||||||
/*
|
/*
|
||||||
* Code to run on secondary just after probing the CPU
|
* Code to run on secondary just after probing the CPU
|
||||||
*/
|
*/
|
||||||
void prom_init_secondary(void)
|
void __cpuinit prom_init_secondary(void)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
|
#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
|
||||||
extern void bcm1480_smp_init(void);
|
extern void bcm1480_smp_init(void);
|
||||||
@@ -89,7 +89,7 @@ void prom_init_secondary(void)
|
|||||||
* Do any tidying up before marking online and running the idle
|
* Do any tidying up before marking online and running the idle
|
||||||
* loop
|
* loop
|
||||||
*/
|
*/
|
||||||
void prom_smp_finish(void)
|
void __cpuinit prom_smp_finish(void)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
|
#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
|
||||||
extern void bcm1480_smp_finish(void);
|
extern void bcm1480_smp_finish(void);
|
||||||
|
Reference in New Issue
Block a user