| From: Dev Jain <dev.jain@arm.com> |
| Subject: mm: remove PMD alignment constraint in execmem_vmalloc() |
| Date: Thu, 18 Sep 2025 15:04:53 +0530 |
| |
| When using vmalloc with VM_ALLOW_HUGE_VMAP flag, it will set the alignment |
| to PMD_SIZE internally, if it deems huge mappings to be eligible. |
| Therefore, setting the alignment in execmem_vmalloc is redundant. Apart |
| from this, it also reduces the probability of allocation in case vmalloc |
| fails to allocate hugepages - in the fallback case, vmalloc tries to use |
| the original alignment and allocate basepages, which unfortunately will |
| again be PMD_SIZE passed over from execmem_vmalloc, thus constraining the |
| search for a free space in vmalloc region. |
| |
| Therefore, remove this constraint. |
| |
| Link: https://lkml.kernel.org/r/20250918093453.75676-1-dev.jain@arm.com |
| Signed-off-by: Dev Jain <dev.jain@arm.com> |
| Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> |
| Cc: Ryan Roberts <ryan.roberts@arm.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/execmem.c | 3 --- |
| 1 file changed, 3 deletions(-) |
| |
| --- a/mm/execmem.c~mm-remove-pmd-alignment-constraint-in-execmem_vmalloc |
| +++ a/mm/execmem.c |
| @@ -38,9 +38,6 @@ static void *execmem_vmalloc(struct exec |
| if (kasan) |
| vm_flags |= VM_DEFER_KMEMLEAK; |
| |
| - if (vm_flags & VM_ALLOW_HUGE_VMAP) |
| - align = PMD_SIZE; |
| - |
| p = __vmalloc_node_range(size, align, start, end, gfp_flags, |
| pgprot, vm_flags, NUMA_NO_NODE, |
| __builtin_return_address(0)); |
| _ |