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: Li Qiang
Subject: Re: Questions about the real mode in kvm/qemu
Date: Thu, 26 Sep 2019 16:52:59 +0800



Maxim Levitsky <address@hidden> 于2019年9月26日周四 下午4:31写道:
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?
>


Hi Maxim,

Thanks for your kind reply.

 
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,

Right, but I also want to know the secret when the 'unstrict guest' is disabled. So I suppose the 'unstrict guest' is  not enabled for these questions.
 
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.

It seems when the 'unstrict guest' is enabled, there is no identity mapping table.

Thanks,
Li Qiang

 
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]