|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 08/10] xen/balloon: implement migratepage
On Wed, 2014-10-15 at 17:16 +0100, David Vrabel wrote:
> On 15/10/14 16:54, Wei Liu wrote:
> > This patch replaces the xen_balloon_migratepage stub with actual
> > implementation.
> >
> > It's implemented in two macro steps:
> > 1. populate old page with machine page and remove it from balloon driver
> > 2. give up machine page that backs new page and queue it to balloon
> > driver
> >
> > Old page is the page owned by balloon driver, new page is a page
> > isolated by core mm compaction thread.
> >
> > The aforementioned steps swaps a ballooned out page with a usable page.
> > From guest's point of view, it de-fragments physical address space.
> >
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> > ---
> > drivers/xen/balloon.c | 94
> > +++++++++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 92 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> > index 815e1d5..112190e 100644
> > --- a/drivers/xen/balloon.c
> > +++ b/drivers/xen/balloon.c
> > @@ -727,13 +727,103 @@ static struct notifier_block balloon_cpu_notifier = {
> >
> > static const struct address_space_operations xen_balloon_aops;
> > #ifdef CONFIG_BALLOON_COMPACTION
> > +/*
> > + * xen_balloon_migratepage - perform the balloon page migration on behalf
> > of
> > + * a compation thread. (called under page
> > lock)
> > + * @mapping: the page->mapping which will be assigned to the new migrated
> > page
> > + * @newpage: page that will replace the isolated page after migration
> > finishes
> > + * @page : the isolated (old) page that is about to be migrated to
> > newpage.
> > + * @mode : compaction mode -- not used for balloon page migration.
> > + *
> > + * After a ballooned page gets isolated by compaction procedures, this
> > + * is the function that performs the page migration on behalf of a
> > + * compaction thread. The page migration for Xen balloon is done in
> > + * these two macro steps:
> > + *
> > + * A. back @page with machine page
> > + * B. release machine that backs @newpage
>
> If the target if enforced and the guest is above the target. This
> prevent any compaction. You need an atomic swap operation.
XENMEM_exchange ought to be usable here I think.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |