All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Upton <oupton@kernel.org>
To: Fuad Tabba <fuad.tabba@linux.dev>
Cc: Marc Zyngier <maz@kernel.org>,
	kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	Joey Gouly <joey.gouly@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Steffen Eiden <seiden@linux.ibm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Jing Zhang <jingzhangos@google.com>,
	Karl Mehltretter <kmehltretter@gmail.com>,
	Fuad Tabba <tabba@google.com>,
	kvm@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 04/10] KVM: arm64: nv: Return a failed stage-2 descriptor read as a fault
Date: Mon, 28 Sep 2026 09:47:48 -0700	[thread overview]
Message-ID: <arqaNHGzVfMpVha5@kernel.org> (raw)
In-Reply-To: <20260928152507.2116110-5-fuad.tabba@linux.dev>

On Mon, Sep 28, 2026 at 04:25:01PM +0100, Fuad Tabba wrote:
> When KVM walks an L1 guest's stage-2 tables and can't read a
> descriptor, for example because the guest points a table at an IPA with
> no memslot, it sets a synchronous external abort on the walk but
> returns the -EFAULT from kvm_read_guest(). As with an invalid
> VTCR_EL2, KVM then leaves AT S12E{0,1}{R,W} unretired, so the guest
> retries it forever. On an L2 abort, KVM injects the abort and
> returns -EFAULT from KVM_RUN.
> 
> Return 1, as the walk already does when it can't update a descriptor,
> leaving -EAGAIN from a descriptor race as its only negative return.
> The AT then retires with the external abort in PAR_EL1, which is what a
> stage-1 walk records for a descriptor it can't read.
> 
> Fixes: fd276e71d1e7b ("KVM: arm64: nv: Handle shadow stage 2 page faults")
> Fixes: 92c6443222ca4 ("KVM: arm64: Propagate PTW errors up to AT emulation")
> Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
> ---
>  arch/arm64/kvm/nested.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/kvm/nested.c b/arch/arm64/kvm/nested.c
> index a67be19e73250..f9a2e50c0b567 100644
> --- a/arch/arm64/kvm/nested.c
> +++ b/arch/arm64/kvm/nested.c
> @@ -304,7 +304,7 @@ static int walk_nested_s2_pgd(struct kvm_vcpu *vcpu, phys_addr_t ipa,
>  		ret = read_guest_s2_desc(vcpu, paddr, &desc, wi);
>  		if (ret < 0) {
>  			out->esr = ESR_ELx_FSC_SEA_TTW(level);
> -			return ret;
> +			return 1;

Hmm. Rather than fixing these things individually, I'd prefer aligning return
codes between the S1 and S2 walks. I agree with the approach; negative
return codes should be reserved for host-visible failure reasons whereas
everything guest visible gets communicated through s1_walk_result /
kvm_s2_trans.

Thanks,
Oliver


  reply	other threads:[~2026-09-28 16:47 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 15:24 [PATCH v1 00/10] KVM: arm64: Nested stage-2 walk error handling and other small fixes Fuad Tabba
2026-09-28 15:24 ` [PATCH v1 01/10] KVM: arm64: Don't WARN on SMCCC filter reserved range allocation failure Fuad Tabba
2026-09-28 15:54   ` Oliver Upton
2026-09-28 16:14     ` Fuad Tabba
2026-09-28 15:24 ` [PATCH v1 02/10] KVM: arm64: nv: Don't WARN on an invalid VTCR_EL2 Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 03/10] KVM: arm64: nv: Don't loop on AT S12E{0,1}{R,W} with " Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 04/10] KVM: arm64: nv: Return a failed stage-2 descriptor read as a fault Fuad Tabba
2026-09-28 16:47   ` Oliver Upton [this message]
2026-09-28 17:46     ` Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 05/10] KVM: arm64: selftests: Test AT S12E1R with an invalid VTCR_EL2.SL0 Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 06/10] Documentation: KVM: Fix the name of the SMCCC filter attribute Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 07/10] Documentation: KVM: Fix the name of KVM_ARM_SET_COUNTER_OFFSET Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 08/10] Documentation: KVM: Fix the name of KVM_ARM_FEATURE_ID_RANGE_IDX Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 09/10] KVM: arm64: selftests: Free the VMs in smccc_filter and psci_test Fuad Tabba
2026-09-28 15:25 ` [PATCH v1 10/10] KVM: arm64: selftests: Free the thread arrays in vgic_lpi_stress Fuad Tabba
2026-09-28 15:58 ` [PATCH v1 00/10] KVM: arm64: Nested stage-2 walk error handling and other small fixes Marc Zyngier
2026-09-28 16:12   ` 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=arqaNHGzVfMpVha5@kernel.org \
    --to=oupton@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=fuad.tabba@linux.dev \
    --cc=jingzhangos@google.com \
    --cc=joey.gouly@arm.com \
    --cc=kmehltretter@gmail.com \
    --cc=kvm@vger.kernel.org \
    --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=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=seiden@linux.ibm.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.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 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.