lkml.org 
[lkml]   [2009]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2/3] x86,percpu: fix DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED()
    DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() put percpu variables in
    .page_aligned section without adding any alignment restrictions.
    Currently, this doesn't cause any problem because all users of the
    macros have explicit page alignment and page-sized but it's much safer
    to enforce page alignment from the macros. After all, it's what they
    claim to do.

    Add __aligned(PAGE_SIZE) to DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() and
    drop explicit alignment from it users.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    ---
    This doesn't cause any problem for the current tree. No need to push
    it hastily.

    arch/x86/kernel/cpu/common.c | 3 +--
    include/linux/percpu-defs.h | 8 +++++---
    2 files changed, 6 insertions(+), 5 deletions(-)

    diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
    index f1961c0..12493c5 100644
    --- a/arch/x86/kernel/cpu/common.c
    +++ b/arch/x86/kernel/cpu/common.c
    @@ -1008,8 +1008,7 @@ static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = {
    };

    static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
    - [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ])
    - __aligned(PAGE_SIZE);
    + [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]);

    /* May not be marked __init: used by software suspend */
    void syscall_init(void)
    diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
    index aefc2f1..18d3147 100644
    --- a/include/linux/percpu-defs.h
    +++ b/include/linux/percpu-defs.h
    @@ -117,11 +117,13 @@
    /*
    * Declaration/definition used for per-CPU variables that must be page aligned.
    */
    -#define DECLARE_PER_CPU_PAGE_ALIGNED(type, name) \
    - DECLARE_PER_CPU_SECTION(type, name, ".page_aligned")
    +#define DECLARE_PER_CPU_PAGE_ALIGNED(type, name) \
    + DECLARE_PER_CPU_SECTION(type, name, ".page_aligned") \
    + __aligned(PAGE_SIZE)

    #define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
    - DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")
    + DEFINE_PER_CPU_SECTION(type, name, ".page_aligned") \
    + __aligned(PAGE_SIZE)

    /*
    * Intermodule exports for per-CPU variables.
    --
    1.6.0.2


    \
     
     \ /
      Last update: 2009-08-03 07:13    [W:4.076 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site