[PATCH 00/20] Huge mapping support for protected VMs

Wei-Lin Chang weilin.chang at arm.com
Mon Sep 7 11:41:30 PDT 2026


Hi Vincent,

On Mon, Aug 03, 2026 at 11:08:44AM +0100, Vincent Donnefort wrote:
> Currently, pKVM handles stage-2 mappings and ownership tracking strictly
> at the PAGE_SIZE level. This series extends pKVM to support PMD_SIZE
> block mappings, thereby enabling Transparent Huge Pages (THP) for
> protected guests. hugetlbfs is currently unsupported as it does not
> appear as swapbacked.
> 
> Summary of changes:
> 
> 1. Enable host stage-2 block-level annotations:
> 
> The host stage-2 being annotated with the GFN of the guest on the
> host->guest donation transitions, we allow block-level annotations to
> ensure the host stage-2 mapping size matches the guest stage-2.
> 
> 2. Expand ownership transition HVCs:
> 
> Enable the ownership test to work with PMD_SIZE so we can test
> transitions supporting more than PAGE_SIZE.
> 
> 3. Implements the `PKVM_HYP_REQ_SPLIT` hypervisor request:
> 
> Allows the hypervisor to ask the host to split a mapping. This ensures
> the guest s2, pkvm_mapping tree and host s2 are always using the same
> mapping size.
> 
> 4. Wires up THP support for pKVM guests.
> 
> Keir Fraser (1):
>   KVM: arm64: Prefault host stage-2 entries on block split
> 
> Vincent Donnefort (19):
>   KVM: arm64: Propagate host stage-2 annotated entries on block split
>   KVM: arm64: Allow block-level stage-2 annotation
>   KVM: arm64: Use block-level annotations when setting up the host
>     stage-2
>   KVM: arm64: Make pKVM ownership selftest an HVC
>   KVM: arm64: Add a range to __pkvm_host_share/unshare_hyp()
>   KVM: arm64: Add a range to __pkvm_host_donate_guest()
>   KVM: arm64: Add a range to __pkvm_host_reclaim_page_guest()
>   KVM: arm64: Add a range to __pkvm_guest_share_host()
>   KVM: arm64: Add a range to __pkvm_guest_unshare_host()
>   KVM: arm64: Add a range to pKVM ownership selftest
>   KVM: arm64: Handle huge mappings in
>     __pkvm_host_force_reclaim_page_guest()
>   KVM: arm64: Handle huge mappings in __pkvm_vcpu_in_poison_fault()
>   KVM: arm64: pkvm: Warn on guest stage-2 block collapse
>   KVM: arm64: Add pkvm_hyp_req infrastructure
>   KVM: arm64: Add __pkvm_host_split_guest HVC
>   KVM: arm64: Extend pKVM page ownership selftests to cover guest block
>     split
>   KVM: arm64: Add PKVM_HYP_REQ_SPLIT
>   KVM: arm64: Raise PKVM_HYP_REQ_SPLIT on guest to host sharing
>   KVM: arm64: Stage-2 huge mappings for protected VMs
> 
>  arch/arm64/include/asm/kvm_asm.h              |  12 +-
>  arch/arm64/include/asm/kvm_host.h             |  19 +
>  arch/arm64/include/asm/kvm_pgtable.h          |   3 +-
>  arch/arm64/include/asm/kvm_pkvm.h             |  21 +-
>  arch/arm64/kvm/arm.c                          |   2 +
>  arch/arm64/kvm/handle_exit.c                  |   3 +
>  arch/arm64/kvm/hyp/include/nvhe/mem_protect.h |  25 +-
>  arch/arm64/kvm/hyp/include/nvhe/memory.h      |   5 +
>  arch/arm64/kvm/hyp/include/nvhe/pkvm.h        |   6 +-
>  arch/arm64/kvm/hyp/nvhe/ffa.c                 |  12 +-
>  arch/arm64/kvm/hyp/nvhe/hyp-main.c            |  47 +-
>  arch/arm64/kvm/hyp/nvhe/mem_protect.c         | 545 ++++++++++++------
>  arch/arm64/kvm/hyp/nvhe/pkvm.c                |  59 +-
>  arch/arm64/kvm/hyp/nvhe/setup.c               | 152 +++--
>  arch/arm64/kvm/hyp/pgtable.c                  | 113 +++-
>  arch/arm64/kvm/mmu.c                          |  72 ++-
>  arch/arm64/kvm/pkvm.c                         | 247 +++++++-
>  arch/arm64/kvm/trace_pkvm.h                   |  44 ++
>  18 files changed, 1036 insertions(+), 351 deletions(-)
>  create mode 100644 arch/arm64/kvm/trace_pkvm.h

The patches in this series are missing per patch stats like this here.
I would recommend including that to help reviewing.

Thanks,
Wei-Lin Chang

> 
> 
> base-commit: f5098b6bae761e346ebcd9da7f95622c04733cff
> -- 
> 2.55.0.508.g3f0d502094-goog
> 



More information about the linux-arm-kernel mailing list