lkml.org 
[lkml]   [2011]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[34-longterm 206/260] powerpc: Initialise paca->kstack before early_setup_secondary
    Date
    From: Matt Evans <matt@ozlabs.org>

    commit f761622e59433130bc33ad086ce219feee9eb961 upstream.

    As early setup calls down to slb_initialize(), we must have kstack
    initialised before checking "should we add a bolted SLB entry for our kstack?"

    Failing to do so means stack access requires an SLB miss exception to refill
    an entry dynamically, if the stack isn't accessible via SLB(0) (kernel text
    & static data). It's not always allowable to take such a miss, and
    intermittent crashes will result.

    Primary CPUs don't have this issue; an SLB entry is not bolted for their
    stack anyway (as that lives within SLB(0)). This patch therefore only
    affects the init of secondaries.

    Signed-off-by: Matt Evans <matt@ozlabs.org>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    ---
    arch/powerpc/kernel/head_64.S | 6 +++---
    1 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
    index bed9a29..579751e 100644
    --- a/arch/powerpc/kernel/head_64.S
    +++ b/arch/powerpc/kernel/head_64.S
    @@ -572,9 +572,6 @@ __secondary_start:
    /* Set thread priority to MEDIUM */
    HMT_MEDIUM

    - /* Do early setup for that CPU (stab, slb, hash table pointer) */
    - bl .early_setup_secondary
    -
    /* Initialize the kernel stack. Just a repeat for iSeries. */
    LOAD_REG_ADDR(r3, current_set)
    sldi r28,r24,3 /* get current_set[cpu#] */
    @@ -582,6 +579,9 @@ __secondary_start:
    addi r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
    std r1,PACAKSAVE(r13)

    + /* Do early setup for that CPU (stab, slb, hash table pointer) */
    + bl .early_setup_secondary
    +
    /* Clear backchain so we get nice backtraces */
    li r7,0
    mtlr r7
    --
    1.7.3.3


    \
     
     \ /
      Last update: 2011-01-02 08:39    [W:4.595 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site