lkml.org 
[lkml]   [2012]   [Oct]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH 5/6] xen/pvh: balloon and grant changes.
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.rathor@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.rathor@oracle.com>
> > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@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.



\
 
 \ /
  Last update: 2012-10-22 19:01    [W:0.361 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site