
Hi All, Matt encountered the following issue when using 1GB huge pages with libvirt
This problem turned out to be entirely my fault because I didn't round the VM's memory size to a 1G multiple, and the kernel tried to split the VMA at the end of the region, triggering this code in the kernel do_mbind() path,
static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, int new_below) { struct vm_area_struct *new; int err;
if (is_vm_hugetlb_page(vma) && (addr & ~(huge_page_mask(hstate_vma(vma))))) return -EINVAL;
I have no idea how a less fortunate developer without access to MM experts would have figured this out. It's a shame virsh didn't error out when I initially setup 1G hugepages with an incompatible VM memory size.
What do folks think about improving libvirt to warn or error when using a VM memory size that is not compatible with the host hugepage configuration? Regards, Jim