On Wed, Nov 09, 2022 at 06:58:32AM +0100, Anton Lindqvist wrote: > On Tue, Nov 08, 2022 at 12:18:47PM -0700, David Gwynne wrote: > > CVSROOT: /cvs > > Module name: src > > Changes by: d...@cvs.openbsd.org 2022/11/08 12:18:47 > > > > Modified files: > > sys/arch/amd64/include: vmmvar.h > > sys/arch/amd64/amd64: vmm.c > > > > Log message: > > further speed up delivery of interrupts to a running vcpu. > > > > this records which physical cpu a vcpu is running on. this is used > > by the code that marks a vcpu as having a pending interrupt to check > > if the vcpu is currently running. if it thinks the vcpu is running, > > it sends a nop IPI to the physical cpu it is running on to trigger > > a vmexit, which in turn runs interrupt handling in the guest. > > > > ok mlarkin@ > > GENERIC is broken: > > vmm.c:900:3: error: implicit declaration of function 'x86_send_ipi' is > invalid in C99 [-Werror,-Wimplicit-function-declaration]
ok stsp@ > Index: vmm.c > =================================================================== > RCS file: /cvs/src/sys/arch/amd64/amd64/vmm.c,v > retrieving revision 1.329 > diff -u -p -r1.329 vmm.c > --- vmm.c 8 Nov 2022 19:38:34 -0000 1.329 > +++ vmm.c 9 Nov 2022 05:57:26 -0000 > @@ -877,7 +877,9 @@ vm_intr_pending(struct vm_intr_params *v > { > struct vm *vm; > struct vcpu *vcpu; > +#ifdef MULTIPROCESSOR > struct cpu_info *ci; > +#endif > int error, ret = 0; > > /* Find the desired VM */ > @@ -894,10 +896,12 @@ vm_intr_pending(struct vm_intr_params *v > goto out; > } > > +#ifdef MULTIPROCESSOR > vcpu->vc_intr = vip->vip_intr; > ci = READ_ONCE(vcpu->vc_curcpu); > if (ci != NULL) > x86_send_ipi(ci, X86_IPI_NOP); > +#endif > > refcnt_rele_wake(&vcpu->vc_refcnt); > out: > >