• Ard Biesheuvel's avatar
    arm64: mm: set the contiguous bit for kernel mappings where appropriate · 0bfc445d
    Ard Biesheuvel authored
    Now that we no longer allow live kernel PMDs to be split, it is safe to
    start using the contiguous bit for kernel mappings. So set the contiguous
    bit in the kernel page mappings for regions whose size and alignment are
    suitable for this.
    
    This enables the following contiguous range sizes for the virtual mapping
    of the kernel image, and for the linear mapping:
    
              granule size |  cont PTE  |  cont PMD  |
              -------------+------------+------------+
                   4 KB    |    64 KB   |   32 MB    |
                  16 KB    |     2 MB   |    1 GB*   |
                  64 KB    |     2 MB   |   16 GB*   |
    
    * Only when built for 3 or more levels of translation. This is due to the
      fact that a 2 level configuration only consists of PGDs and PTEs, and the
      added complexity of dealing with folded PMDs is not justified considering
      that 16 GB contiguous ranges are likely to be ignored by the hardware (and
      16k/2 levels is a niche configuration)
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    0bfc445d
mmu.c 20.9 KB