Messages in this thread | | | Date | Thu, 01 Mar 2007 12:31:33 -0800 | From | Zachary Amsden <> | Subject | Re: Bug in on_each_cpu? |
| |
Andrew Morton wrote: > The handler for smp_call_function() is called with local interrupts > disabled (from the IPI handler). > > So to provide a consistent call environment for that handler, on_each_cpu() > will also disable local interrupts when making the direct call on this CPU. > > Similarly the !CONFIG_SMP version of on_each_cpu() disables local > interrupts when running the caller's function. >
Yes, that is sensible. Something akin to on_each_cpu(synchronize_tscs) would certainly not like interrupts coming in. Similarly, acpi_nmi disable and probably rcu barriers as well. The irq disable here can very validly be used as a barrier, but trying to ensure preserved shared state with irq handlers over the call is a bug.
If one had all the spare time in the world, a new "sense" of irq disable that communicated this fact would be nice from a static or dynamic checking perspective.
Zach
------ sutra I.1 - atha linushasaanam - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |