hugetlb-pte_alloc_huge-to-replace-huge-pte_alloc_map.patch removed from -mm tree
The quilt patch titled
Subject: hugetlb: pte_alloc_huge() to replace huge pte_alloc_map()
has been removed from the -mm tree. Its filename was
hugetlb-pte_alloc_huge-to-replace-huge-pte_alloc_map.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Hugh Dickins <[email protected]>
Subject: hugetlb: pte_alloc_huge() to replace huge pte_alloc_map()
Date: Tue, 18 Apr 2023 22:22:02 -0700 (PDT)
Some architectures can have their hugetlb pages down at the lowest PTE
level: their huge_pte_alloc() using pte_alloc_map(), but without any following pte_unmap(). Since none of these arches uses CONFIG_HIGHPTE, this is not seen as a problem at present; but would become a problem if forthcoming changes were to add an rcu_read_lock() into pte_offset_map(), with the rcu_read_unlock() expected in pte_unmap().
Similarly in their huge_pte_offset(): pte_offset_kernel() is good enough for that, but it's probably less confusing if we define pte_offset_huge() along with pte_alloc_huge(). Only define them without CONFIG_HIGHPTE: so there would be a build error to signal if ever more work is needed.
For ease of development, define these now for 6.4-rc1, ahead of any use:
then architectures can integrate patches using them, independent from mm.
---
include/linux/hugetlb.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
include/linux/hugetlb.h renamed from include/linux/hugetlb.h~hugetlb-pte_alloc_huge-to-replace-huge-pte_alloc_map +17 -0
@@ -191,6 +191,23 @@ extern struct list_head huge_boot_pages;/* 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 +* huge_pte_alloc(): to avoid reliance on pte_offset_map() without pte_unmap(). +*/ +static inline pte_t *pte_offset_huge (pmd_t *pmd,unsigned long address) +{ +return pte_offset_kernel (pmd, address); +} +static inline pte_t *pte_alloc_huge (struct mm_struct *mm,pmd_t *pmd, +unsigned long address) +{ +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);/*
_
Patches currently in -mm which might be from [email protected] are
ia64-fix-an-addr-to-taddr-in-huge_pte_offset.patch