diff --git a/[refs] b/[refs] index a96d0e680515..09cf90aa3d1b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d0ff9348810c5bc9fc7a3f022bdfae9b44b62f00 +refs/heads/master: f21afc25f9ed45b8ffe200d0f071b0caec3ed2ef diff --git a/trunk/include/linux/smp.h b/trunk/include/linux/smp.h index e6564c1dc552..c8488763277f 100644 --- a/trunk/include/linux/smp.h +++ b/trunk/include/linux/smp.h @@ -11,6 +11,7 @@ #include #include #include +#include extern void cpu_idle(void); @@ -139,13 +140,17 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info) } #define smp_call_function(func, info, wait) \ (up_smp_call_function(func, info)) -#define on_each_cpu(func,info,wait) \ - ({ \ - local_irq_disable(); \ - func(info); \ - local_irq_enable(); \ - 0; \ - }) + +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; +} + /* * Note we still need to test the mask even for UP * because we actually can get an empty mask from