Re: [PATCH v2] KVM: arm64: Preserve GPRs for AArch32 CP64 reads generating an UNDEF

Marc Zyngier <[email protected]> Mon, 03 Aug 2026 07:32:29 +0100
Newsgroups dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sun, 02 Aug 2026 19:22:22 +0100,
Karl Mehltretter <[email protected]> wrote:
> 
> kvm_handle_cp_64() only seeds params.regval for writes. If a CP64 read is
> decoded but UNDEFs, emulate_cp() still returns handled and the caller
> writes params.regval back to Rt/Rt2.
> 
> This can happen for PMU counter read accesses generating an UNDEF. KVM
> injects the exception into the guest, so the MRRC GPRs must remain
> unchanged.
> 
> Instead, the uninitialised regval is copied into the guest GPRs. With stack
> auto-initialisation this is a deterministic zero or pattern value. With
> CONFIG_INIT_STACK_NONE it may be stale host stack data.
> 
> Match kvm_handle_cp_32() and kvm_handle_sys_reg() by seeding regval from
> the GPRs before emulation.
> 
> Fixes: 62a89c44954f0 ("arm64: KVM: 32bit handling of coprocessor traps")
> Assisted-by: Claude:claude-opus-5
> Signed-off-by: Karl Mehltretter <[email protected]>

Reviewed-by: Marc Zyngier <[email protected]>

	M.

-- 
Without deviation from the norm, progress is not possible.