[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20201119153901.53705-1-steven.price@arm.com>
Date: Thu, 19 Nov 2020 15:38:59 +0000
From: Steven Price <steven.price@....com>
To: Catalin Marinas <catalin.marinas@....com>,
Marc Zyngier <maz@...nel.org>, Will Deacon <will@...nel.org>
Cc: Steven Price <steven.price@....com>,
James Morse <james.morse@....com>,
Julien Thierry <julien.thierry.kdev@...il.com>,
Suzuki K Poulose <suzuki.poulose@....com>,
kvmarm@...ts.cs.columbia.edu, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, Dave Martin <Dave.Martin@....com>,
Mark Rutland <mark.rutland@....com>,
Thomas Gleixner <tglx@...utronix.de>, qemu-devel@...gnu.org,
Juan Quintela <quintela@...hat.com>,
"Dr. David Alan Gilbert" <dgilbert@...hat.com>,
Richard Henderson <richard.henderson@...aro.org>,
Peter Maydell <peter.maydell@...aro.org>,
Haibo Xu <Haibo.Xu@....com>, Andrew Jones <drjones@...hat.com>
Subject: [PATCH v5 0/2] MTE support for KVM guest
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
Powered by blists - more mailing lists