Sorry for the first version of he patch. I did one change, in order to do the initialization only for !possible cpu [PATCH] x86_64 : Use a special CPUDATA_RED_ZONE to catch accesses to per_cpu(some_object, some_not_possible_cpu) Because cpu_data(cpu)->data_offset may contain garbage, some buggy code may do random things without notice. If we initialize data_offset so that the per_cpu() data sits in an unmapped memory area, we should get page faults and stack traces should help us find the bugs. Signed-off-by: Eric Dumazet