On Tue, Mar 02, 2021 at 05:30:18PM -0800, Florian Fainelli wrote: > > > On 3/2/2021 3:54 PM, Thomas Bogendoerfer wrote: > > On Mon, Mar 01, 2021 at 08:19:38PM -0800, Florian Fainelli wrote: > >> BMIPS is one of the few platforms that do change the exception base. > >> After commit 2dcb39645441 ("memblock: do not start bottom-up allocations > >> with kernel_end") we started seeing BMIPS boards fail to boot with the > >> built-in FDT being corrupted. > >> > >> Before the cited commit, early allocations would be in the [kernel_end, > >> RAM_END] range, but after commit they would be within [RAM_START + > >> PAGE_SIZE, RAM_END]. > >> > >> The custom exception base handler that is installed by > >> bmips_ebase_setup() done for BMIPS5000 CPUs ends-up trampling on the > >> memory region allocated by unflatten_and_copy_device_tree() thus > >> corrupting the FDT used by the kernel. > >> > >> To fix this, we need to perform an early reservation of the custom > >> exception that is going to be installed and this needs to happen at > >> plat_mem_setup() time to ensure that unflatten_and_copy_device_tree() > >> finds a space that is suitable, away from reserved memory. > >> > >> Huge thanks to Serget for analysing and proposing a solution to this > >> issue. > >> > >> Fixes: Fixes: 2dcb39645441 ("memblock: do not start bottom-up allocations with kernel_end") > >> Debugged-by: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx> > >> Reported-by: Kamal Dasu <kdasu.kdev@xxxxxxxxx> > >> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx> > >> --- > >> Thomas, > >> > >> This is intended as a stop-gap solution for 5.12-rc1 and to be picked up > >> by the stable team for 5.11. We should find a safer way to avoid these > >> problems for 5.13 maybe. > > > > let's try to make it in one ago. Hwo about reserving vector space in > > cpu_probe, if it's known there and leave the rest to trap_init() ? > > > > Below patch got a quick test on IP22 (real hardware) and malta (qemu). > > Not sure, if I got all BMIPS parts correct, so please check/test. > > Works for me here: perfect, I only forgot about R3k... I'll submit a formal patch submission later today. Thomas. -- Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]