• Magnus Damm's avatar
    ARM: shmobile: No R-Car Gen2 CMA reservation when HIGHMEM=n · 744cadba
    Magnus Damm authored
    Allow R-Car Gen2 platforms to boot with CMA enabled
    and HIGHMEM disabled. This patch adds code to check
    if the R-Car Gen2 specific memory reservation window
    is included in the kernel memory range or not. When
    HIGHMEM is disabled the R-Car Gen2 reservation area is
    outside the kernel memory range and in such case the
    memory reservation is simply skipped over.
    
    Without this patch the kernel boot hangs when CMA is
    enabled and HIGHMEM is disabled on the r8a7791 Koelsch
    hardware platform:
    
        WARNING: CPU: 1 PID: 1 at mm/cma.c:113 cma_init_reserved_areas+0x88/0x1d4()
        ...
        WARNING: CPU: 1 PID: 1 at mm/cma.c:121 cma_init_reserved_areas+0xf8/0x1d4()
        ...
        Unable to handle kernel NULL pointer dereference at virtual address 00000160
        pgd = c0003000
        [00000160] *pgd=80000040004003, *pmd=00000000
        Internal error: Oops: 206 [#1] SMP ARM
        Modules linked in:
        CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W
    3.19.0-rc4-koelsch-01450-g7f9b6075ce12c3ea-dirty #735
        Hardware name: Generic R8A7791 (Flattened Device Tree)
        task: edc553c0 ti: edc56000 task.ti: edc56000
        PC is at set_pfnblock_flags_mask+0x54/0xa0
        LR is at 0x440
    
    In the current shmobile_defconfig HIGHMEM is enabled
    while CMA is disabled, so to trigger this the kernel
    configuration for both CMA and HIGHMEM needs to be
    adjusted.
    Signed-off-by: default avatarMagnus Damm <damm+renesas@opensource.se>
    Tested-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
    744cadba
setup-rcar-gen2.c 5.06 KB