Hi, On Tue, Nov 22, 2011 at 11:00 PM, Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> wrote: > On Tue, Nov 22, 2011 at 01:08:45PM +0200, Gilad Ben-Yossef wrote: >> -static void on_each_cpu_mask(void (*func)(void *), void *info, int wait, >> - const struct cpumask *mask) >> -{ >> - preempt_disable(); >> - >> - smp_call_function_many(mask, func, info, wait); >> - if (cpumask_test_cpu(smp_processor_id(), mask)) >> - func(info); >> - >> - preempt_enable(); >> -} > > What hasn't been said in the descriptions (I couldn't find it) is that > there's a semantic change between the new generic version and this version - > that is, we run the function with IRQs disabled on the local CPU, whereas > the version above runs it with IRQs potentially enabled. > > Luckily, for TLB flushing this is probably not a problem, but it's > something that should've been pointed out in the patch description. Thank you for the review! You are very right that I should have mentioned it in the description. My apologies for missing that bit. My reasoning for why the change is OK is that the function passed is ready to run with interrupt disabled because this is how it will be called on all the other CPUs through the IPI handler so it is safe. This is also how the generic on_each_cpu() handles it. Have I missed something? if not will you like me to update the patch description and re-send? Thanks, Gilad -- Gilad Ben-Yossef Chief Coffee Drinker gilad@xxxxxxxxxxxxx Israel Cell: +972-52-8260388 US Cell: +1-973-8260388 http://benyossef.com "Unfortunately, cache misses are an equal opportunity pain provider." -- Mike Galbraith, LKML -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href