page_alloc: use vmalloc_huge for large system hash
authorSong Liu <song@kernel.org>
Fri, 15 Apr 2022 16:44:11 +0000 (09:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 24 Apr 2022 17:00:54 +0000 (10:00 -0700)
Use vmalloc_huge() in alloc_large_system_hash() so that large system
hash (>= PMD_SIZE) could benefit from huge pages.

Note that vmalloc_huge only allocates huge pages for systems with
HAVE_ARCH_HUGE_VMALLOC.

Signed-off-by: Song Liu <song@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Rik van Riel <riel@surriel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/page_alloc.c

index 33ca8cab21e6ed6bc531af9dbba2bff5aedf8457..0e42038382c12503dac6a1fb9f370850bd41f86b 100644 (file)
@@ -8919,7 +8919,7 @@ void *__init alloc_large_system_hash(const char *tablename,
                                table = memblock_alloc_raw(size,
                                                           SMP_CACHE_BYTES);
                } else if (get_order(size) >= MAX_ORDER || hashdist) {
-                       table = __vmalloc(size, gfp_flags);
+                       table = vmalloc_huge(size, gfp_flags);
                        virt = true;
                        if (table)
                                huge = is_vm_area_hugepages(table);