Re: linux-next: manual merge of the tip tree with the sparc tree

From: Daniel Hellstrom
Date: Fri May 20 2011 - 02:09:08 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/