From 7cee1b4b40c6b0d6498a92decbfb397ef6ffe96a Mon Sep 17 00:00:00 2001 From: Dev Jain Date: Wed, 10 Dec 2025 14:50:44 +0000 Subject: [PATCH] malloc: Enable 2MB THP by default on Aarch64 Add missing files from previous commit. --- sysdeps/generic/malloc-hugepages.h | 4 ++++ .../sysv/linux/aarch64/malloc-hugepages.h | 21 +++++++++++++++++++ sysdeps/unix/sysv/linux/malloc-hugepages.c | 3 +++ 3 files changed, 28 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/aarch64/malloc-hugepages.h diff --git a/sysdeps/generic/malloc-hugepages.h b/sysdeps/generic/malloc-hugepages.h index 076f03d68a..9c034e86c8 100644 --- a/sysdeps/generic/malloc-hugepages.h +++ b/sysdeps/generic/malloc-hugepages.h @@ -41,4 +41,8 @@ enum malloc_thp_mode_t __malloc_thp_mode (void) attribute_hidden; void __malloc_hugepage_config (size_t requested, size_t *pagesize, int *flags) attribute_hidden; +#ifndef DEFAULT_THP_PAGESIZE +# define DEFAULT_THP_PAGESIZE 0 +#endif + #endif /* _MALLOC_HUGEPAGES_H */ diff --git a/sysdeps/unix/sysv/linux/aarch64/malloc-hugepages.h b/sysdeps/unix/sysv/linux/aarch64/malloc-hugepages.h new file mode 100644 index 0000000000..f432ff7f0c --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/malloc-hugepages.h @@ -0,0 +1,21 @@ +/* Huge Page support. Aarch64 Linux implementation. + Copyright (C) 2021-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, see . */ + +# define DEFAULT_THP_PAGESIZE 1UL << 21 + +#include_next diff --git a/sysdeps/unix/sysv/linux/malloc-hugepages.c b/sysdeps/unix/sysv/linux/malloc-hugepages.c index e23cdfb6b7..9776ba4c35 100644 --- a/sysdeps/unix/sysv/linux/malloc-hugepages.c +++ b/sysdeps/unix/sysv/linux/malloc-hugepages.c @@ -25,6 +25,9 @@ unsigned long int __malloc_default_thp_pagesize (void) { + if (DEFAULT_THP_PAGESIZE != 0) + return DEFAULT_THP_PAGESIZE; + int fd = __open64_nocancel ( "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size", O_RDONLY); if (fd == -1) -- 2.47.3