KVM: arm64: Try PMD block mappings if PUD mappings are not supported
authorAlexandru Elisei <alexandru.elisei@arm.com>
Thu, 10 Sep 2020 13:33:51 +0000 (14:33 +0100)
committerMarc Zyngier <maz@kernel.org>
Fri, 18 Sep 2020 15:10:15 +0000 (16:10 +0100)
commit523b3999e5f620cb5ccce6a7ca2780a4cab579a2
tree25e80cd9568c37a242acd956261fa8a08935fb13
parentc9b69a0cf0b4336fe7d2e35c46273debc68910fd
KVM: arm64: Try PMD block mappings if PUD mappings are not supported

When userspace uses hugetlbfs for the VM memory, user_mem_abort() tries to
use the same block size to map the faulting IPA in stage 2. If stage 2
cannot the same block mapping because the block size doesn't fit in the
memslot or the memslot is not properly aligned, user_mem_abort() will fall
back to a page mapping, regardless of the block size. We can do better for
PUD backed hugetlbfs by checking if a PMD block mapping is supported before
deciding to use a page.

vma_pagesize is an unsigned long, use 1UL instead of 1ULL when assigning
its value.

Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200910133351.118191-1-alexandru.elisei@arm.com
arch/arm64/kvm/mmu.c