Re: [PATCH] smp_call_function WARN_ON

From: Manfred Spraul
Date: Sun Aug 15 2004 - 01:53:32 EST


Zwane wrote:

The WARN_ON() is really only true if you're waiting for the other
processors.



Wrong: At least on i386 the code always waits for delivery of the IPI, it just doesn't wait for completion of the callback.
Do you need IPIs from irq or bh context? It would be tricky to change the current code: an IPI just delivers an interrupt without any payload. The global 'call_data' variable contains the description of the IPI and accesses to it must be synchronized.

IPIs from BH context do no work either: they can deadlock against the tasklist_lock: the first cpu calls read_lock(&tasklist_lock) from process context, another cpu calls write_lock_irq(&tasklist_lock), and then the first cpu tries smp_call_function() from bh context.

--
Manfred
-
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/