Messages in this thread | | | Date | Fri, 9 Aug 2013 21:51:20 +0300 | Subject | Re: [PATCH] smp.c: Quit unconditionally enabling irqs in on_each_cpu_mask(). | From | Gilad Ben-Yossef <> |
| |
On Thu, Aug 8, 2013 at 11:27 PM, David Daney <ddaney@caviumnetworks.com> wrote: > > On 08/08/2013 12:25 PM, Christoph Lameter wrote: >> >> On Thu, 8 Aug 2013, David Daney wrote: >> >>> I don't know of any bugs currently caused by this unconditional >>> local_irq_enable(), but I want to use this function in MIPS/OCTEON >>> early boot (when we have early_boot_irqs_disabled). This also makes >>> this function have similar semantics to on_each_cpu() which is good in >>> itself. >> >> >> smp_call_function_many() wants interrupts enabled. > > > That's what the comments say, but it isn't actually true. > > The usage introduced by the patch is no different than the existing usage in on_each_cpu() 30 line up in the file. >
Regardless of the question of how smp_call_function_many() should be called, the IRQ disable/enable pair is actually there to make sure the provided function runs on the current CPU at the same conditions as it would get called via the IPI.
I would at least consider putting a test there to make sure IRQs really are disabled when entering the function, otherwise the bugs stemming from incorrect use can be tricky to catch.
Just my 0.00002 BTC Gilad
-- Gilad Ben-Yossef Chief Coffee Drinker gilad@benyossef.com Israel Cell: +972-52-8260388 US Cell: +1-973-8260388 http://benyossef.com
"If you take a class in large-scale robotics, can you end up in a situation where the homework eats your dog?" -- Jean-Baptiste Queru
| |