riscv: Fix pte_leaf_size() for NAPOT
authorAlexandre Ghiti <alexghiti@rivosinc.com>
Tue, 27 Feb 2024 20:50:16 +0000 (21:50 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 29 Feb 2024 18:21:23 +0000 (10:21 -0800)
pte_leaf_size() must be reimplemented to add support for NAPOT mappings.

Fixes: 82a1a1f3bfb6 ("riscv: mm: support Svnapot in hugetlb page")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240227205016.121901-3-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/pgtable.h

index 0c94260b5d0c126f6302f39a59507f19eed48dac..89f5f1bd6e46309861640b52c1be90798e1fcba8 100644 (file)
@@ -439,6 +439,10 @@ static inline pte_t pte_mkhuge(pte_t pte)
        return pte;
 }
 
+#define pte_leaf_size(pte)     (pte_napot(pte) ?                               \
+                                       napot_cont_size(napot_cont_order(pte)) :\
+                                       PAGE_SIZE)
+
 #ifdef CONFIG_NUMA_BALANCING
 /*
  * See the comment in include/asm-generic/pgtable.h