On Thu, Nov 12, 2026 at 12:25:26PM +0100, Arnd Bergmann wrote: > From: Arnd Bergmann <[email protected]> > > With both x86 and arm having dropped CONFIG_HIGHPTE support, no > architecture is left using it, so remove the remnants in common code. > > It is likely that further cleanups are possible in the page table > code but those are not obvious from the config options. > > Signed-off-by: Arnd Bergmann <[email protected]>
LGTM assuming Mike's changes :) Acked-by: Lorenzo Stoakes (ARM) <[email protected]> > --- > include/linux/hugetlb.h | 5 +---- > include/linux/mm.h | 1 - > include/linux/pgtable.h | 9 --------- > 3 files changed, 1 insertion(+), 14 deletions(-) > > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 58f755e70e96..7c6d191fdf50 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -178,7 +178,6 @@ void hugetlb_bootmem_set_nodes(void); > > /* arch callbacks */ > > -#ifndef CONFIG_HIGHPTE > /* > * pte_offset_huge() and pte_alloc_huge() are helpers for those architectures > * which may go down to the lowest PTE level in their huge_pte_offset() and > @@ -193,7 +192,6 @@ static inline pte_t *pte_alloc_huge(struct mm_struct *mm, > pmd_t *pmd, > { > return pte_alloc(mm, pmd) ? NULL : pte_offset_huge(pmd, address); > } > -#endif > > pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, > unsigned long addr, unsigned long sz); > @@ -1047,9 +1045,8 @@ static inline spinlock_t *huge_pte_lockptr(struct > hstate *h, > */ > if (size >= PUD_SIZE) > return pud_lockptr(mm, (pud_t *) pte); > - else if (size >= PMD_SIZE || IS_ENABLED(CONFIG_HIGHPTE)) > + else if (size >= PMD_SIZE) > return pmd_lockptr(mm, (pmd_t *) pte); > - /* pte_alloc_huge() only applies with !CONFIG_HIGHPTE */ > return ptep_lockptr(mm, pte); > } > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 6af3b7008f1a..019de55bd796 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -4025,7 +4025,6 @@ static inline spinlock_t *pte_lockptr(struct mm_struct > *mm, pmd_t *pmd) > > static inline spinlock_t *ptep_lockptr(struct mm_struct *mm, pte_t *pte) > { > - BUILD_BUG_ON(IS_ENABLED(CONFIG_HIGHPTE)); > BUILD_BUG_ON(MAX_PTRS_PER_PTE * sizeof(pte_t) > PAGE_SIZE); > return ptlock_ptr(virt_to_ptdesc(pte)); > } > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index 780fe849ff8b..1352b4cee7ae 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -100,14 +100,6 @@ static inline pte_t *pte_offset_kernel(pmd_t *pmd, > unsigned long address) > #define pte_offset_kernel pte_offset_kernel > #endif > > -#ifdef CONFIG_HIGHPTE > -#define __pte_map(pmd, address) \ > - ((pte_t *)kmap_local_page(pmd_page(*(pmd))) + pte_index((address))) > -#define pte_unmap(pte) do { \ > - kunmap_local((pte)); \ > - rcu_read_unlock(); \ > -} while (0) > -#else > static inline pte_t *__pte_map(pmd_t *pmd, unsigned long address) > { > return pte_offset_kernel(pmd, address); > @@ -116,7 +108,6 @@ static inline void pte_unmap(pte_t *pte) > { > rcu_read_unlock(); > } > -#endif > > void pte_free_defer(struct mm_struct *mm, pgtable_t pgtable); > > -- > 2.53.0 > -- Cheers, Lorenzo
