From: sashiko-bot@kernel.org
To: "Mark Brown" <broonie@kernel.org>
Cc: "Oliver Upton" <oupton@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
kvmarm@lists.linux.dev
Subject: Re: [PATCH v20 05/14] KVM: arm64: Set PSTATE.EXLOCK when entering an exception
Date: Tue, 01 Sep 2026 22:06:36 +0000 [thread overview]
Message-ID: <20260901220637.102E01F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260901-arm64-gcs-v20-5-f31750bdfadb@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Incorrect GCSCR_ELx register selection based on the current context instead of the target exception level.
--
commit 42f10f3e973b268a78dccd02e2f0ddbf5ed384fb
Author: Mark Brown <broonie@kernel.org>
KVM: arm64: Set PSTATE.EXLOCK when entering an exception
This commit implements managing PSTATE.EXLOCK when entering an exception.
When taking an exception to a lower EL, the bit is cleared, and when
entering from the same EL, it is set to GCSCR_ELx.EXLOCKEN.
> diff --git a/arch/arm64/kvm/hyp/exception.c b/arch/arm64/kvm/hyp/exception.c
> index 754e2dc1df54a..85c873644fe90 100644
> --- a/arch/arm64/kvm/hyp/exception.c
> +++ b/arch/arm64/kvm/hyp/exception.c
> @@ -49,6 +49,38 @@ static void __vcpu_write_spsr_und(struct kvm_vcpu *vcpu, u64 val)
> vcpu->arch.ctxt.spsr_und = val;
> }
>
> +static unsigned long compute_exlock(struct kvm_vcpu *vcpu,
> + unsigned long mode,
> + unsigned long target_mode)
> +{
> + u64 gcscr;
[ ... ]
> + /*
> + * When taking an exception to the same EL EXLOCK is set to
> + * the effective value of GCSR_ELx.EXLOCKEN.
> + */
> + if (is_hyp_ctxt(vcpu))
> + gcscr = vcpu_read_sys_reg(vcpu, GCSCR_EL2);
> + else
> + gcscr = vcpu_read_sys_reg(vcpu, GCSCR_EL1);
[Severity: Medium]
Could compute_exlock() read the wrong register when a nested guest
configures HCR_EL2.TGE = 1 while operating in EL1?
If KVM injects an exception to EL1 in this state (where target_mode is
PSR_MODE_EL1h), is_hyp_ctxt(vcpu) will evaluate to true because TGE is set.
This would cause the hypervisor to read GCSCR_EL2 instead of GCSCR_EL1,
leading to an incorrect PSTATE.EXLOCK value for the injected exception.
While a nested guest executing in EL1 with TGE=1 is architecturally
unpredictable in hardware, KVM's software model typically avoids
cross-wiring registers for different exception levels.
Should this logic strictly use the explicitly passed target_mode to
determine the target exception level, similar to how enter_exception64()
handles VBAR and SCTLR?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260901-arm64-gcs-v20-0-f31750bdfadb@kernel.org?part=5
next prev parent reply other threads:[~2026-09-01 22:06 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-01 21:46 [PATCH v20 00/14] KVM: arm64: Provide guest support for GCS Mark Brown
2026-09-01 21:46 ` [PATCH v20 01/14] arm64/gcs: Ensure FGTs for EL1 GCS instructions are disabled Mark Brown
2026-09-03 16:10 ` Lorenzo Stoakes (ARM)
2026-09-01 21:47 ` [PATCH v20 02/14] KVM: arm64: Fix FGT mapping for HFGITR_EL2.nGCSEPP Mark Brown
2026-09-03 16:23 ` Lorenzo Stoakes (ARM)
2026-09-03 19:29 ` Mark Brown
2026-09-01 21:47 ` [PATCH v20 03/14] KVM: arm64: Manage GCS access and registers for guests Mark Brown
2026-09-01 22:00 ` sashiko-bot
2026-09-02 16:44 ` Leonardo Bras
2026-09-03 20:52 ` Mark Brown
2026-09-03 18:13 ` Lorenzo Stoakes (ARM)
2026-09-03 20:41 ` Mark Brown
2026-09-04 8:54 ` Lorenzo Stoakes (ARM)
2026-09-04 21:07 ` Mark Brown
2026-09-07 14:14 ` Lorenzo Stoakes (ARM)
2026-09-07 14:55 ` Mark Brown
2026-09-09 11:34 ` Lorenzo Stoakes (ARM)
2026-09-01 21:47 ` [PATCH v20 04/14] KVM: arm64: Ensure GCS memory effects are visible Mark Brown
2026-09-01 22:06 ` sashiko-bot
2026-09-02 16:30 ` Leonardo Bras
2026-09-04 12:16 ` Lorenzo Stoakes (ARM)
2026-09-01 21:47 ` [PATCH v20 05/14] KVM: arm64: Set PSTATE.EXLOCK when entering an exception Mark Brown
2026-09-01 22:06 ` sashiko-bot [this message]
2026-09-03 14:25 ` Leonardo Bras
2026-09-03 16:20 ` Mark Brown
2026-09-03 16:40 ` Leonardo Bras
2026-09-04 13:04 ` Lorenzo Stoakes (ARM)
2026-09-01 21:47 ` [PATCH v20 06/14] KVM: arm64: Validate GCS exception lock when emulating ERET Mark Brown
2026-09-03 15:37 ` Leonardo Bras
2026-09-03 19:22 ` Mark Brown
2026-09-04 13:16 ` Leonardo Bras
2026-09-04 21:56 ` Mark Brown
2026-09-07 10:55 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 07/14] KVM: arm64: Forward GCS exceptions to nested guests Mark Brown
2026-09-01 22:09 ` sashiko-bot
2026-09-09 13:00 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 08/14] KVM: arm64: Enforce EXLOCK for SPSR and ELR Mark Brown
2026-09-01 22:15 ` sashiko-bot
2026-09-01 22:48 ` Mark Brown
2026-09-09 14:35 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 09/14] KVM: arm64: Allow GCS to be enabled for guests Mark Brown
2026-09-09 16:34 ` Leonardo Bras
2026-09-09 16:45 ` Mark Brown
2026-09-01 21:47 ` [PATCH v20 10/14] KVM: selftests: arm64: Add GCS registers to get-reg-list Mark Brown
2026-09-01 22:05 ` sashiko-bot
2026-09-09 16:46 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 11/14] KVM: selftests: arm64: Add GCS to set_id_regs Mark Brown
2026-09-09 16:55 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 12/14] KVM: selftests: arm64: Only restore SPSR_EL1 and ELR_EL1 if they change Mark Brown
2026-09-09 17:03 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 13/14] tools: Synchronise the kernel esr.h Mark Brown
2026-09-01 22:08 ` sashiko-bot
2026-09-10 11:10 ` Leonardo Bras
2026-09-01 21:47 ` [PATCH v20 14/14] KVM: selftests: arm64: Add GCS EXLOCK exception emulation test Mark Brown
2026-09-01 22:16 ` sashiko-bot
2026-09-10 17:20 ` Leonardo Bras
2026-09-10 18:26 ` Mark Brown
2026-09-11 11:02 ` Leonardo Bras
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=20260901220637.102E01F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=broonie@kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--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.