• Michael Ellerman's avatar
    powerpc/mm/radix: Fix small page at boundary when splitting · 81d1b54d
    Michael Ellerman authored
    When we have CONFIG_STRICT_KERNEL_RWX enabled, we want to split the
    linear mapping at the text/data boundary so we can map the kernel
    text read only.
    
    Currently we always use a small page at the text/data boundary, even
    when that's not necessary:
    
      Mapped 0x0000000000000000-0x0000000000e00000 with 2.00 MiB pages
      Mapped 0x0000000000e00000-0x0000000001000000 with 64.0 KiB pages
      Mapped 0x0000000001000000-0x0000000040000000 with 2.00 MiB pages
    
    This is because the check that the mapping crosses the __init_begin
    boundary is too strict, it also returns true when we map exactly up to
    the boundary.
    
    So fix it to check that the mapping would actually map past
    __init_begin, and with that we see:
    
      Mapped 0x0000000000000000-0x0000000040000000 with 2.00 MiB pages
      Mapped 0x0000000040000000-0x0000000100000000 with 1.00 GiB pages
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    81d1b54d
pgtable-radix.c 26.3 KB