On Mon, Oct 22, 2012 at 02:25:43PM +0100, Stefano Stabellini wrote:
> On Sat, 20 Oct 2012, Konrad Rzeszutek Wilk wrote:
> > From: Mukesh Rathor <mukesh.rat...@oracle.com>
> > 
> > For balloon changes we skip setting of local P2M as it's updated
> > in Xen. For grant, the shared grant frame is the pfn and not mfn,
> > hence its mapped via the same code path as HVM.
> > 
> > Signed-off-by: Mukesh Rathor <mukesh.rat...@oracle.com>
> > Signed-off-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
> > ---
> >  drivers/xen/balloon.c     |   15 +++++++++------
> >  drivers/xen/gntdev.c      |    3 ++-
> >  drivers/xen/grant-table.c |   26 ++++++++++++++++++++++----
> >  3 files changed, 33 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> > index 31ab82f..c825b63 100644
> > --- a/drivers/xen/balloon.c
> > +++ b/drivers/xen/balloon.c
> > @@ -361,7 +361,9 @@ static enum bp_state increase_reservation(unsigned long 
> > nr_pages)
> >             set_phys_to_machine(pfn, frame_list[i]);
> >  
> >             /* Link back into the page tables if not highmem. */
> > -           if (xen_pv_domain() && !PageHighMem(page)) {
> > +           if (xen_pv_domain() && !PageHighMem(page) &&
> > +               !xen_feature(XENFEAT_auto_translated_physmap)) {

This could be done as:

        if ((xen_pv_domain() && !PageHighMem(page) && 
!xen_feature(XENFEAT_auto_translated_physmap))

Just to make it more easier to read.

> > +
> >                     int ret;
> >                     ret = HYPERVISOR_update_va_mapping(
> >                             (unsigned long)__va(pfn << PAGE_SHIFT),
> > @@ -418,12 +420,13 @@ static enum bp_state decrease_reservation(unsigned 
> > long nr_pages, gfp_t gfp)
> >             scrub_page(page);
> >  
> >             if (xen_pv_domain() && !PageHighMem(page)) {
> > -                   ret = HYPERVISOR_update_va_mapping(
> > -                           (unsigned long)__va(pfn << PAGE_SHIFT),
> > -                           __pte_ma(0), 0);
> > -                   BUG_ON(ret);
> > +                   if (!xen_feature(XENFEAT_auto_translated_physmap)) {
> > +                           ret = HYPERVISOR_update_va_mapping(
> > +                                   (unsigned long)__va(pfn << PAGE_SHIFT),
> > +                                   __pte_ma(0), 0);
> > +                           BUG_ON(ret);
> > +                   }
> >             }
> 
> this change, unlike the one before, actually makes things different for
> traditional pv domains in case PageHighMem(page).

How? He is not altering the !PageHighMem check. Just adding a check
before the hypercall to render it nop on PVH.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to