On Fri, Nov 27, 2020 at 03:21:11PM +0000, Steven Price wrote:
It's been a week, and I think the comments on v5 made it clear that
enforcing PROT_MTE requirements on the VMM was probably the wrong
approach. So since I've got swap working correctly without that I
thought I'd post a v6 which hopefully addresses all the comments so far.
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-rc4, see [1] for an overview.
arch/arm64/include/asm/kvm_emulate.h | 3 +++
arch/arm64/include/asm/kvm_host.h | 8 ++++++++
arch/arm64/include/asm/pgtable.h | 2 +-
arch/arm64/include/asm/sysreg.h | 3 ++-
arch/arm64/kernel/mte.c | 18 +++++++++++++-----
arch/arm64/kvm/arm.c | 9 +++++++++
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 14 ++++++++++++++
arch/arm64/kvm/mmu.c | 16 ++++++++++++++++
arch/arm64/kvm/sys_regs.c | 20 +++++++++++++++-----
include/uapi/linux/kvm.h | 1 +
10 files changed, 82 insertions(+), 12 deletions(-)
I note that doesn't fixup arch/arm64/kvm/inject_fault.c, where in
enter_exception64() we have:
| // TODO: TCO (if/when ARMv8.5-MemTag is exposed to guests)
... and IIUC when MTE is present, TCO should be set when delivering an
exception, so I believe that needs to be updated to set TCO.
Given that MTE-capable HW does that unconditionally, this is going to be
a mess for big.LITTLE. :/