lkml.org 
[lkml]   [2021]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 5.10 103/157] MIPS: kernel: Reserve exception base early to prevent corruption
    On Mon, 22 Mar 2021 at 18:14, Greg Kroah-Hartman
    <gregkh@linuxfoundation.org> wrote:
    >
    > From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    >
    > [ Upstream commit bd67b711bfaa02cf19e88aa2d9edae5c1c1d2739 ]
    >
    > 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 space. Additional we reserve the first 4k (1k for R3k) for
    > either normal exception vector space (legacy CPUs) or special vectors
    > like cache exceptions.
    >
    > Huge thanks to Serge for analysing and proposing a solution to this
    > issue.
    >
    > Fixes: 2dcb39645441 ("memblock: do not start bottom-up allocations with kernel_end")
    > Reported-by: Kamal Dasu <kdasu.kdev@gmail.com>
    > Debugged-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    > Acked-by: Mike Rapoport <rppt@linux.ibm.com>
    > Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    > Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
    > Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    > Signed-off-by: Sasha Levin <sashal@kernel.org>
    > ---
    > arch/mips/include/asm/traps.h | 3 +++
    > arch/mips/kernel/cpu-probe.c | 6 ++++++
    > arch/mips/kernel/cpu-r3k-probe.c | 3 +++
    > arch/mips/kernel/traps.c | 10 +++++-----

    mipc tinyconfig and allnoconfig builds failed on stable-rc 5.10 branch

    make --silent --keep-going --jobs=8
    O=/home/tuxbuild/.cache/tuxmake/builds/1/tmp ARCH=mips
    CROSS_COMPILE=mips-linux-gnu- 'CC=sccache mips-linux-gnu-gcc'
    'HOSTCC=sccache gcc'
    WARNING: modpost: vmlinux.o(.text+0x6a88): Section mismatch in
    reference from the function reserve_exception_space() to the function
    .meminit.text:memblock_reserve()
    The function reserve_exception_space() references
    the function __meminit memblock_reserve().
    This is often because reserve_exception_space lacks a __meminit
    annotation or the annotation of memblock_reserve is wrong.

    FATAL: modpost: Section mismatches detected.
    Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
    make[2]: *** [/builds/linux/scripts/Makefile.modpost:59:
    vmlinux.symvers] Error 1

    Here is the list of build failed,
    - gcc-8-allnoconfig
    - gcc-8-tinyconfig
    - gcc-9-allnoconfig
    - gcc-9-tinyconfig
    - gcc-10-allnoconfig
    - gcc-10-tinyconfig
    - clang-10-tinyconfig
    - clang-10-allnoconfig
    - clang-11-allnoconfig
    - clang-11-tinyconfig
    - clang-12-tinyconfig
    - clang-12-allnoconfig

    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>

    link:
    https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc/-/jobs/1117167411#L142

    steps to reproduce:
    ---------------------------
    # TuxMake is a command line tool and Python library that provides
    # portable and repeatable Linux kernel builds across a variety of
    # architectures, toolchains, kernel configurations, and make targets.
    #
    # TuxMake supports the concept of runtimes.
    # See https://docs.tuxmake.org/runtimes/, for that to work it requires
    # that you install podman or docker on your system.
    #
    # To install tuxmake on your system globally:
    # sudo pip3 install -U tuxmake
    #
    # See https://docs.tuxmake.org/ for complete documentation.


    tuxmake --runtime podman --target-arch mips --toolchain gcc-10
    --kconfig tinyconfig


    --
    Linaro LKFT
    https://lkft.linaro.org

    \
     
     \ /
      Last update: 2021-03-22 15:15    [W:4.055 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site