Commit 01a244de authored by Mark Brown's avatar Mark Brown Committed by Marc Zyngier
Browse files

KVM: arm64: Add some more comments in kvm_hyp_handle_fpsimd()



The handling for FPSIMD/SVE traps is multi stage and involves some trap
manipulation which isn't quite so immediately obvious as might be desired
so add a few more comments.

Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220124155720.3943374-3-broonie@kernel.org
parent 23afc825
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -173,6 +173,8 @@ static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
		return false;

	/* Valid trap.  Switch the context: */

	/* First disable enough traps to allow us to update the registers */
	if (has_vhe()) {
		reg = CPACR_EL1_FPEN;
		if (sve_guest)
@@ -188,11 +190,13 @@ static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
	}
	isb();

	/* Write out the host state if it's in the registers */
	if (vcpu->arch.flags & KVM_ARM64_FP_HOST) {
		__fpsimd_save_state(vcpu->arch.host_fpsimd_state);
		vcpu->arch.flags &= ~KVM_ARM64_FP_HOST;
	}

	/* Restore the guest state */
	if (sve_guest)
		__hyp_sve_restore_guest(vcpu);
	else