lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 151/242] MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops
    Date
    From: zhanglianjie <zhanglianjie@uniontech.com>

    [ Upstream commit 6817c944430d00f71ccaa9c99ff5b0096aeb7873 ]

    The cause of the problem is as follows:
    1. when cat /sys/devices/system/memory/memory0/valid_zones,
    test_pages_in_a_zone() will be called.
    2. test_pages_in_a_zone() finds the zone according to stat_pfn = 0.
    The smallest pfn of the numa node in the mips architecture is 128,
    and the page corresponding to the previous 0~127 pfn is not
    initialized (page->flags is 0xFFFFFFFF)
    3. The nid and zonenum obtained using page_zone(pfn_to_page(0)) are out
    of bounds in the corresponding array,
    &NODE_DATA(page_to_nid(page))->node_zones[page_zonenum(page)],
    access to the out-of-bounds zone member variables appear abnormal,
    resulting in Oops.
    Therefore, it is necessary to keep the page between 0 and the minimum
    pfn to prevent Oops from appearing.

    Signed-off-by: zhanglianjie <zhanglianjie@uniontech.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/mips/loongson64/numa.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/arch/mips/loongson64/numa.c b/arch/mips/loongson64/numa.c
    index a8f57bf01285..a791863ed352 100644
    --- a/arch/mips/loongson64/numa.c
    +++ b/arch/mips/loongson64/numa.c
    @@ -118,6 +118,9 @@ static void __init node_mem_init(unsigned int node)
    if (node_end_pfn(0) >= (0xffffffff >> PAGE_SHIFT))
    memblock_reserve((node_addrspace_offset | 0xfe000000),
    32 << 20);
    +
    + /* Reserve pfn range 0~node[0]->node_start_pfn */
    + memblock_reserve(0, PAGE_SIZE * start_pfn);
    }
    }

    --
    2.30.2


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