[PATCH 03/20] KVM: arm64: Allow block-level stage-2 annotation
Vincent Donnefort <[email protected]> Mon, 3 Aug 2026 11:08:47 +0100
| Newsgroups | dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel |
|---|---|
| Message-ID | <[email protected]> |
On host to guest donation, pKVM annotates the host stage-2 invalid entries with the GFN. Now that the host stage-2 preserves annotations on block split, we can allow these annotations at block-level. This enables safe support for guest stage-2 huge mappings. Allowing block-level annotations also reduces stage-2 fragmentation when unmapping a huge region, and reduces host stage-2 memory usage by avoiding the allocation of intermediate page tables. Signed-off-by: Vincent Donnefort <[email protected]> diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c index 0ca157ecee64..c4ebae0544d4 100644 --- a/arch/arm64/kvm/hyp/pgtable.c +++ b/arch/arm64/kvm/hyp/pgtable.c @@ -947,9 +947,6 @@ static bool stage2_leaf_mapping_allowed(const struct kvm_pgtable_visit_ctx *ctx, if (data->force_pte && ctx->level < KVM_PGTABLE_LAST_LEVEL) return false; - if (data->annotation) - return true; - return kvm_block_mapping_supported(ctx, phys); } @@ -1178,7 +1175,6 @@ int kvm_pgtable_stage2_annotate(struct kvm_pgtable *pgt, u64 addr, u64 size, struct stage2_map_data map_data = { .mmu = pgt->mmu, .memcache = mc, - .force_pte = true, .annotation = true, .pte_annot = pte_annot | FIELD_PREP(KVM_INVALID_PTE_TYPE_MASK, type), -- 2.55.0.508.g3f0d502094-goog