Mike Larkin <[email protected]> writes:
> 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?
>
ok dv@. This is overly defensive and from the time I was chasing issues
on Intel hosts. Now that the VMCS is properly protected this can go.
Removing the lock here speeds up booting my Ubuntu iso 10x, too 8)
> -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] */