From: Fuad Tabba <tabba@google.com>
To: kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linux-arm-kernel@lists.infradead.org
Cc: maz@kernel.org, oliver.upton@linux.dev, joey.gouly@arm.com,
suzuki.poulose@arm.com, yuzenghui@huawei.com,
catalin.marinas@arm.com, will@kernel.org, tabba@google.com,
stable@vger.kernel.org
Subject: [PATCH v1 0/3] KVM: arm64: Fix guest feature sanitization and pKVM state synchronization
Date: Thu, 12 Feb 2026 09:02:49 +0000 [thread overview]
Message-ID: <20260212090252.158689-1-tabba@google.com> (raw)
This series addresses state management and feature synchronization
vulnerabilities in both standard KVM and pKVM implementations on arm64.
The primary focus is ensuring that the hypervisor correctly handles
architectural extensions during context switches to prevent state
corruption.
The series is structured as follows:
* Patch 1: Addresses an issue in KVM/arm64 in general where FEAT_S1POE
is exposed to guests based solely on hardware capability. If the host
kernel is built without CONFIG_ARM64_POE, it will not context-switch
POR_EL1. Masking the S1POE bit in ID_AA64MMFR3_EL1 when
system_supports_poe() is false prevents state corruption.
* Patch 2: Fixes a bug in pKVM non-protected guest initialization.
Previously, pkvm_init_features_from_host() copied the initialized flag
without copying the actual id_regs array. This caused EL2 feature
checks (such as ctxt_has_tcrx()) to silently fail, breaking the
save/restore logic for system registers like TCR2_EL1, PIR_EL1, and
POR_EL1 during world switches. The fix initializes the ID registers.
* Patch 3: Removes a redundant kern_hyp_va() macro invocation in
unpin_host_sve_state(). The sve_state pointer is already initialized
as a hypervisor virtual address. While idempotent, the macro is
unnecessary here.
Based on Linux 6.19.
Cheers,
/fuad
Cc: stable@vger.kernel.org
Fuad Tabba (3):
KVM: arm64: Hide S1POE from guests when not supported by the host
KVM: arm64: Fix ID register initialization for non-protected pKVM
guests
KVM: arm64: Remove redundant kern_hyp_va() in unpin_host_sve_state()
arch/arm64/include/asm/kvm_host.h | 3 ++-
arch/arm64/kvm/hyp/nvhe/pkvm.c | 39 ++++++++++++++++++++++++++++---
arch/arm64/kvm/sys_regs.c | 3 +++
3 files changed, 41 insertions(+), 4 deletions(-)
base-commit: 05f7e89ab9731565d8a62e3b5d1ec206485eeb0b
--
2.53.0.239.g8d8fc8a987-goog
next reply other threads:[~2026-02-12 9:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-12 9:02 Fuad Tabba [this message]
2026-02-12 9:02 ` [PATCH v1 1/3] KVM: arm64: Hide S1POE from guests when not supported by the host Fuad Tabba
2026-02-12 9:29 ` Marc Zyngier
2026-02-12 9:41 ` Fuad Tabba
2026-02-12 15:35 ` Marc Zyngier
2026-02-12 18:53 ` Fuad Tabba
2026-02-13 10:40 ` Marc Zyngier
2026-02-12 9:02 ` [PATCH v1 2/3] KVM: arm64: Fix ID register initialization for non-protected pKVM guests Fuad Tabba
2026-02-13 11:03 ` Marc Zyngier
2026-02-13 11:07 ` Fuad Tabba
2026-02-12 9:02 ` [PATCH v1 3/3] KVM: arm64: Remove redundant kern_hyp_va() in unpin_host_sve_state() Fuad Tabba
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=20260212090252.158689-1-tabba@google.com \
--to=tabba@google.com \
--cc=catalin.marinas@arm.com \
--cc=joey.gouly@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=stable@vger.kernel.org \
--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