[ Sasha's backport helper bot ]
Hi,
Summary of potential issues: ℹ️ This is part 02/10 of a series ⚠️ Found follow-up fixes in mainline
The upstream commit SHA1 provided is correct: 93ae6b01bafee8fa385aa25ee7ebdb40057f6abe
Status in newer kernel trees: 6.13.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Present (exact SHA1) 6.1.y | Not found
Found fixes commits: fbc7e61195e2 KVM: arm64: Unconditionally save+flush host FPSIMD/SVE/SME state
Note: The patch differs from the upstream commit: --- 1: 93ae6b01bafee ! 1: 710abf6eb6613 KVM: arm64: Discard any SVE state when entering KVM guests @@ Metadata ## Commit message ## KVM: arm64: Discard any SVE state when entering KVM guests
+ [ Upstream commit 93ae6b01bafee8fa385aa25ee7ebdb40057f6abe ] + Since 8383741ab2e773a99 (KVM: arm64: Get rid of host SVE tracking/saving) KVM has not tracked the host SVE state, relying on the fact that we currently disable SVE whenever we perform a syscall. This may not be true @@ Commit message Reviewed-by: Marc Zyngier maz@kernel.org Link: https://lore.kernel.org/r/20221115094640.112848-2-broonie@kernel.org Signed-off-by: Will Deacon will@kernel.org + [ Mark: trivial backport to v6.1 ] + Signed-off-by: Mark Rutland mark.rutland@arm.com + Signed-off-by: Mark Brown broonie@kernel.org
## arch/arm64/include/asm/fpsimd.h ## @@ arch/arm64/include/asm/fpsimd.h: extern void fpsimd_signal_preserve_current_state(void); @@ arch/arm64/include/asm/fpsimd.h: extern void fpsimd_signal_preserve_current_stat +extern void fpsimd_kvm_prepare(void);
extern void fpsimd_bind_state_to_cpu(struct user_fpsimd_state *state, - void *sve_state, unsigned int sve_vl, + void *sve_state, unsigned int sve_vl);
## arch/arm64/kernel/fpsimd.c ## @@ arch/arm64/kernel/fpsimd.c: void fpsimd_signal_preserve_current_state(void) @@ arch/arm64/kvm/fpsimd.c: int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu) BUG_ON(!current->mm); - BUG_ON(test_thread_flag(TIF_SVE));
- if (!system_supports_fpsimd()) - return; + vcpu->arch.flags &= ~KVM_ARM64_FP_ENABLED; + vcpu->arch.flags |= KVM_ARM64_FP_HOST;
+ fpsimd_kvm_prepare(); + - vcpu->arch.fp_state = FP_STATE_HOST_OWNED; - - vcpu_clear_flag(vcpu, HOST_SVE_ENABLED); ++ vcpu->arch.flags &= ~KVM_ARM64_HOST_SVE_ENABLED; ++ + if (read_sysreg(cpacr_el1) & CPACR_EL1_ZEN_EL0EN) + vcpu->arch.flags |= KVM_ARM64_HOST_SVE_ENABLED; + } ---
NOTE: These results are for this patch alone. Full series testing will be performed when all parts are received.
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Success |