Messages in this thread | | | Date | Mon, 17 Jun 2013 14:08:13 -0700 | From | David Daney <> | Subject | Re: Linux 3.10-rc6 |
| |
On 06/17/2013 01:59 PM, Andrew Morton wrote: > On Mon, 17 Jun 2013 13:48:16 -0700 David Daney <ddaney@caviumnetworks.com> wrote: > >> On 06/17/2013 01:30 PM, Andrew Morton wrote: >> [...] >>> >>> From: Andrew Morton <akpm@linux-foundation.org> >>> Subject: include/linux/smp.h:on_each_cpu(): switch back to a macro >>> >>> f21afc25f9ed4 ("smp.h: Use local_irq_{save,restore}() in !SMP version of >>> on_each_cpu()") converted on_each_cpu() to a C function. This required >>> inclusion of irqflags.h, which broke ia64 and mn10300 (at least) due to >>> header ordering hell. >>> >>> Switch on_each_cpu() back to a macro to fix this. >> >> FYI: I have already sent a pair of patches that fix the include >> dependencies: >> >> https://lkml.org/lkml/2013/6/16/113 >> https://lkml.org/lkml/2013/6/17/422 > > I wasn't cc'ed. > >> Obviously, it is Linus' choice as to how best to handle the failure, but >> I think it is important to know that there are two options (fixing ia64 >> and mn10300, or reverting the patch). > > I certainly prefer the inline function over a crappy macro. The > additional nested include is regrettable - more complexity. > > Also, it's good to have the SMP and non-SMP versions either both using > macros or both using C. Having them different can cause irritating > unused-variable compilation warnings when using the macro version.
Although all these points are true, they are not why I wrote the patch.
The key difference, for me, between the SMP and !SMP versions is that the !SMP version unconditionally enables interrupts, and this enabling interrupts breaks my kernel
> > I think switch-back-to-a-macro is simplest and safest for now. Perhaps > you can queue a 3.11 patch which restores the C function and fixes up > mn10300 and ia64? >
If the patch is reverted, I will do that.
David Daney
| |