On Sat, Oct 30, 2021 at 02:25:44PM +0200, Peter J. Philipp wrote: > Hi, > > I'm a little confused by this. I have an old Xeon e3-1275v3 computer that > runs windows server 2019 essentials natively. It shares half it's RAM and > 2 cores with OpenBSD as a hyper-v guest. > > So after a long time of not looking into this I asked someone how they did > virtualization nesting and I got this link: > > https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization > > So this is good, I thought, I followed the instructions, turned off the > hyper-v, > did the powershell command, restarted hyper-v guest and got some indication by > OpenBSD that vmm is enabled: > > arda$ dmesg | grep vmm > cpu0: using VERW MDS workaround (except on vmm entry) > vmm0 at mainbus0: VMX/EPT > > Only when I start the vmm guest with vmctl and vmctl console, it boots me out > of console mode back into arda and the vmm guest is stopped. > > So then I rebooted the entire machine to make sure that all BIOS settings are > correct. And they are. There is no CPU option that I can set here that would > disallow this nesting. > > Here is the CPU options of arda (short of a dmesg): > > cpu0: using VERW MDS workaround (except on vmm entry) > cpu0 at mainbus0: apid 0 (boot processor) > cpu0: Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz, 3498.01 MHz, 06-3c-03 > cpu0: > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SS,HTT,SSE3,PCLMUL,VMX,SSSE3,FMA3,CX16,PCID,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,XSAVEOPT,MELTDOWN > cpu0: 256KB 64b/line 8-way L2 cache > cpu0: smt 0, core 0, package 0 > cpu0: apic clock running at 200MHz > cpu1 at mainbus0: apid 1 (application processor) > cpu1: Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz, 3497.99 MHz, 06-3c-03 > cpu1: > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SS,HTT,SSE3,PCLMUL,VMX,SSSE3,FMA3,CX16,PCID,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,XSAVEOPT,MELTDOWN > cpu1: 256KB 64b/line 8-way L2 cache > cpu1: smt 0, core 1, package 0 > cpu0: using VERW MDS workaround (except on vmm entry) > > Does anyone know how I can get vmm with nesting to function? Is it a OpenBSD > problem or should I seek elsewhere? > > Best Regards, > -peter >
I told Microsoft years ago that their implementation of legacy event injection was broken. This is how we inject interrupts in vmm(4). They either didn't understand, or didn't care. Since hyper-v doesn't deliver our injected event, no interrupts are delivered to the VM and as soon as interrupts are enabled in autoconf, you hang. Note: KVM and VMware do it correctly. -ml

