]> git.ipfire.org Git - thirdparty/linux.git/commit
riscv: Improve flush_tlb_range() for hugetlb pages
authorAlexandre Ghiti <alexghiti@rivosinc.com>
Mon, 30 Oct 2023 13:30:26 +0000 (14:30 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 7 Nov 2023 06:49:20 +0000 (22:49 -0800)
commit9e113064b4c291ad06a7a3864691288bd2cf014f
tree2b275f98cc9b72a58ae65d96b37812d71fe7e65c
parent114d5c85a39a0e35024ff5156a160eef1907f3e6
riscv: Improve flush_tlb_range() for hugetlb pages

flush_tlb_range() uses a fixed stride of PAGE_SIZE and in its current form,
when a hugetlb mapping needs to be flushed, flush_tlb_range() flushes the
whole tlb: so set a stride of the size of the hugetlb mapping in order to
only flush the hugetlb mapping. However, if the hugepage is a NAPOT region,
all PTEs that constitute this mapping must be invalidated, so the stride
size must actually be the size of the PTE.

Note that THPs are directly handled by flush_pmd_tlb_range().

Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Reviewed-by: Samuel Holland <samuel.holland@sifive.com>
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> # On RZ/Five SMARC
Link: https://lore.kernel.org/r/20231030133027.19542-3-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/mm/tlbflush.c