[PATCH] arm: Do not add padding alignment for hugetlbfs backed memory

Suzuki K Poulose suzuki.poulose at arm.com
Wed Apr 5 04:09:05 PDT 2023


The arm code tries to align the memory allocation size to 2M to potentially
make use of the transparent hugepages. But this would be problematic if we
try to allocate from the hugetlbfs, where the allocation size could be more than
2M. Given we support upto 1G, let use leave it to the user to align the
requested memory when hugetlbfs is used.

Without the patch:
 $ echo 1 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
 $ mount -t hugetlbfs -o pagesize=1G none /root/hugemem/
 $  lkvm run -m 1024 --hugetlbfs /root/hugemem/  ...
   # lkvm run -k ...  -m 1024 -c 6
   Fatal: Can't ftruncate for mem mapping size 1075838976

Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
---
 arm/kvm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arm/kvm.c b/arm/kvm.c
index d51cc15d..9f958232 100644
--- a/arm/kvm.c
+++ b/arm/kvm.c
@@ -37,7 +37,9 @@ void kvm__init_ram(struct kvm *kvm)
 	 * 2M trumps 64K, so let's go with that.
 	 */
 	kvm->ram_size = kvm->cfg.ram_size;
-	kvm->arch.ram_alloc_size = kvm->ram_size + SZ_2M;
+	kvm->arch.ram_alloc_size = kvm->ram_size;
+	if (!kvm->cfg.hugetlbfs_path)
+		kvm->arch.ram_alloc_size += SZ_2M;
 	kvm->arch.ram_alloc_start = mmap_anon_or_hugetlbfs(kvm,
 						kvm->cfg.hugetlbfs_path,
 						kvm->arch.ram_alloc_size);
-- 
2.34.1




More information about the linux-arm-kernel mailing list