Cam Macdonell wrote: > Anthony Liguori wrote: >> Cameron Macdonell wrote: >>> Hi, >>> >>> I'm trying to understand guest virtualization at the lower levels. >>> I have a somewhat basic question: How does KVM virtualize an >>> int80 instruction from a guest? A pointer to an answer is just as >>> good as an answer itself. >>> >> >> The same thing happens as it does on normal hardware. >> >> The way VT/SVM works (at a high level), is that certain instructions >> and events check a special area called the VMCS/VMCB to determine >> whether the event should generate a vmexit which is really just a >> special type of trap. >> > > Thanks Anthony. Does an int80 from an application in the guest always > cause a vmexit (in kvm's case at least)?
No, an int80 would never generate a trap in KVM. The only way to make it generate a trap is for an int80 to trigger some other event that would generate a trap. This is what I meant by taking over the guest's IDT such that you could change the int80 handler to do a hypercall. I presume you're looking into doing a guest IDS right? Regards, Anthony Liguori > Thanks, > Cam > >> There are no hooks for interrupts 32-255 so the hardware operates as >> it normally would. If you're interested in getting a trap for int80 >> within KVM, you'll have to trap sidt/lidt and virtualize the IDT. >> You'll need to setup a fake IDT and have the int80 handler do a >> hypercall. This is complicated if the guest is using a fast-syscall >> mechanism. It may be a little challenging finding a piece of guest >> memory to take over that has a valid virtual mapping. To solve this >> in the general case, you'll need to have the guest be aware of a >> memory hole. If you can limit yourself to things like Linux and >> Windows, you can probably just rely on some memory within the BIOS >> area (both Linux and Windows always have valid mappings of the BIOS >> memory). >> >> If you need to enforce that int80s go to you, you'll need to >> write-protect this memory too. >> >> Regards, >> >> Anthony Liguori >> >>> Thanks, >>> Cam >>> >>> >>> >>> ------------------------------------------------------------------------- >>> >>> This SF.net email is sponsored by: Microsoft >>> Defy all challenges. Microsoft(R) Visual Studio 2005. >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>> _______________________________________________ >>> kvm-devel mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/kvm-devel >>> >>> > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
