KVM: arm64: Additional documentation of the FP code
cover KVM: arm64: Additional documentation of the FP code
These couple of patches add a few more comments to the floating point code which will hopefully help the next person who comes along and tries to figure out what is going on.
Mark Brown (2):
KVM: arm64: Add comments for context flush and sync callbacks
KVM: arm64: Add some more comments in kvm_hyp_handle_fpsimd()
arch/arm64/kvm/fpsimd.c | 14 ++++++++++---- arch/arm64/kvm/hyp/include/hyp/switch.h | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-)
base-commit: e783362eb54cd99b2cac8b3a9aeac942e6f6ac07
Signature · 6 lines
2.30.2 _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
PATCH 1/2 KVM: arm64: Add comments for context flush and sync callbacks
Add a little bit of information on where _ctxflush_fp() and _ctxsync_fp() are called to help people unfamiliar with the code get up to speed.
--- arch/arm64/kvm/fpsimd.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
arch/arm64/kvm/fpsimd.c +10 -4
@@ -84,6 +84,11 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu) vcpu->arch.flags |=KVM_ARM64_HOST_SVE_ENABLED ; } +/* +* Called just before entering the guest once we are no longer +* preemptable. Syncs the host's TIF_FOREIGN_FPSTATE with the KVM +* mirror of the flag used by the hypervisor. +*/ void kvm_arch_vcpu_ctxflush_fp (struct kvm_vcpu *vcpu) {if (test_thread_flag (TIF_FOREIGN_FPSTATE ))
@@ -93,10 +98,11 @@ void kvm_arch_vcpu_ctxflush_fp(struct kvm_vcpu *vcpu) }/* -* If the guest FPSIMD state was loaded, update the host's context -* tracking data mark the CPU FPSIMD regs as dirty and belonging to vcpu -* so that they will be written back if the kernel clobbers them due to -* kernel-mode NEON before re-entry into the guest. +* Called just after exiting the guest. If the guest FPSIMD state +* was loaded, update the host's context tracking data mark the CPU +* FPSIMD regs as dirty and belonging to vcpu so that they will be +* written back if the kernel clobbers them due to kernel-mode NEON +* before re-entry into the guest. */ void kvm_arch_vcpu_ctxsync_fp (struct kvm_vcpu *vcpu) {
Signature · 6 lines
2.30.2 _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
PATCH 2/2 KVM: arm64: Add some more comments in kvm_hyp_handle_fpsimd()
In reply to Mark BrownThe 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.
--- arch/arm64/kvm/hyp/include/hyp/switch.h | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/kvm/hyp/include/hyp/switch.h +4 -0
@@ -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
Signature · 6 lines
2.30.2 _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Quoted 9 lines · Mark Brown
These couple of patches add a few more comments to the floating point code which will hopefully help the next person who comes along and tries to figure out what is going on.
Mark Brown (2):
KVM: arm64: Add comments for context flush and sync callbacks
KVM: arm64: Add some more comments inkvm_hyp_handle_fpsimd()[...]
Applied to next, thanks!
[1/2] KVM: arm64: Add comments for context flush and sync callbacks
commit: 23afc82539cfcce105bf18c5c835c75e463ca349
[2/2] KVM: arm64: Add some more comments in kvm_hyp_handle_fpsimd()
commit: 01a244decc760b1ae2caa045647d79ff431bf37bCheers,
M.
Signature · 7 lines
Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm