Re: [PATCH] mm/huge_memory: allow huge pfnmaps regardless of THP mode
From: Lorenzo Stoakes (ARM)
Date: Fri Aug 21 2026 - 04:03:30 EST
Nope.
On Fri, Aug 21, 2026 at 12:05:20AM -0700, Saravanan D wrote:
> The THP mode check in __thp_vma_allowable_orders() runs before the
> clause that trusts huge_fault() handlers, so huge pfnmaps only
> materialize when THP is set to "always". The THP modes exist to
> limit the memory and khugepaged costs of transparent hugepages.
> Special mappings are backed by pfns instead of THP folios and
> khugepaged never scans them, so those costs do not apply and we
> can exempt special mappings from the mode check. This also makes
> THPeligible in smaps report 1 for such mappings.
>
> This matters for VFIO device passthrough on distributions where
> the default THP mode is "madvise". Mapping a 128 GiB GPU BAR
> through VFIO_IOMMU_MAP_DMA costs 33.5 million order 0 faults and
> 20.7 seconds when the mode denies huge pfnmaps. With huge pfnmaps
> allowed, the same mapping takes 128 PUD faults and 0.4 seconds.
>
> Signed-off-by: Saravanan D <saravanand@xxxxxxxxx>
This seems like AI slop. We don't want it, thanks.
Read https://docs.kernel.org/process/coding-assistants.html and
https://docs.kernel.org/process/generated-content.html and follow kernel
guidelines please.
In any case if you'd taken 5 minutes to search the mailing list you'd see
this was:
a. Already submitted (so your patch reads like plagiarism).
b. Already rejected in favour of me doing an actually sensible solution.
https://lore.kernel.org/linux-mm/anL-NZkNMSSxN0YN@lucifer/
> ---
> mm/huge_memory.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index afbb5974bd22..bc61b8020af6 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -193,9 +193,10 @@ unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma,
> if (!vma_is_anonymous(vma)) {
> /*
> * Enforce THP collapse requirements as necessary. Anonymous vmas
> - * were already handled in thp_vma_allowable_orders().
> + * were already handled in thp_vma_allowable_orders(). Special
> + * mappings have no THP costs and are exempt.
> */
> - if (!forced_collapse &&
> + if (!forced_collapse && !vma_is_special_huge(vma) &&
> (!hugepage_global_enabled() || (!(vm_flags & VM_HUGEPAGE) &&
> !hugepage_global_always())))
> return 0;
>
> base-commit: a032d41a86cb82a747bc14d9c82b3e153a9a9ab7
> --
> 2.53.0
>
--
Cheers, Lorenzo