[PATCH] X86 : Introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro for x86 arch to shrink percpu section

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Ingo Molnar <mingo@...>
Cc: Linux kernel <linux-kernel@...>, Andi Kleen <ak@...>
Date: Tuesday, January 1, 2008 - 12:55 pm

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
<BIG HOLE of about 4000 bytes>
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 <dada1@cosmosbay.com>

  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(-)
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] X86 : Introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro ..., Eric Dumazet, (Tue Jan 1, 12:55 pm)