[PATCH] arm: Do not add padding alignment for hugetlbfs backed memory
Marc Zyngier
maz at kernel.org
Wed Apr 5 04:22:25 PDT 2023
On Wed, 05 Apr 2023 12:09:05 +0100,
Suzuki K Poulose <suzuki.poulose at arm.com> wrote:
>
> 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);
Seems sensible. For hugetlbfs, we're guaranteed that the memory is
aligned, so no need for any additional alignment (which is what this
+2MB was about).
Acked-by: Marc Zyngier <maz at kernel.org>
M.
--
Without deviation from the norm, progress is not possible.
More information about the linux-arm-kernel
mailing list