--- include/asm-x86/percpu_64.h | 4 ++-- include/linux/percpu.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) Index: linux-2.6/include/asm-x86/percpu_64.h =================================================================== --- linux-2.6.orig/include/asm-x86/percpu_64.h 2007-11-16 20:34:27.475206558 -0800 +++ linux-2.6/include/asm-x86/percpu_64.h 2007-11-16 20:39:49.065456479 -0800 @@ -11,8 +11,8 @@ #include -#define __per_cpu_offset(cpu) (cpu_pda(cpu)->data_offset) -#define __my_cpu_offset() read_pda(data_offset) +#define __per_cpu_offset(cpu) CPU_OFFSET(cpu) +#define __my_cpu_offset() THIS_OFFSET #define per_cpu_offset(x) (__per_cpu_offset(x)) Index: linux-2.6/include/linux/percpu.h =================================================================== --- linux-2.6.orig/include/linux/percpu.h 2007-11-16 20:38:52.719206977 -0800 +++ linux-2.6/include/linux/percpu.h 2007-11-16 20:40:06.436654036 -0800 @@ -67,6 +67,8 @@ #define CPU_OFFSET(__cpu) \ ((unsigned long)(__cpu) << (CONFIG_CPU_AREA_ORDER + PAGE_SHIFT)) +#define THIS_OFFSET CPU_OFFSET(smp_processor_id()) + #define CPU_PTR(__p, __cpu) ((__typeof__(__p))((void *)(__p) + \ CPU_OFFSET(__cpu)))