lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 138/241] powerpc/nohash: Fix use of mmu_has_feature() in setup_initial_memory_limit()
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Michael Ellerman <mpe@ellerman.id.au>


    [ Upstream commit 4868e3508d1934d28961f940ed6b9f1e347ab52c ]

    setup_initial_memory_limit() is called from early_init_devtree(), which
    runs prior to feature patching. If the kernel is built with CONFIG_JUMP_LABEL=y
    and CONFIG_JUMP_LABEL_FEATURE_CHECKS=y then we will potentially get the
    wrong value.

    If we also have CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG=y we get a warning
    and backtrace:

    Warning! mmu_has_feature() used prior to jump label init!
    CPU: 0 PID: 0 Comm: swapper Not tainted 4.11.0-rc4-gccN-next-20170331-g6af2434 #1
    Call Trace:
    [c000000000fc3d50] [c000000000a26c30] .dump_stack+0xa8/0xe8 (unreliable)
    [c000000000fc3de0] [c00000000002e6b8] .setup_initial_memory_limit+0xa4/0x104
    [c000000000fc3e60] [c000000000d5c23c] .early_init_devtree+0xd0/0x2f8
    [c000000000fc3f00] [c000000000d5d3b0] .early_setup+0x90/0x11c
    [c000000000fc3f90] [c000000000000520] start_here_multiplatform+0x68/0x80

    Fix it by using early_mmu_has_feature().

    Fixes: c12e6f24d413 ("powerpc: Add option to use jump label for mmu_has_feature()")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/powerpc/mm/tlb_nohash.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/powerpc/mm/tlb_nohash.c
    +++ b/arch/powerpc/mm/tlb_nohash.c
    @@ -751,7 +751,7 @@ void setup_initial_memory_limit(phys_add
    * avoid going over total available memory just in case...
    */
    #ifdef CONFIG_PPC_FSL_BOOK3E
    - if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
    + if (early_mmu_has_feature(MMU_FTR_TYPE_FSL_E)) {
    unsigned long linear_sz;
    unsigned int num_cams;


    \
     
     \ /
      Last update: 2018-03-19 19:26    [W:4.140 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site