Hi xen developers, I''m confused about the actual usage of the four types of frames. I can find the definition in xen/include/xen/mm.h, but would like to check my understanding is correct: 1) Is 2-stage MMU-supported (e.g., ARMv7 VE) translation auto-translated mode? Then, gpfn == gmfn. 2) Is gmfn --> mfn mapping the p2m table? 3) Paravirtualized x86 guest will have gpfn != gmfn, and it is quite hard to imagine. Could you tell me the difference between gpfn and gmfn? (for instance, when it is used) thanks always, Thomas
On 29/05/2013 02:03, "Sengul Thomas" <thomas.sengul@gmail.com> wrote:> Hi xen developers, > > I''m confused about the actual usage of the four types of frames. > I can find the definition in xen/include/xen/mm.h, but would like > to check my understanding is correct: > > 1) Is 2-stage MMU-supported (e.g., ARMv7 VE) translation > auto-translated mode? Then, gpfn == gmfn. > > 2) Is gmfn --> mfn mapping the p2m table? > > 3) Paravirtualized x86 guest will have gpfn != gmfn, and it is > quite hard to imagine. Could you tell me the difference > between gpfn and gmfn? (for instance, when it is used)There are basically two modes: gmfn==gpfn: Guest does not see real machine physical addresses. p2m is done by the hypervisor. This is like x86 HVM guests. gmfn==mfn: Guest does see real machine physical addresses. Typically the guest will have its own concept of a flat pseudophysical address space that it maps to real machine addresses with its own p2m table. This is like x86 pure PV guests. ARM7 VE does indeed support HVM for ARM, and gmfn==gpfn. -- Keir> > thanks always, > Thomas > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
On Wed, May 29, 2013 at 8:27 AM, Keir Fraser <keir.xen@gmail.com> wrote:> On 29/05/2013 02:03, "Sengul Thomas" <thomas.sengul@gmail.com> wrote: > >> Hi xen developers, >> >> I''m confused about the actual usage of the four types of frames. >> I can find the definition in xen/include/xen/mm.h, but would like >> to check my understanding is correct: >> >> 1) Is 2-stage MMU-supported (e.g., ARMv7 VE) translation >> auto-translated mode? Then, gpfn == gmfn. >> >> 2) Is gmfn --> mfn mapping the p2m table? >> >> 3) Paravirtualized x86 guest will have gpfn != gmfn, and it is >> quite hard to imagine. Could you tell me the difference >> between gpfn and gmfn? (for instance, when it is used) > > There are basically two modes: > > gmfn==gpfn: Guest does not see real machine physical addresses. p2m is done > by the hypervisor. This is like x86 HVM guests. > gmfn==mfn: Guest does see real machine physical addresses. Typically the > guest will have its own concept of a flat pseudophysical address space that > it maps to real machine addresses with its own p2m table. This is like x86 > pure PV guests. > > ARM7 VE does indeed support HVM for ARM, and gmfn==gpfn.This is just to do with the functions in that file, right? A lot of times in the Xen code "gmfn" refers to "an mfn (from Xen''s perspective) owned by the guest" -- as opposed to one owned by Xen. e.g., in xen/arch/x86/mm/shadow/multi.c, you get lines like this: gfn = guest_l1e_get_gfn(new_gl1e); gmfn = get_gfn_query_unlocked(v->domain, gfn_x(gfn), &p2mt); gfn in this case is "what the guest had in its page table", and gmfn is "the mfn corresponding to that gfn". -George