NOVA, NUL, snapshotting

Julian Stecklina jsteckli at os.inf.tu-dresden.de
Sun Aug 25 07:57:04 CEST 2013





"Sartakov A. Vasily" <sartakov at ksyslabs.org> schrieb:
>
>23.08.2013, в 15:23, Udo Steinberg <udo at hypervisor.org> написал(а):
>
>> On Fri, 23 Aug 2013 15:13:35 +0400 Sartakov A. Vasily (SAV) wrote:
>> 
>> SAV> Could you please describe how to get access to a context of
>virtual machine? 
>> SAV> How can I modify context of virtual machine from Vancouver? 
>> SAV> When system switches into Vancouver, for example by pressing a
>special keyboard key, where is stored context of VM? in allocated VMCB?
>Can I read and modify its from Vancouver?
>> 
>> If you look at git/nul/vancouver/apps/vancouver/vancouver.cc you'll
>see
>> functions like:
>> 
>> VM_FUNC(PT_VMX + 31,  vmx_rdmsr, MTD_RIP_LEN | MTD_GPR_ACDB | MTD_TSC
>| MTD_SYSENTER | MTD_STATE,
>>    handle_vcpu(pid, true, CpuMessage::TYPE_RDMSR, tls, utcb);)
>> 
>> This is the handler for VMX portal 31, which handles emulation of the
>RDMSR
>> instruction (see NOVA specification Section 7.2 for a list of
>intercepts).
>> The portal is configured to transfer a subset of the architectural
>state
>> according to the MTD bits (see Section 7.4). The hypervisor stores
>the
>> requested state into the UTCB, where the VMM can read and modify it.
>Section
>> 7.3 shows the layout of the UTCB with all the state fields.
>> 
>
>Thanks, now it is clear: NOVA can intercept commands from guest
>machine, then call VM functions via portal with saved state in UTCB. 
>
>I do not understand several things about messaging: 
>
>I see several reply functions and I know where they are called.
>for example:
>
>sigma0.cc, +1659: 
>case MessageConsole::TYPE_START:
>
>And I see, that this message is send from function
>handle_console_switching
>
>hostvga.cc, +179:
>by calling msg1(MessageConsole::TYPE_START,  num -1);
>
>I hit a key, a key is processed by host driver, driver decides that
>this is a command for VM switching, host driver sends message to
>sigma0, sigma0 does something. 
>
>What about other commands, like MessageHostOp::OP_GET_MODULE? I see
>that all modules has a handler for this message, but I do not see who
>and how call them. 

This command is used by the vbios for Multiboot support. Check executor/vbios_multiboot.cc.

HTH, Julian

-- 
Sent from my phone. Please excuse my brevity.




More information about the l4-hackers mailing list