]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: mm: set the contiguous bit for kernel mappings where appropriate
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Fri, 21 Oct 2016 11:22:58 +0000 (12:22 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 7 Nov 2016 18:15:04 +0000 (18:15 +0000)
commit51e21b5516838ebf52532b66d59db4893b771ac4
tree0e1e5f498d9b9498aaec6de3b6d82abac2e03c98
parent9843b8134f9993868ef21383a5c8ac6e0a8d609d
arm64: mm: set the contiguous bit for kernel mappings where appropriate

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: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/mmu.c