On 9/17/26 18:22, Lorenzo Stoakes (ARM) wrote: > vma_is_special_huge() tests whether either the VMA_PFNMAP_BIT or > VMA_MIXEDMAP_BIT is set (i.e. whether the VMA is a kernel-owned mapping), > but with a DAX carve-out. > > DAX however no longer sets VMA_MIXEDMAP_BIT, so this carve-out is no longer > required. > > Therefore test for vma_is_kernel_owned() instead and also drop the > VMA_IO_BIT check, as it is now redundant since it is enforced that only > kernel-owned mappings can set this flag. > > This also eliminates another overloaded use of 'special' within mm. > > No functional change intended. > > Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]> > --- > mm/huge_memory.c | 18 ++++-------------- > 1 file changed, 4 insertions(+), 14 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index c3c98ea672c3..3cb8e2d4d65c 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -110,14 +110,6 @@ static inline bool file_thp_enabled(const struct > vm_area_struct *vma) > return S_ISREG(inode->i_mode); > } > > -/* If returns true, we are unable to access the VMA's folios. */ > -static bool vma_is_special_huge(const struct vm_area_struct *vma) > -{ > - if (vma_is_dax(vma)) > - return false; > - return vma_test_any(vma, VMA_PFNMAP_BIT, VMA_MIXEDMAP_BIT); > -} > - > static bool vma_file_bypass_thp_tuneables(const struct vm_area_struct *vma, > enum tva_type type) > { > @@ -192,7 +184,7 @@ unsigned long __thp_vma_allowable_orders(struct > vm_area_struct *vma, > /* Check the intersection of requested and supported orders. */ > if (vma_is_anonymous(vma)) > supported_orders = THP_ORDERS_ALL_ANON; > - else if (vma_is_dax(vma) || vma_is_special_huge(vma)) > + else if (vma_is_dax(vma) || vma_is_kernel_owned(vma)) > supported_orders = THP_ORDERS_ALL_SPECIAL_DAX; > else > supported_orders = THP_ORDERS_ALL_FILE_DEFAULT; > @@ -3066,7 +3058,7 @@ int zap_huge_pud(struct mmu_gather *tlb, struct > vm_area_struct *vma, > orig_pud = pudp_huge_get_and_clear_full(vma, addr, pud, tlb->fullmm); > arch_check_zapped_pud(vma, orig_pud); > tlb_remove_pud_tlb_entry(tlb, pud, addr); > - if (vma_is_special_huge(vma)) { > + if (vma_is_kernel_owned(vma)) { > spin_unlock(ptl); > /* No zero page support yet */ > } else { > @@ -3222,7 +3214,7 @@ static void __split_huge_pmd_locked(struct > vm_area_struct *vma, pmd_t *pmd, > */ > if (arch_needs_pgtable_deposit()) > zap_deposited_table(mm, pmd); > - if (vma_is_special_huge(vma)) > + if (vma_is_kernel_owned(vma)) > return; > if (unlikely(pmd_is_migration_entry(old_pmd))) { > const softleaf_t old_entry = softleaf_from_pmd(old_pmd); > @@ -4765,9 +4757,7 @@ static inline bool > vma_not_suitable_for_thp_split(struct vm_area_struct *vma) > { > if (vma_is_dax(vma)) > return true; > - if (vma_is_special_huge(vma)) > - return true; > - if (vma_test(vma, VMA_IO_BIT)) > + if (vma_is_kernel_owned(vma)) > return true; > if (vma_is_hugetlb(vma)) > return true; >
So good to see that horrible shit (sorry :) ) go away. It was too hugely special. -- Cheers, David
