Hi, Brian.
You've added the following macros in
commit 6865dc3ae93b9acb336ca48bd7b2db3446d89370
x86/percpu: Introduce size abstraction macros
+#define __pcpu_cast_1(val) ((u8)(((unsigned long) val) & 0xff))
+#define __pcpu_cast_2(val) ((u16)(((unsigned long) val) & 0xffff))
+#define __pcpu_cast_4(val) ((u32)(((unsigned long) val) & 0xffffffff))
+#define __pcpu_cast_8(val) ((u64)(val))
They break complation if "val" is something complex like
this_cpu_write(pcp, *x = 1);
Only __pcpu_cast_8() is correct in this regard.
"val" should be in parenthesis at least.
Is there a reason for casts to "unsigned long"?
Why not just
#define __pcpu_cast_1(val) ((u8)(val))