[RFC PATCH 0/5] KVM: arm64: Add support for contiguous PTE/PMD hugepages at stage2

From: Zenghui Yu
Date: Wed May 01 2019 - 05:48:40 EST


Currently, we support the following page sizes at stage2:

PTE PMD PUD
----- ----- -----
4K granule: 4K 2M 1G
16K granule: 16K 32M
64K granule: 64K 512M

And we have Contiguous bit[52] in stage2 VMSAv8-64 block and page
descriptors. As ARM ARM said, when the value of the Contiguous bit
is 1, it indicates that the entry is one of a number of adjacent
translation table entries that point to a contiguous output address
range.

This series add support for contiguous PTE/PMD hugepages at stage2
and then we can create huge mappings with following additional
sizes:

CONT PTE CONT PMD
-------- --------
4K granule: 64K 32M
16K granule: 2M 1G
64K granule: 2M 16G

These patches are based on v5.1.0-rc7 and have been tested on
Taishan 2280 server (D05) with 4K and 64K granule.

Any comments will be appreciated, thanks!

Zenghui Yu (5):
KVM: arm/arm64: Introduce helpers for page table enties with
contiguous bit
KVM: arm/arm64: Re-factor building the stage2 page table entries
KVM: arm/arm64: Support dirty page tracking for contiguous hugepages
KVM: arm/arm64: Add support for creating PTE contiguous hugepages at
stage2
KVM: arm/arm64: Add support for creating PMD contiguous hugepages at
stage2

arch/arm/include/asm/kvm_mmu.h | 22 +++
arch/arm/include/asm/pgtable-hwdef.h | 8 +
arch/arm64/include/asm/kvm_mmu.h | 20 +++
virt/kvm/arm/mmu.c | 299 ++++++++++++++++++++++++++++++-----
4 files changed, 312 insertions(+), 37 deletions(-)

--
1.8.3.1