1. 25 May, 2008 1 commit
    • Eric Dumazet's avatar
      percpu: introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro · 63cc8c75
      Eric Dumazet authored
      While examining holes in percpu section I found this :
      
      c05f5000 D per_cpu__current_task
      c05f5000 D __per_cpu_start
      c05f5004 D per_cpu__cpu_number
      c05f5008 D per_cpu__irq_regs
      c05f500c d per_cpu__cpu_devices
      c05f5040 D per_cpu__cyc2ns
      
      <Big Hole of about 4000 bytes>
      
      c05f6000 d per_cpu__cpuid4_info
      c05f6004 d per_cpu__cache_kobject
      c05f6008 d per_cpu__index_kobject
      
      <Big Hole of about 4000 bytes>
      
      c05f7000 D per_cpu__gdt_page
      
      This is because gdt_page is a percpu variable, defined with
      a page alignement, and linker is doing its job, two times because of .o
      nesting in the build process.
      
      I introduced a new macro DEFINE_PER_CPU_PAGE_ALIGNED() to avoid
      wasting this space. All page aligned variables (only one at this time)
      are put in a separate
      subsection .data.percpu.page_aligned, at the very begining of percpu zone.
      
      Before patch , on a x86_32 machine :
      
      .data.percpu                30232   3227471872
      .data.percpu                22168   3227471872
      
      Thats 8064 bytes saved for each CPU.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      63cc8c75
  2. 22 May, 2008 14 commits
  3. 21 May, 2008 25 commits