From: Joey Gouly <joey.gouly@arm.com>
To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev
Cc: anshuman.khandual@arm.com, james.morse@arm.com,
joey.gouly@arm.com, Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
Jing Zhang <jingzhangos@google.com>,
Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>
Subject: [PATCH v4 0/7] KVM: arm64: Hide unsupported MPAM from the guest
Date: Fri, 4 Oct 2024 12:07:07 +0100 [thread overview]
Message-ID: <20241004110714.2051604-1-joey.gouly@arm.com> (raw)
Hi,
I have taken over these patches from James, as he doesn't have the time to push
them forward currently.
James wrote:
This series fixes up a long standing bug where MPAM was accidentally exposed
to a guest, but the feature was not otherwise trapped or context switched.
This could result in KVM warning about unexpected traps, and injecting an
undef into the guest contradicting the ID registers.
This would prevent an MPAM aware kernel from booting - fortunately, there
aren't any of those.
Ideally, we'd take the MPAM feature away from the ID registers, but that
would leave existing guests unable to migrate to a newer kernel. Instead,
just ignore that field when it matches the hardware. KVM wasn't going to
expose MPAM anyway. The guest will not see MPAM in the id registers.
This series includes the head.S and KVM changes to enable/disable traps. If
MPAM is neither enabled nor emulated by EL3 firmware, these system register
accesses will trap to EL3.
If your kernel doesn't boot, and the problem bisects here - please update
your firmware. MPAM has been supported by trusted firmware since v1.6 in
2018. (also noted on patch 3).
changes since v3 [1]:
- Converted to the new generated sysreg file
- Added MPAM_frac support
- Changed the Kconfig to hopefully make it obvious that it doesn't
actually enable MPAM for users
- rebased onto v6.12-rc1
Thanks,
Joey
[1] https://lore.kernel.org/kvmarm/20240321165728.31907-1-james.morse@arm.com/
James Morse (7):
arm64: head.S: Initialise MPAM EL2 registers and disable traps
arm64/sysreg: Convert existing MPAM sysregs and add the remaining
entries
arm64: cpufeature: discover CPU support for MPAM
KVM: arm64: Fix missing traps of guest accesses to the MPAM registers
KVM: arm64: Add a macro for creating filtered sys_reg_descs entries
KVM: arm64: Disable MPAM visibility by default and ignore VMM writes
KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely ignored
.../arch/arm64/cpu-feature-registers.rst | 2 +
arch/arm64/Kconfig | 20 +++
arch/arm64/include/asm/cpu.h | 1 +
arch/arm64/include/asm/cpucaps.h | 2 +
arch/arm64/include/asm/cpufeature.h | 12 ++
arch/arm64/include/asm/el2_setup.h | 16 ++
arch/arm64/include/asm/kvm_arm.h | 1 +
arch/arm64/include/asm/mpam.h | 32 ++++
arch/arm64/include/asm/sysreg.h | 12 --
arch/arm64/kernel/Makefile | 2 +
arch/arm64/kernel/cpufeature.c | 97 ++++++++++
arch/arm64/kernel/cpuinfo.c | 4 +
arch/arm64/kernel/image-vars.h | 5 +
arch/arm64/kernel/mpam.c | 8 +
arch/arm64/kvm/hyp/include/hyp/switch.h | 32 ++++
arch/arm64/kvm/sys_regs.c | 114 +++++++++---
arch/arm64/tools/cpucaps | 1 +
arch/arm64/tools/sysreg | 166 ++++++++++++++++++
.../selftests/kvm/aarch64/set_id_regs.c | 100 ++++++++++-
19 files changed, 587 insertions(+), 40 deletions(-)
create mode 100644 arch/arm64/include/asm/mpam.h
create mode 100644 arch/arm64/kernel/mpam.c
--
2.25.1
next reply other threads:[~2024-10-04 11:08 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-04 11:07 Joey Gouly [this message]
2024-10-04 11:07 ` [PATCH v4 1/7] arm64: head.S: Initialise MPAM EL2 registers and disable traps Joey Gouly
2024-10-09 3:59 ` Gavin Shan
2024-10-04 11:07 ` [PATCH v4 2/7] arm64/sysreg: Convert existing MPAM sysregs and add the remaining entries Joey Gouly
2024-10-09 4:12 ` Gavin Shan
2024-10-04 11:07 ` [PATCH v4 3/7] arm64: cpufeature: discover CPU support for MPAM Joey Gouly
2024-10-09 5:50 ` Gavin Shan
2024-10-04 11:07 ` [PATCH v4 4/7] KVM: arm64: Fix missing traps of guest accesses to the MPAM registers Joey Gouly
2024-10-07 11:05 ` Marc Zyngier
2024-10-09 5:53 ` Gavin Shan
2024-10-10 10:18 ` Joey Gouly
2024-10-04 11:07 ` [PATCH v4 5/7] KVM: arm64: Add a macro for creating filtered sys_reg_descs entries Joey Gouly
2024-10-09 6:12 ` Gavin Shan
2024-10-04 11:07 ` [PATCH v4 6/7] KVM: arm64: Disable MPAM visibility by default and ignore VMM writes Joey Gouly
2024-10-09 6:40 ` Gavin Shan
2024-10-04 11:07 ` [PATCH v4 7/7] KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely ignored Joey Gouly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241004110714.2051604-1-joey.gouly@arm.com \
--to=joey.gouly@arm.com \
--cc=anshuman.khandual@arm.com \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=jingzhangos@google.com \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).