After discussing how to track software interrupts with
colleagues there appears to be two methods to achieve tracking of interrupts.
My first thought is to have the user process call handler invoke an
unregistered interrupt, trap the 0xB vmexit and then inject an event (software
interrupt) which handles the call.
I am trying to inject a software interrupt into our guest 0x82. However,I
modify the vmcs.VM_ENTRY_INTR_INFO = (1<< 31) | (0 << 11) |
(4<< 8) | 0x82;
I then restart the vm and nothing happens. Currently 0x82 just invokes
vmcall as a sanity check to see if it is working.
The other option I'm thinking about is to mark the page of the IDT handler as
not present in the ept pages and when it page faults, see what's faulting, mark the page as
present and resume. It would mean more exits though.
1) Am I injecting the event incorrectly? I have read over sections
24.8.3, and 26.5 multiple times.
2) Would the second method be easier and/or more correct?
3) Is there a new processor coming with controllable software interrupt exit's
similar to AMD?