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:59:15 +0300

On Thu, 2019-09-26 at 16:52 +0800, Li Qiang wrote:
> 
> 
> 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.

If you mean to ask if there is a way to let guest access use no paging at all, 
that is access host physical addresses directly,
then indeed there is no way, since regular non 'unrestricted guest' mode 
required both protected mode and paging, and 'unrestricted guest' requires
EPT.
Academically speaking it is of course possible to create paging tables that are 
1:1...


Best regards,
        Maxim Levitsky




reply via email to

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