vmm(4)/vmx: update host cr3, invept on cpu migration.
authordv <dv@openbsd.org>
Sun, 14 Jul 2024 07:57:42 +0000 (07:57 +0000)
committerdv <dv@openbsd.org>
Sun, 14 Jul 2024 07:57:42 +0000 (07:57 +0000)
commit46cd802afa2fbee4457700bcc55d42ee69edcd3d
tree76ce72ed0b9d693e47742269e104e028364b9f22
parent38b547d006ac13fb766c04113ad553880264b31a
vmm(4)/vmx: update host cr3, invept on cpu migration.

Since vmm handles nested page faults in the vcpu run loop, trying
to avoid trips back to userland, it's possible for the thread to
move host cpus. vmm(4) already updates some local cpu state when
this happens, but also needs to update the host cr3 in the vmcs to
allow vmx to restore the proper cr3 value on the next vm exit.

Additionally, we should be flushing the ept cache on the new cpu.
If the single context flush is available, use that instead of the
global flush.

ok mlarkin@
sys/arch/amd64/amd64/vmm_machdep.c
sys/arch/amd64/include/specialreg.h
sys/arch/amd64/include/vmmvar.h