linux-kselftest.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Mark Brown <broonie@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Oliver Upton <oliver.upton@linux.dev>,
	Joey Gouly <joey.gouly@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Shuah Khan <shuah@kernel.org>,
	linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
	kvmarm@lists.linux.dev, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v15 3/6] KVM: arm64: Forward GCS exceptions to nested guests
Date: Wed, 20 Aug 2025 23:15:25 +0100	[thread overview]
Message-ID: <87ldndk5c2.wl-maz@kernel.org> (raw)
In-Reply-To: <20250820-arm64-gcs-v15-3-5e334da18b84@kernel.org>

On Wed, 20 Aug 2025 15:14:43 +0100,
Mark Brown <broonie@kernel.org> wrote:
> 
> GCS can generate exceptions with an EC of 0x2D (GCS Data Check
> Exception) when data validation checks fail.  When running a nested
> guest which has access to GCS such exceptions can be directed from EL0
> to EL2 and therefore need to be forwarded to the guest hypervisor, add
> handling for this.

Why is it so? A GCS exception from EL0 should be routed to EL1, no
matter what (either this is an L1 guest with EL1 pretending to be EL2,
or this is an L2 guest that has its own EL1).

Can you describe the case where we need to reinject the exception?

>
> Signed-off-by: Mark Brown <broonie@kernel.org>
> ---
>  arch/arm64/kvm/handle_exit.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
> index a598072f36d2..2f5aef84b294 100644
> --- a/arch/arm64/kvm/handle_exit.c
> +++ b/arch/arm64/kvm/handle_exit.c
> @@ -301,10 +301,18 @@ static int handle_svc(struct kvm_vcpu *vcpu)
>  
>  static int kvm_handle_gcs(struct kvm_vcpu *vcpu)
>  {
> -	/* We don't expect GCS, so treat it with contempt */
> -	if (kvm_has_feat(vcpu->kvm, ID_AA64PFR1_EL1, GCS, IMP))
> -		WARN_ON_ONCE(1);
> +	if (!kvm_has_gcs(vcpu->kvm)) {
> +		kvm_inject_undefined(vcpu);
> +		return 1;
> +	}
>  
> +	if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) {

We now have is_nested_ctxt(), which is more obvious.

> +		kvm_inject_nested_sync(vcpu, kvm_vcpu_get_esr(vcpu));
> +		return 1;
> +	}
> +
> +	/* We shouldn't have generated a trap in this case */
> +	WARN_ON_ONCE(1);
>  	kvm_inject_undefined(vcpu);
>  	return 1;
>  }
> 

Thanks,

	M.

-- 
Jazz isn't dead. It just smells funny.

  reply	other threads:[~2025-08-20 22:15 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-20 14:14 [PATCH v15 0/6] KVM: arm64: Provide guest support for GCS Mark Brown
2025-08-20 14:14 ` [PATCH v15 1/6] arm64/gcs: Ensure FGTs for EL1 GCS instructions are disabled Mark Brown
2025-08-20 22:24   ` Marc Zyngier
2025-08-20 22:28     ` Marc Zyngier
2025-08-20 14:14 ` [PATCH v15 2/6] KVM: arm64: Manage GCS access and registers for guests Mark Brown
2025-08-20 21:06   ` Marc Zyngier
2025-08-20 22:13     ` Mark Brown
2025-08-20 14:14 ` [PATCH v15 3/6] KVM: arm64: Forward GCS exceptions to nested guests Mark Brown
2025-08-20 22:15   ` Marc Zyngier [this message]
2025-08-21 21:25     ` Mark Brown
2025-08-20 14:14 ` [PATCH v15 4/6] KVM: arm64: Set PSTATE.EXLOCK when entering an exception Mark Brown
2025-08-20 22:02   ` Marc Zyngier
2025-08-21 20:44     ` Mark Brown
2025-08-20 14:14 ` [PATCH v15 5/6] KVM: arm64: Allow GCS to be enabled for guests Mark Brown
2025-08-20 22:18   ` Marc Zyngier
2025-08-20 14:14 ` [PATCH v15 6/6] KVM: selftests: arm64: Add GCS registers to get-reg-list Mark Brown
2025-08-20 22:30 ` [PATCH v15 0/6] KVM: arm64: Provide guest support for GCS Marc Zyngier

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=87ldndk5c2.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=joey.gouly@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=shuah@kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /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).