First, I successfully hyperjack the APs before booting the OS by sending my own INIT and SIPI signals and the APs successfully jump to a simple reset-vector. Then the vector sets up a valid GDT and eventually transitions into long-mode where the hyperjacking takes place successfully (vmlaunch succeeds) and the AP is halted with interrupts disabled.
When I try to boot Windows or Ubuntu on the BSP (with overall 2 cores), the halted AP receives the INIT signal as my vm-exit handler is being invoked there. Then I set the AP activity state to the wait-for-sipi state as required by the Intel SDM.
My BSP continues receiving various vm-exits until the AP finally receives the SIPI from the OS in a vm-exit, at that point VMWare Workstation crashes with the following message:
There's no further information regarding this assert in the generated vmware.log (with full logging enabled), and I've tried several steps including going through the guest-state and host-state checks performed by VMX (Vol 3B 26.2-26.3) to no avail, as the checks all look fine.
Perhaps I'm demonstrating some basic misunderstanding, because it seems that the state of the AP during the SIPI is invalid (and perhaps specifically because of descriptor tables? i.e `dt.h`).
Is there an Intel guideline that i'm missing or is this a pure VMware problem?