Commit 5ca9305e authored by Russell King's avatar Russell King

Merge flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-smp

into flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-rmk
parents 431f94fb a8af92ce
...@@ -314,67 +314,57 @@ static void ipi_cpu_stop(unsigned int cpu) ...@@ -314,67 +314,57 @@ static void ipi_cpu_stop(unsigned int cpu)
* *
* Bit 0 - Inter-processor function call * Bit 0 - Inter-processor function call
*/ */
void do_IPI(unsigned int ipimask, struct pt_regs *regs) void do_IPI(struct pt_regs *regs)
{ {
unsigned int cpu = smp_processor_id(); unsigned int cpu = smp_processor_id();
struct ipi_data *ipi = &per_cpu(ipi_data, cpu); struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
ipi->ipi_count++; ipi->ipi_count++;
if (ipimask & (1 << 0)) { for (;;) {
for (;;) { unsigned long msgs;
unsigned long msgs;
spin_lock(&ipi->lock); spin_lock(&ipi->lock);
msgs = ipi->bits; msgs = ipi->bits;
ipi->bits = 0; ipi->bits = 0;
spin_unlock(&ipi->lock); spin_unlock(&ipi->lock);
if (!msgs)
break;
if (!msgs) do {
unsigned nextmsg;
nextmsg = msgs & -msgs;
msgs &= ~nextmsg;
nextmsg = ffz(~nextmsg);
switch (nextmsg) {
case IPI_TIMER:
ipi_timer(regs);
break; break;
do { case IPI_RESCHEDULE:
unsigned nextmsg; /*
* nothing more to do - eveything is
nextmsg = msgs & -msgs; * done on the interrupt return path
msgs &= ~nextmsg; */
nextmsg = ffz(~nextmsg); break;
switch (nextmsg) { case IPI_CALL_FUNC:
case IPI_TIMER: ipi_call_function(cpu);
ipi_timer(regs); break;
break;
case IPI_RESCHEDULE:
/*
* nothing more to do - eveything is
* done on the interrupt return path
*/
break;
case IPI_CALL_FUNC:
ipi_call_function(cpu);
break;
case IPI_CPU_STOP:
ipi_cpu_stop(cpu);
break;
default:
printk(KERN_CRIT "CPU%u: Unknown IPI message 0x%x\n",
cpu, nextmsg);
break;
}
} while (msgs);
}
ipimask &= ~0x01;
}
if (ipimask) { case IPI_CPU_STOP:
printk(KERN_CRIT "CPU %d: Unknown IPI signal %x!\n", ipi_cpu_stop(cpu);
cpu, ipimask); break;
BUG();
default:
printk(KERN_CRIT "CPU%u: Unknown IPI message 0x%x\n",
cpu, nextmsg);
break;
}
} while (msgs);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment