Patch "powerpc: Fix early setup to make early_ioremap() work" has been added to the 5.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc: Fix early setup to make early_ioremap() work

to the 5.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-fix-early-setup-to-make-early_ioremap-work.patch
and it can be found in the queue-5.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 0192416ebc73ce9757b60f221c8cde2dd4944586
Author: Alexey Kardashevskiy <aik@xxxxxxxxx>
Date:   Thu May 20 13:29:19 2021 +1000

    powerpc: Fix early setup to make early_ioremap() work
    
    [ 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@xxxxxxxxx>
    Reviewed-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
    [mpe: Drop unrelated cleanup & cleanup change log]
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210520032919.358935-1-aik@xxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

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



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux