Messages in this thread | | | Date | Fri, 20 May 2011 08:07:44 +0200 | From | Daniel Hellstrom <> | Subject | Re: linux-next: manual merge of the tip tree with the sparc tree |
| |
Peter Zijlstra wrote:
>On Thu, 2011-05-19 at 15:37 +0200, Daniel Hellstrom wrote: > > > > >>diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c >>index 41102c5..d5b3958 100644 >>--- a/arch/sparc/kernel/smp_32.c >>+++ b/arch/sparc/kernel/smp_32.c >>@@ -156,11 +156,11 @@ void arch_send_call_function_ipi_mask(const struct >>cpumask *mask) >> >> void smp_resched_interrupt(void) >> { >>+ irq_enter(); >>+ scheduler_ipi(); >> local_cpu_data().irq_resched_count++; >>- /* >>- * do nothing, since it all was about calling re-schedule >>- * routine called by interrupt return code. >>- */ >>+ irq_exit(); >>+ /* re-schedule routine called by interrupt return code. */ >> } >> >> > >That doesn't look like an IPI, that looks like its calls the function on >the local cpu, which is completely pointless. > > The above function is one of the IPI interrupt handlers.
The smp_send_reschedule() is called by the generic code, it is responsible for sending an IRQ to the target CPU, that CPU comes into smp_resched_interrupt above from the IRQ trap handler. So yes, the scheduler_ipi() is called on the local CPU, but on the CPU taking the IPI not the CPU sending the IPI.
Daniel
| |