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

Reply via email to