From: Quentin Perret <qperret@google.com>
To: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Oliver Upton <oliver.upton@linux.dev>,
Zenghui Yu <yuzenghui@huawei.com>,
Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev,
kvmarm@lists.cs.columbia.edu, kernel-team@android.com,
Quentin Perret <qperret@google.com>
Subject: [PATCH 0/4] KVM: arm64: Fix CPU resume/on with pKVM
Date: Wed, 1 Feb 2023 10:37:50 +0000 [thread overview]
Message-ID: <20230201103755.1398086-1-qperret@google.com> (raw)
When using pKVM, we do not reset the EL2 exception vectors back to the
stubs for e.g. Power Management or CPU hotplug as we normally do in KVM.
As consequence, the initialisation perfomed by __finalise_el2 is missing
on e.g. the CPU_RESUME path with pKVM, hence leaving certain registers
in an incorrect state.
One such example is ZCR_EL2 which remains configured with SVE traps
enabled. And so using SVE on a CPU that has gone through a hotplug
off/on cycle leads to a hyp panic. Not good.
This series fixes this by macroizing the first half of __finalise_el2
(that is, the part that is not specific to VHE) to allow its re-use
from pKVM's PSCI relay.
Quentin Perret (4):
KVM: arm64: Provide sanitized SYS_ID_AA64SMFR0_EL1 to nVHE
KVM: arm64: Introduce finalise_el2_state macro
KVM: arm64: Use sanitized values in __check_override in nVHE
KVM: arm64: Finalise EL2 state from pKVM PSCI relay
arch/arm64/include/asm/el2_setup.h | 92 ++++++++++++++++++++++++++++++
arch/arm64/include/asm/kvm_hyp.h | 1 +
arch/arm64/kernel/hyp-stub.S | 79 +------------------------
arch/arm64/kvm/arm.c | 1 +
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 1 +
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 1 +
6 files changed, 98 insertions(+), 77 deletions(-)
--
2.39.1.456.gfc5497dd1b-goog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2023-02-01 10:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-01 10:37 Quentin Perret [this message]
2023-02-01 10:37 ` [PATCH 1/4] KVM: arm64: Provide sanitized SYS_ID_AA64SMFR0_EL1 to nVHE Quentin Perret
2023-02-01 14:15 ` Mark Brown
2023-02-01 10:37 ` [PATCH 2/4] KVM: arm64: Introduce finalise_el2_state macro Quentin Perret
2023-02-01 14:17 ` Mark Brown
2023-02-01 10:37 ` [PATCH 3/4] KVM: arm64: Use sanitized values in __check_override in nVHE Quentin Perret
2023-02-01 10:37 ` [PATCH 4/4] KVM: arm64: Finalise EL2 state from pKVM PSCI relay Quentin Perret
2023-02-01 14:48 ` [PATCH 0/4] KVM: arm64: Fix CPU resume/on with pKVM Marc Zyngier
2023-02-01 16:57 ` Quentin Perret
2023-02-02 21:43 ` Oliver Upton
2023-02-06 17:12 ` Oliver Upton
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=20230201103755.1398086-1-qperret@google.com \
--to=qperret@google.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=kernel-team@android.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--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).