qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions about the real mode in kvm/qemu


From: Maxim Levitsky
Subject: Re: Questions about the real mode in kvm/qemu
Date: Thu, 26 Sep 2019 11:31:32 +0300

On Thu, 2019-09-26 at 15:52 +0800, Li Qiang wrote:
> Hi Paolo and all,
> 
> There are some question about the emulation for real mode in kvm/qemu. For 
> all the 
> question I suppose the 'unstrict guest' is not enabled. 
> 
> 1. how the protected mode CPU emulate the real mode? It seems it uses vm86, 
> however, vm86 is not available in x86_64 CPU? So what's the 
> 'to_vmx(vcpu)->rmode.vm86_active' here vm86 means?
> 

As far as I know it, modern intel's cpus support so called unrestricted guest 
mode, which allows guest to be basically in any mode,
as long as EPT paging is used (that is guest can be in real mode with
no paging, but EPT has to be enabled).
The 'vm86_active' is probably lefover support for cpus that don't support EPT 
and/or the unrestricted guest mode,
where KVM tried to use the good old vm86 mode to
for real mode virtualization.


> 2. Does the guest's real mode code run directly in native CPU? It seems 
> 'vmx->emulation_required' is also be false, it the vmx_vcpu_run will do a 
> switch to guest.

Same as above

> 
> 3. How the EPT work in guest real mode? The EPT is for GVA->GPA->HPA, however 
> there is no GVA, seems the identity mapping does something. But there also 
> some confusion for me. For example the real
> mode uses CS*4 + IP to address the code.  Who does this calculation? In the 
> kernel emulator? 

EPT sits underneath the guest's paging mode, which in case of real mode is 1:1 
mapping.
Thus CS<<4 + IP would be the guest physical address and it will be looked up in 
the EPT to translate to the real physical address.



Best regards,
        Maxim Levitsky




reply via email to

[Prev in Thread] Current Thread [Next in Thread]