Hi Ingo Here is a patch against linux-2.6-x86 git Thank you [PATCH] X86 : Introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro for x86 arch to shrink percpu section While examining holes in percpu section I found this : c0659008 D per_cpu__cpu_number c065900c D per_cpu__irq_regs c065a000 D per_cpu__gdt_page c065b000 d per_cpu__next_check This is because gdt_page is a percpu variable, defined with a page alignement, and linker is doing its job. I introduced a new macro DEFINE_PER_CPU_PAGE_ALIGNED() to avoid wasting this space. All page aligned variables are put in a separate subsection .data.percpu.page_aligned This macro is defined for x86/generic architectures only but could be added to other arches if needed. Before patch : # size -A vmlinux | grep percpu .data.percpu 26144 3227328512 After patch : # size -A vmlinux | grep percpu .data.percpu 22048 3227328512 Signed-off-by: Eric Dumazet arch/x86/kernel/cpu/common.c | 2 +- arch/x86/kernel/vmlinux_32.lds.S | 1 + include/asm-generic/percpu.h | 4 ++++ include/asm-generic/vmlinux.lds.h | 1 + include/asm-x86/percpu_32.h | 4 ++++ include/asm-x86/percpu_64.h | 4 ++++ 6 files changed, 15 insertions(+), 1 deletion(-)