arm/arm64: KVM: relax the requirements of VMA alignment for THP
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 13 Dec 2013 16:56:06 +0000 (16:56 +0000)
committerChristoffer Dall <christoffer.dall@linaro.org>
Wed, 8 Jan 2014 21:49:03 +0000 (13:49 -0800)
commit136d737fd20102f1be9b02356590fd55e3a40d0e
treec9b491b3c0f565775eda9617f1d8d56f43392434
parent478a8237f656d86d25b3e4e4bf3c48f590156294
arm/arm64: KVM: relax the requirements of VMA alignment for THP

The THP code in KVM/ARM is a bit restrictive in not allowing a THP
to be used if the VMA is not 2MB aligned. Actually, it is not so much
the VMA that matters, but the associated memslot:

A process can perfectly mmap a region with no particular alignment
restriction, and then pass a 2MB aligned address to KVM. In this
case, KVM will only use this 2MB aligned region, and will ignore
the range between vma->vm_start and memslot->userspace_addr.

It can also choose to place this memslot at whatever alignment it
wants in the IPA space. In the end, what matters is the relative
alignment of the user space and IPA mappings with respect to a
2M page. They absolutely must be the same if you want to use THP.

Cc: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
arch/arm/kvm/mmu.c