Skip to content

Commit

Permalink
Merge patch "riscv: Fix compilation error with FAST_GUP and rv32"
Browse files Browse the repository at this point in the history
I'm picking this up on top of the broken patch for the merge window, as
the offending patch breaks the rv32 build and was itself a fix so isn't
on for-next.

* b4-shazam-merge:
  riscv: Fix compilation error with FAST_GUP and rv32
  riscv: Fix pte_leaf_size() for NAPOT
  Revert "riscv: mm: support Svnapot in huge vmap"

Link: https://lore.kernel.org/r/20240304080247.387710-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
  • Loading branch information
palmer-dabbelt committed Mar 15, 2024
2 parents 2b2ca35 + 2bb7e0c commit 0f0cd0e
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 60 deletions.
6 changes: 6 additions & 0 deletions arch/riscv/include/asm/pgtable.h
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,12 @@ static inline pte_t pte_mkhuge(pte_t pte)
return pte;
}

#ifdef CONFIG_RISCV_ISA_SVNAPOT
#define pte_leaf_size(pte) (pte_napot(pte) ? \
napot_cont_size(napot_cont_order(pte)) :\
PAGE_SIZE)
#endif

#ifdef CONFIG_NUMA_BALANCING
/*
* See the comment in include/asm-generic/pgtable.h
Expand Down
61 changes: 1 addition & 60 deletions arch/riscv/include/asm/vmalloc.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,65 +19,6 @@ static inline bool arch_vmap_pmd_supported(pgprot_t prot)
return true;
}

#ifdef CONFIG_RISCV_ISA_SVNAPOT
#include <linux/pgtable.h>
#endif

#define arch_vmap_pte_range_map_size arch_vmap_pte_range_map_size
static inline unsigned long arch_vmap_pte_range_map_size(unsigned long addr, unsigned long end,
u64 pfn, unsigned int max_page_shift)
{
unsigned long map_size = PAGE_SIZE;
unsigned long size, order;

if (!has_svnapot())
return map_size;

for_each_napot_order_rev(order) {
if (napot_cont_shift(order) > max_page_shift)
continue;

size = napot_cont_size(order);
if (end - addr < size)
continue;

if (!IS_ALIGNED(addr, size))
continue;

if (!IS_ALIGNED(PFN_PHYS(pfn), size))
continue;

map_size = size;
break;
}

return map_size;
}

#define arch_vmap_pte_supported_shift arch_vmap_pte_supported_shift
static inline int arch_vmap_pte_supported_shift(unsigned long size)
{
int shift = PAGE_SHIFT;
unsigned long order;

if (!has_svnapot())
return shift;

WARN_ON_ONCE(size >= PMD_SIZE);

for_each_napot_order_rev(order) {
if (napot_cont_size(order) > size)
continue;

if (!IS_ALIGNED(size, napot_cont_size(order)))
continue;

shift = napot_cont_shift(order);
break;
}

return shift;
}

#endif /* CONFIG_RISCV_ISA_SVNAPOT */
#endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */
#endif /* _ASM_RISCV_VMALLOC_H */

0 comments on commit 0f0cd0e

Please sign in to comment.