lkml.org 
[lkml]   [2009]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/5] linker script: define __per_cpu_load on all SMP capable archs
    Date
    Impact: __per_cpu_load available on all SMP capable archs

    Percpu now requires three symbols to be defined - __per_cpu_load,
    __per_cpu_start and __per_cpu_end. There were three archs which
    didn't have it. Update them as follows.

    * powerpc: can use generic PERCPU() macro. Compile tested for
    powerpc32, compile/boot tested for powerpc64.

    * ia64: can use generic PERCPU_VADDR() macro. __phys_per_cpu_start is
    identical to __per_cpu_load. Compile tested and symbol table looks
    identical after the change except for the additional __per_cpu_load.

    * arm: added explicit __per_cpu_load definition. Currently uses
    unified .init output section so can't use the generic macro. Dunno
    whether the unified .init ouput section is required by arch
    peculiarity so I left it alone. Please break it up and use PERCPU()
    if possible.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Pat Gefre <pfg@sgi.com>
    Cc: Russell King <rmk@arm.linux.org.uk>
    ---
    arch/arm/kernel/vmlinux.lds.S | 1 +
    arch/ia64/kernel/vmlinux.lds.S | 12 ++----------
    arch/powerpc/kernel/vmlinux.lds.S | 9 +--------
    3 files changed, 4 insertions(+), 18 deletions(-)

    diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
    index 85598f7..1602373 100644
    --- a/arch/arm/kernel/vmlinux.lds.S
    +++ b/arch/arm/kernel/vmlinux.lds.S
    @@ -64,6 +64,7 @@ SECTIONS
    __initramfs_end = .;
    #endif
    . = ALIGN(4096);
    + __per_cpu_load = .;
    __per_cpu_start = .;
    *(.data.percpu.page_aligned)
    *(.data.percpu)
    diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
    index f45e4e5..3765efc 100644
    --- a/arch/ia64/kernel/vmlinux.lds.S
    +++ b/arch/ia64/kernel/vmlinux.lds.S
    @@ -213,17 +213,9 @@ SECTIONS
    { *(.data.cacheline_aligned) }

    /* Per-cpu data: */
    - percpu : { } :percpu
    . = ALIGN(PERCPU_PAGE_SIZE);
    - __phys_per_cpu_start = .;
    - .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET)
    - {
    - __per_cpu_start = .;
    - *(.data.percpu.page_aligned)
    - *(.data.percpu)
    - *(.data.percpu.shared_aligned)
    - __per_cpu_end = .;
    - }
    + PERCPU_VADDR(PERCPU_ADDR, :percpu)
    + __phys_per_cpu_start = __per_cpu_load;
    . = __phys_per_cpu_start + PERCPU_PAGE_SIZE; /* ensure percpu data fits
    * into percpu page size
    */
    diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
    index 295ccc5..67f07f4 100644
    --- a/arch/powerpc/kernel/vmlinux.lds.S
    +++ b/arch/powerpc/kernel/vmlinux.lds.S
    @@ -181,14 +181,7 @@ SECTIONS
    __initramfs_end = .;
    }
    #endif
    - . = ALIGN(PAGE_SIZE);
    - .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
    - __per_cpu_start = .;
    - *(.data.percpu.page_aligned)
    - *(.data.percpu)
    - *(.data.percpu.shared_aligned)
    - __per_cpu_end = .;
    - }
    + PERCPU(PAGE_SIZE)

    . = ALIGN(8);
    .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) {
    --
    1.6.0.2


    \
     
     \ /
      Last update: 2009-03-10 09:01    [W:0.026 / U:32.008 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site