This lock/unlock around an atomic operation was causing delays delivering
interupts into VMs. Pointed out by claudio@ when he ran md5 -tttt in a VM
and it became very sluggish.
Debugging help from dlg and mpi, thanks.
ok?
-ml
Index: arch/amd64/amd64/vmm.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/vmm.c,v
retrieving revision 1.326
diff -u -p -a -u -r1.326 vmm.c
--- arch/amd64/amd64/vmm.c 7 Nov 2022 12:29:12 -0000 1.326
+++ arch/amd64/amd64/vmm.c 8 Nov 2022 15:29:10 -0000
@@ -894,9 +894,7 @@ vm_intr_pending(struct vm_intr_params *v
goto out;
}
- rw_enter_write(&vcpu->vc_lock);
vcpu->vc_intr = vip->vip_intr;
- rw_exit_write(&vcpu->vc_lock);
refcnt_rele_wake(&vcpu->vc_refcnt);
out:
@@ -3526,7 +3524,7 @@ vcpu_reset_regs_vmx(struct vcpu *vcpu, s
vmx_setmsrbrw(vcpu, MSR_FSBASE);
vmx_setmsrbrw(vcpu, MSR_GSBASE);
vmx_setmsrbrw(vcpu, MSR_KERNELGSBASE);
-
+
vmx_setmsrbr(vcpu, MSR_MISC_ENABLE);
vmx_setmsrbr(vcpu, MSR_TSC);
Index: arch/amd64/include/vmmvar.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/vmmvar.h,v
retrieving revision 1.81
diff -u -p -a -u -r1.81 vmmvar.h
--- arch/amd64/include/vmmvar.h 1 Sep 2022 22:01:40 -0000 1.81
+++ arch/amd64/include/vmmvar.h 8 Nov 2022 15:29:10 -0000
@@ -937,7 +937,7 @@ struct vcpu {
struct cpu_info *vc_last_pcpu; /* [v] */
struct vm_exit vc_exit; /* [v] */
- uint16_t vc_intr; /* [v] */
+ uint16_t vc_intr; /* [a] */
uint8_t vc_irqready; /* [v] */
uint8_t vc_fpuinited; /* [v] */