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

Re: [Xen-devel] Identifying pagetype in they hypervisor

Hi Mike,

On Monday 25 August 2008 03:01:05 Mike Sun wrote:
> Thanks Mark.  That's what I think I'm looking for.
> I think I've managed to confuse myself a bit again (haven't touched
> the modifications I made to the shadow code in a while) with the
> gmfn/mfn naming in the shadow code.  In _sh_propagate(...,
> target_fmn,..) and _sh_mark_dirty(..., gmfn), I'm assuming that a real
> machine frame number is passed to those functions, not a
> pseudo-physical one... am I correct?

The shadow code isn't something I'm familiar with, except conceptually.  My 
understanding of the naming was that:

mfn = real machine frame number
gmfn = machine frame number as seen by the guest
gpfn = pseudo-physical frame number as seen by the guest

For HVM, we have gmfn == gpfn
and mfn is translated to gmfn by shadow-related code

For PV (assuming we're not doing shadow_translate) we have mfn == gmfn
and gpfn is translated to gmfn == mfn by the guest itself

Does that help at all?

> Basically, I need to be sure that when the sh_page_fault_handler()
> eventually calls _sh_propagate(), it passes the machine frame number
> of the faulting page, not the HVM guest's perceived physical address
> (gmfn/pseudo-physical).
> Thanks,
> Mike
> On Sun, Aug 24, 2008 at 9:10 PM, Mark Williamson
> <mark.williamson@xxxxxxxxxxxx> wrote:
> > I'm looking at the latest code but I would think the same code applies.
> >
> > Maybe you could try mfn_to_page() to get the struct page_info * and then
> > poke about in that for the current type?  In order to make this useful
> > you'd probably have to do a get_page or similar to avoid races with other
> > CPUs.
> >
> > Cheers,
> > Mark
> >
> > On Monday 25 August 2008 01:47:19 Mike Sun wrote:
> >> Hi --
> >>
> >> I'm working off of a bit older branch, 3.1.0, but hopefully the
> >> question is still relevant.
> >>
> >> In the suspend/restore code in 'tools/libxc/xc_domain_save.c', as part
> >> of the saved record, a list of pfn_types are saved prior to the actual
> >> pages themselves.  These pfn_types are pfns with a type bits
> >> associated with them that are accessed with the XEN_DOMCTL_PFINFO_XTAB
> >> bitmask.
> >>
> >> I'm doing some copy-on-write work, and when I intercept writes in the
> >> hypervisor, I need to copy both the actual page, and the type
> >> associated with the page (so that it could later be properly written
> >> out to the save record).  I've modified the shadow page table code to
> >> handle write faults associated with CoW and am able to get the mfn of
> >> the faulting page and perform the copy; I cannot seem to find where
> >> given the mfn, I can find the page type associated with it.  Could
> >> anybody help point me to the right place or direction?
> >>
> >> Much thanks,
> >> Mike
> >>
> >> _______________________________________________
> >> Xen-devel mailing list
> >> Xen-devel@xxxxxxxxxxxxxxxxxxx
> >> http://lists.xensource.com/xen-devel

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.