From: sashiko-bot@kernel.org
To: "Steffen Eiden" <seiden@linux.ibm.com>
Cc: "Oliver Upton" <oupton@kernel.org>,
linux-s390@vger.kernel.org,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Heiko Carstens" <hca@linux.ibm.com>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Marc Zyngier" <maz@kernel.org>,
kvm@vger.kernel.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v7 19/23] KVM: s390: arm64: Implement required functions
Date: Mon, 31 Aug 2026 21:13:23 +0000 [thread overview]
Message-ID: <20260831211323.890211F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260831144802.834315-20-seiden@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Stubbed exception injection functions cause infinite trap loops, allowing guest userspace to permanently hang a VCPU.
- [High] Incorrect endianness mapping for 32-bit FPSR/FPCR registers accessed via KVM_GET_ONE_REG / KVM_SET_ONE_REG.
--
commit 93d3dbc5966621adfcec645f4ad14f3ea7a0f69a
Author: Steffen Eiden <seiden@linux.ibm.com>
KVM: s390: arm64: Implement required functions
This commit implements the required arm64 KVM shared functions for s390,
adding necessary headers and basic exception injection stubs. It also
provides a temporary SMC/HVC exit handler.
> diff --git a/arch/s390/include/arm64/kvm_emulate.h b/arch/s390/include/arm64/kvm_emulate.h
> new file mode 100644
> --- /dev/null
> +++ b/arch/s390/include/arm64/kvm_emulate.h
[ ... ]
> +static __always_inline u64 *vcpu_fpsr(struct kvm_vcpu *vcpu)
> +{
> + return &vcpu->arch.sae_block.fpsr;
> +}
[Severity: High]
Because s390 is big-endian, does returning a u64 pointer here cause data
corruption during KVM_GET_ONE_REG or KVM_SET_ONE_REG calls?
The shared arm64 code treats fp_regs.fpsr as a 32-bit value and casts the
returned pointer to (u32 *). Pointing to a 64-bit value on a big-endian
system means the cast will access the most-significant 32 bits (which are
zero) instead of the lower 32 bits containing the actual register state.
> +
> +static __always_inline u64 *vcpu_fpcr(struct kvm_vcpu *vcpu)
> +{
> + return &vcpu->arch.sae_block.fpcr;
> +}
[Severity: High]
Does this have the same 32-bit KVM API endianness corruption issue as
vcpu_fpsr() above?
[ ... ]
> diff --git a/arch/s390/kvm/arm64/inject_fault.c b/arch/s390/kvm/arm64/inject_fault.c
> new file mode 100644
> --- /dev/null
> +++ b/arch/s390/kvm/arm64/inject_fault.c
[ ... ]
> +void kvm_inject_undefined(struct kvm_vcpu *vcpu)
> +{
> + /* Stub until s390 supports arm64 sysregs TODO sysregs*/
> +}
[Severity: High]
Does leaving this stub empty cause an infinite trap loop on the host?
When an unprivileged guest userspace process executes an undefined
instruction, KVM triggers an exception intercept. The KVM handler
kvm_handle_unknown_ec() calls kvm_inject_undefined(), which does nothing
here.
Since kvm_handle_unknown_ec() returns 1 and the stub doesn't advance the
guest PC, KVM will immediately re-enter the guest at the exact same faulting
instruction, permanently hanging the guest VCPU.
> +
> +int kvm_inject_sea(struct kvm_vcpu *vcpu, bool iabt, u64 addr)
> +{
> + /* Stub until s390 supports arm64 sysregs TODO sysregs*/
> + return 1;
> +}
[Severity: High]
Does this stub act identically to kvm_inject_undefined() and cause a hang
when a Synchronous External Abort is triggered (for example, via
KVM_SET_VCPU_EVENTS)?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260831144802.834315-1-seiden@linux.ibm.com?part=19
next prev parent reply other threads:[~2026-08-31 21:13 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:47 [PATCH v7 00/23] KVM: s390: Introduce arm64 KVM Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 01/23] vfio: Use file-based reference counting for KVM Steffen Eiden
2026-08-31 18:16 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 02/23] KVM: Make device name configurable Steffen Eiden
2026-08-31 18:25 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 03/23] KVM: Allow KVM implementations to switch off MMIO independent of Kconfig Steffen Eiden
2026-08-31 18:31 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 04/23] arm64: Use proper include variant Steffen Eiden
2026-08-31 18:31 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 05/23] arm64: ptrace: Use constants for compat register numbers Steffen Eiden
2026-08-31 18:34 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 06/23] arm64: sysreg: Convert SPSR_ELx to automatic register generation Steffen Eiden
2026-08-31 18:38 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 07/23] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-08-31 18:42 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 08/23] KVM: arm64: Use accessor functions for core regs Steffen Eiden
2026-08-31 18:45 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 09/23] arm64: Prepare sharing arm64 headers with s390 Steffen Eiden
2026-08-31 18:50 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 10/23] arm64: Share " Steffen Eiden
2026-08-31 19:03 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 11/23] KVM: arm64: Share arm64 code " Steffen Eiden
2026-08-31 19:14 ` sashiko-bot
2026-09-01 8:13 ` Marc Zyngier
2026-09-01 8:40 ` Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 12/23] s390/tools: Use arm64 headers Steffen Eiden
2026-08-31 19:18 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 13/23] KVM: s390: Use arm64 code Steffen Eiden
2026-08-31 19:26 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 14/23] KVM: s390: Prepare KVM/s390 for a second KVM module Steffen Eiden
2026-08-31 19:47 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 15/23] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-08-31 20:00 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 16/23] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-08-31 20:16 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 17/23] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-08-31 20:20 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 18/23] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-08-31 20:56 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 19/23] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-08-31 21:13 ` sashiko-bot [this message]
2026-08-31 14:47 ` [PATCH v7 20/23] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-08-31 21:30 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 21/23] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-08-31 21:47 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 22/23] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-08-31 22:00 ` sashiko-bot
2026-08-31 14:48 ` [PATCH v7 23/23] KVM: s390: arm64: Add KVM_S390_ARM64 Kconfig and Makefile Steffen Eiden
2026-08-31 22:19 ` sashiko-bot
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=20260831211323.890211F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=seiden@linux.ibm.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