lkml.org 
[lkml]   [2021]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 034/127] powerpc: Fix early setup to make early_ioremap() work
    Date
    From: Alexey Kardashevskiy <aik@ozlabs.ru>

    [ Upstream commit e2f5efd0f0e229bd110eab513e7c0331d61a4649 ]

    The immediate problem is that after commit
    0bd3f9e953bd ("powerpc/legacy_serial: Use early_ioremap()") the kernel
    silently reboots on some systems.

    The reason is that early_ioremap() returns broken addresses as it uses
    slot_virt[] array which initialized with offsets from FIXADDR_TOP ==
    IOREMAP_END+FIXADDR_SIZE == KERN_IO_END - FIXADDR_SIZ + FIXADDR_SIZE ==
    __kernel_io_end which is 0 when early_ioremap_setup() is called.
    __kernel_io_end is initialized little bit later in early_init_mmu().

    This fixes the initialization by swapping early_ioremap_setup() and
    early_init_mmu().

    Fixes: 265c3491c4bc ("powerpc: Add support for GENERIC_EARLY_IOREMAP")
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Drop unrelated cleanup & cleanup change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210520032919.358935-1-aik@ozlabs.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/kernel/setup_64.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
    index 830fee91b2d9..c914fe8a2c67 100644
    --- a/arch/powerpc/kernel/setup_64.c
    +++ b/arch/powerpc/kernel/setup_64.c
    @@ -369,11 +369,11 @@ void __init early_setup(unsigned long dt_ptr)
    apply_feature_fixups();
    setup_feature_keys();

    - early_ioremap_setup();
    -
    /* Initialize the hash table or TLB handling */
    early_init_mmu();

    + early_ioremap_setup();
    +
    /*
    * After firmware and early platform setup code has set things up,
    * we note the SPR values for configurable control/performance
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-24 18:31    [W:4.043 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site