Skip to content

Commit

Permalink
xen: suspend: refactor non-arch specific pre/post suspend hooks
Browse files Browse the repository at this point in the history
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  • Loading branch information
Ian Campbell authored and Stefano Stabellini committed Feb 25, 2011
1 parent 03c8142 commit 82043bb
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions drivers/xen/manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,23 @@ struct suspend_info {
unsigned long arg; /* extra hypercall argument */
};

static void xen_hvm_post_suspend(void)
{
gnttab_resume();
}

static void xen_pre_suspend(void)
{
xen_mm_pin_all();
gnttab_suspend();
}

static void xen_post_suspend(void)
{
gnttab_resume();
xen_mm_unpin_all();
}

#ifdef CONFIG_PM_SLEEP
static int xen_hvm_suspend(void *data)
{
Expand All @@ -62,7 +79,7 @@ static int xen_hvm_suspend(void *data)
si->cancelled = HYPERVISOR_suspend(si->arg);

xen_arch_hvm_post_suspend(si->cancelled);
gnttab_resume();
xen_hvm_post_suspend();

if (!si->cancelled) {
xen_irq_resume();
Expand All @@ -89,8 +106,7 @@ static int xen_suspend(void *data)
return err;
}

xen_mm_pin_all();
gnttab_suspend();
xen_pre_suspend();
xen_arch_pre_suspend();

/*
Expand All @@ -101,8 +117,7 @@ static int xen_suspend(void *data)
si->cancelled = HYPERVISOR_suspend(si->arg);

xen_arch_post_suspend(si->cancelled);
gnttab_resume();
xen_mm_unpin_all();
xen_post_suspend();

if (!si->cancelled) {
xen_irq_resume();
Expand Down

0 comments on commit 82043bb

Please sign in to comment.