Re: [PATCH v5 1/8] smp: Introduce a generic on_each_cpu_mask function

From: Michal Nazarewicz
Date: Thu Jan 05 2012 - 08:17:59 EST


On Tue, 03 Jan 2012 23:26:24 +0100, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:

On Mon, 2 Jan 2012 12:24:12 +0200
Gilad Ben-Yossef <gilad@xxxxxxxxxxxxx> wrote:

on_each_cpu_mask calls a function on processors specified my cpumask,
which may include the local processor.

@@ -132,6 +139,15 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info)
local_irq_enable(); \
0; \
})
+#define on_each_cpu_mask(mask, func, info, wait) \
+ do { \
+ if (cpumask_test_cpu(0, (mask))) { \
+ local_irq_disable(); \
+ (func)(info); \
+ local_irq_enable(); \
+ } \
+ } while (0)

Why is the cpumask_test_cpu() call there? It's hard to think of a
reason why "mask" would specify any CPU other than "0" in a
uniprocessor kernel.

It may specify none. For instance, in drain_all_pages() case, if the
CPU has no pages on PCP lists, the mask will be empty and so the
cpumask_test_cpu() will return zero.

--
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o
..o | Computer Science, MichaÅ âmina86â Nazarewicz (o o)
ooo +----<email/xmpp: mpn@xxxxxxxxxx>--------------ooO--(_)--Ooo--
--
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/