vmm(4): add ipi for vmclear, unlock kernel
authordv <dv@openbsd.org>
Tue, 31 Aug 2021 17:40:59 +0000 (17:40 +0000)
committerdv <dv@openbsd.org>
Tue, 31 Aug 2021 17:40:59 +0000 (17:40 +0000)
commit0a894fa656a20dcd3351d61ee4e14415e615ef83
treeece7566175489b018f9cbd76a149f3d1bf70644a
parentcb4321e8e519b38522ec6de950df3f59e9d210a0
vmm(4): add ipi for vmclear, unlock kernel

On Intel VMX hosts, when a guest migrates cpus, VMCS state needs
to be flushed to physical memory before being reloaded on the new
cpu. This diff adds a new ipi to allow a guest resuming on a new
cpu to signal to the old that it needs to vmclear.

To better surface the potential race conditions, unlock the kernel
after handling the ioctl to vmm and simplify the run loops for both
vmx and svm. This requires a new vcpu lock.

Tested by some on tech@. "go for it" @mlarkin
sys/arch/amd64/amd64/cpu.c
sys/arch/amd64/amd64/ipifuncs.c
sys/arch/amd64/amd64/vmm.c
sys/arch/amd64/include/cpu.h
sys/arch/amd64/include/intrdefs.h
sys/arch/amd64/include/vmmvar.h