Re: Linux 3.10-rc6

From: David Daney
Date: Wed Jun 19 2013 - 12:57:37 EST


On 06/17/2013 02:38 PM, Andrew Morton wrote:
On Mon, 17 Jun 2013 14:26:01 -0700 David Daney <ddaney@xxxxxxxxxxxxxxxxxx> wrote:

On 06/17/2013 02:13 PM, Andrew Morton wrote:
On Mon, 17 Jun 2013 14:08:13 -0700 David Daney <ddaney@xxxxxxxxxxxxxxxxxx> wrote:


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.

I'm not proposing that we revert f21afc25f9ed4. Retain its
functionality, but do it via a macro for 3.10.

FYI, these two commits:

c0691143dfe (mn10300: Fix include dependency in irqflags.h et al.)
f75773103d2 ([IA64] Fix include dependency in asm/irqflags.h)

... seem to fix all known breakage related to this issue. So, the patch (to convert back to a macro) may not be necessary.

Sorry to create all this late -rc churn,
David Daney



I misread your patch. Your patch may be incorrect in that the flags
variable you introduce has name space collisions with code using the
macro. Linus found this exact problem with the first version of my
patch (which was identical to your patch).

Sigh. Macros do so suck.

--- a/include/linux/smp.h~include-linux-smph-on_each_cpu-switch-back-to-a-macro
+++ a/include/linux/smp.h
@@ -11,7 +11,6 @@
#include <linux/list.h>
#include <linux/cpumask.h>
#include <linux/init.h>
-#include <linux/irqflags.h>

extern void cpu_idle(void);

@@ -140,17 +139,14 @@ static inline int up_smp_call_function(s
}
#define smp_call_function(func, info, wait) \
(up_smp_call_function(func, info))
-
-static inline int on_each_cpu(smp_call_func_t func, void *info, int wait)
-{
- unsigned long flags;
-
- local_irq_save(flags);
- func(info);
- local_irq_restore(flags);
- return 0;
-}
-
+#define on_each_cpu(func, info, wait) \
+ ({ \
+ unsigned long __flags; \
+ local_irq_save(__flags); \
+ func(info); \
+ local_irq_restore(__flags); \
+ 0; \
+ })
/*
* Note we still need to test the mask even for UP
* because we actually can get an empty mask from
_

Once you fix the name of 'flags', I hope you don't run into the same
Include Hell on ia64 and mn10300 that I did.

I build-tested ia64. I don't have an mn10300 cross-compiler set up.



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