From: sashiko-bot@kernel.org
To: "Jinjie Ruan" <ruanjinjie@huawei.com>
Cc: "Marc Zyngier" <maz@kernel.org>,
kvmarm@lists.linux.dev, "Oliver Upton" <oupton@kernel.org>
Subject: Re: [PATCH 11/17] KVM: arm64: Hide FEAT_NMI from guests
Date: Fri, 03 Jul 2026 10:13:22 +0000 [thread overview]
Message-ID: <20260703101322.EB4141F00ADE@smtp.kernel.org> (raw)
In-Reply-To: <20260703100135.2512312-12-ruanjinjie@huawei.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The HCRX_EL2.TALLINT trap is inadvertently bypassed for the guest and erroneously enabled for the host due to a register overwrite and a polluted host context save.
- [High] Missing Context Synchronization Event (ISB) after writing to the control-plane system register SYS_HCRX_EL2.
--
commit 8eef1f43bfda118ac8512933d8d6a2f3483208ee
Author: Mark Brown <broonie@kernel.org>
KVM: arm64: Hide FEAT_NMI from guests
This commit hides FEAT_NMI from guests pending vGIC support. It masks out
the feature from the ID register and sets HCRX_EL2.TALLINT to trap guest
writes to ALLINT.ALLINT.
Link: https://lore.kernel.org/r/20221112151708.175147-10-broonie@kernel.org
> diff --git a/arch/arm64/kvm/hyp/include/hyp/switch.h b/arch/arm64/kvm/hyp/include/hyp/switch.h
> index 18131e395e24c..21b19f331a12f 100644
> --- a/arch/arm64/kvm/hyp/include/hyp/switch.h
> +++ b/arch/arm64/kvm/hyp/include/hyp/switch.h
> @@ -346,6 +346,9 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
> vcpu_set_flag(vcpu, PMUSERENR_ON_CPU);
> }
>
> + if (cpus_have_final_cap(ARM64_HAS_NMI))
> + sysreg_clear_set_s(SYS_HCRX_EL2, 0, HCRX_EL2_TALLINT);
> +
> if (cpus_have_final_cap(ARM64_HAS_HCX)) {
> u64 hcrx = vcpu->arch.hcrx_el2;
[Severity: High]
Does this sequence inadvertently drop the trap for the guest and pollute the
host context?
Because FEAT_HCX is mandatory with FEAT_NMI, the code will execute the HCX
block immediately after setting TALLINT:
arch/arm64/kvm/hyp/include/hyp/switch.h:__activate_traps_common() {
...
if (cpus_have_final_cap(ARM64_HAS_HCX)) {
u64 hcrx = vcpu->arch.hcrx_el2;
...
ctxt_sys_reg(hctxt, HCRX_EL2) = read_sysreg_s(SYS_HCRX_EL2);
write_sysreg_s(hcrx, SYS_HCRX_EL2);
}
}
Since SYS_HCRX_EL2 is immediately overwritten with the guest's hcrx_el2
(which lacks the TALLINT bit), it appears the trap is bypassed for the guest.
Additionally, this reads the newly modified SYS_HCRX_EL2 (with TALLINT set)
into the host's context. When the host context is later restored, will it
leave the host running with the TALLINT trap incorrectly active?
[Severity: High]
Can this read-back observe architecturally undefined pipeline state?
Immediately after sysreg_clear_set_s() writes to the control-plane system
register SYS_HCRX_EL2, the ARM64_HAS_HCX block executes a read-back via
read_sysreg_s(SYS_HCRX_EL2) without an intervening context synchronization
event (isb()).
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260703100135.2512312-1-ruanjinjie@huawei.com?part=11
next prev parent reply other threads:[~2026-07-03 10:13 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-03 10:01 [PATCH 00/17] arm64: Support FEAT_NMI and Rework Exception Masking Jinjie Ruan
2026-07-03 10:01 ` [PATCH 01/17] arm64: Move DAIF macros to ptrace.h and use them centrally Jinjie Ruan
2026-07-03 16:44 ` Breno Leitao
2026-07-06 12:57 ` Jinjie Ruan
2026-07-03 10:01 ` [PATCH 02/17] arm64: Rework exception masking into abstract logical mask Jinjie Ruan
2026-07-03 10:15 ` sashiko-bot
2026-07-03 13:38 ` Leonardo Bras
2026-07-06 13:00 ` Jinjie Ruan
2026-07-06 13:02 ` Leonardo Bras
2026-07-03 13:48 ` Leonardo Bras
2026-07-06 13:15 ` Jinjie Ruan
2026-07-06 13:43 ` Leonardo Bras
2026-07-03 10:01 ` [PATCH 03/17] arm64: entry: arm64: entry: Move DAIF masking for EL1 exit to C code Jinjie Ruan
2026-07-03 10:01 ` [PATCH 04/17] arm64: entry: Add entry-specific helpers Jinjie Ruan
2026-07-03 10:17 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 05/17] arm64: Introduce helpers for restoring standard exception masks Jinjie Ruan
2026-07-03 10:01 ` [PATCH 06/17] arm64/booting: Document boot requirements for FEAT_NMI Jinjie Ruan
2026-07-03 10:15 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 07/17] arm64/sysreg: Add definitions for immediate versions of MSR ALLINT Jinjie Ruan
2026-07-03 10:18 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 08/17] arm64/hyp-stub: Enable access to ALLINT Jinjie Ruan
2026-07-03 10:16 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 09/17] arm64/idreg: Add an override for FEAT_NMI Jinjie Ruan
2026-07-03 10:20 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 10/17] arm64/cpufeature: Detect PE support " Jinjie Ruan
2026-07-03 10:01 ` [PATCH 11/17] KVM: arm64: Hide FEAT_NMI from guests Jinjie Ruan
2026-07-03 10:13 ` sashiko-bot [this message]
2026-07-03 10:01 ` [PATCH 12/17] arm64/nmi: Manage masking for superpriority interrupts along with DAIF Jinjie Ruan
2026-07-03 10:27 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 13/17] arm64/entry: Don't call preempt_schedule_irq() with NMIs masked Jinjie Ruan
2026-07-03 10:01 ` [PATCH 14/17] arm64/irq: Document handling of FEAT_NMI in irqflags.h Jinjie Ruan
2026-07-03 10:01 ` [PATCH 15/17] arm64/nmi: Add handling of superpriority interrupts as NMIs Jinjie Ruan
2026-07-03 10:19 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 16/17] arm64/nmi: Add Kconfig for NMI Jinjie Ruan
2026-07-03 10:28 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 17/17] irqchip/gic-v3: Implement FEAT_GICv3_NMI support Jinjie Ruan
2026-07-03 10:25 ` sashiko-bot
2026-07-03 14:15 ` [PATCH 00/17] arm64: Support FEAT_NMI and Rework Exception Masking Mark Rutland
2026-07-06 1:10 ` Jinjie Ruan
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=20260703101322.EB4141F00ADE@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=ruanjinjie@huawei.com \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.