powerpc: Move smp_mpic_message_pass into mpic.c
Having it here rather than in arch/ppc64/kernel/smp.c means that we can use it on 32-bit SMP systems easily with ARCH=powerpc. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
d8699e65c6
Коммит
a9c5926469
|
@ -904,4 +904,25 @@ void mpic_request_ipis(void)
|
||||||
|
|
||||||
printk("IPIs requested... \n");
|
printk("IPIs requested... \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void smp_mpic_message_pass(int target, int msg)
|
||||||
|
{
|
||||||
|
/* make sure we're sending something that translates to an IPI */
|
||||||
|
if ((unsigned int)msg > 3) {
|
||||||
|
printk("SMP %d: smp_message_pass: unknown msg %d\n",
|
||||||
|
smp_processor_id(), msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (target) {
|
||||||
|
case MSG_ALL:
|
||||||
|
mpic_send_ipi(msg, 0xffffffff);
|
||||||
|
break;
|
||||||
|
case MSG_ALL_BUT_SELF:
|
||||||
|
mpic_send_ipi(msg, 0xffffffff & ~(1 << smp_processor_id()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mpic_send_ipi(msg, 1 << target);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
|
@ -69,28 +69,6 @@ void smp_call_function_interrupt(void);
|
||||||
int smt_enabled_at_boot = 1;
|
int smt_enabled_at_boot = 1;
|
||||||
|
|
||||||
#ifdef CONFIG_MPIC
|
#ifdef CONFIG_MPIC
|
||||||
void smp_mpic_message_pass(int target, int msg)
|
|
||||||
{
|
|
||||||
/* make sure we're sending something that translates to an IPI */
|
|
||||||
if ( msg > 0x3 ){
|
|
||||||
printk("SMP %d: smp_message_pass: unknown msg %d\n",
|
|
||||||
smp_processor_id(), msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch ( target )
|
|
||||||
{
|
|
||||||
case MSG_ALL:
|
|
||||||
mpic_send_ipi(msg, 0xffffffff);
|
|
||||||
break;
|
|
||||||
case MSG_ALL_BUT_SELF:
|
|
||||||
mpic_send_ipi(msg, 0xffffffff & ~(1 << smp_processor_id()));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mpic_send_ipi(msg, 1 << target);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init smp_mpic_probe(void)
|
int __init smp_mpic_probe(void)
|
||||||
{
|
{
|
||||||
int nr_cpus;
|
int nr_cpus;
|
||||||
|
|
|
@ -273,6 +273,9 @@ extern void mpic_request_ipis(void);
|
||||||
/* Send an IPI (non offseted number 0..3) */
|
/* Send an IPI (non offseted number 0..3) */
|
||||||
extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask);
|
extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask);
|
||||||
|
|
||||||
|
/* Send a message (IPI) to a given target (cpu number or MSG_*) */
|
||||||
|
void smp_mpic_message_pass(int target, int msg);
|
||||||
|
|
||||||
/* Fetch interrupt from a given mpic */
|
/* Fetch interrupt from a given mpic */
|
||||||
extern int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs);
|
extern int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs);
|
||||||
/* This one gets to the primary mpic */
|
/* This one gets to the primary mpic */
|
||||||
|
|
|
@ -77,7 +77,6 @@ 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 void smp_mpic_message_pass(int target, int msg);
|
|
||||||
extern void smp_generic_kick_cpu(int nr);
|
extern void smp_generic_kick_cpu(int nr);
|
||||||
|
|
||||||
extern void smp_generic_give_timebase(void);
|
extern void smp_generic_give_timebase(void);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче