This series adds support for Arm's Memory Tagging Extension (MTE) to KVM, allowing KVM guests to make use of it. This builds on the existing user space support already in v5.10-rc1, see [1] for an overview. [1] https://lwn.net/Articles/834289/ Changes since v4[2]: * Rebased on v5.10-rc4. * Require the VMM to map all guest memory PROT_MTE if MTE is enabled for the guest. * Add a kvm_has_mte() accessor. [2] http://lkml.kernel.org/r/20201026155727.36685-1-steven.price%40arm.com The change to require the VMM to map all guest memory PROT_MTE is significant as it means that the VMM has to deal with the MTE tags even if it doesn't care about them (e.g. for virtual devices or if the VMM doesn't support migration). Also unfortunately because the VMM can change the memory layout at any time the check for PROT_MTE/VM_MTE has to be done very late (at the point of faulting pages into stage 2). The alternative would be to modify the set_pte_at() handler to always check if there is MTE data relating to a swap page even if the PTE doesn't have the MTE bit set. I haven't initially done this because of ordering issues during early boot, but could investigate further if the above VMM requirement is too strict. Steven Price (2): arm64: kvm: Save/restore MTE registers arm64: kvm: Introduce MTE VCPU feature arch/arm64/include/asm/kvm_emulate.h | 3 +++ arch/arm64/include/asm/kvm_host.h | 8 ++++++++ arch/arm64/include/asm/sysreg.h | 3 ++- arch/arm64/kvm/arm.c | 9 +++++++++ arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 14 ++++++++++++++ arch/arm64/kvm/mmu.c | 6 ++++++ arch/arm64/kvm/sys_regs.c | 20 +++++++++++++++----- include/uapi/linux/kvm.h | 1 + 8 files changed, 58 insertions(+), 6 deletions(-) -- 2.20.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm