This series replaces KVM's broadcast stage-2 TLB invalidation with a directed one: instead of a TLBI over the whole inner-shareable domain , KVM kicks only the vCPUs of the VM via KVM_REQ_TLB_FLUSH and lets each of them locally invalidate its own stage-2 context before re-entering the guest. Jinqian Yang (5): KVM: arm64: Add non-shareable VMID TLB invalidation primitive KVM: arm64: Add infrastructure for directed stage-2 TLB invalidation KVM: arm64: Route remote TLB flushes through the request machinery KVM: arm64: Use directed flushes for stage-2 table break and unmap KVM: arm64: Exclude VMs with pass-through devices from directed flushes arch/arm64/include/asm/kvm_host.h | 23 +++++ arch/arm64/include/asm/kvm_tlbi.h | 126 +++++++++++++++++++++++++++ arch/arm64/kvm/Kconfig | 20 +++++ arch/arm64/kvm/arm.c | 67 +++++++++++++- arch/arm64/kvm/hisilicon/hisi_virt.c | 6 +- arch/arm64/kvm/hyp/pgtable.c | 52 +++++++++-- arch/arm64/kvm/hyp/vhe/tlb.c | 53 +++++++++++ arch/arm64/kvm/mmu.c | 53 +++++++++++ 8 files changed, 392 insertions(+), 8 deletions(-) create mode 100644 arch/arm64/include/asm/kvm_tlbi.h -- 2.33.0