Skip to content

Commit

Permalink
Merge tag 'for-linus' of git://github.com/rustyrussell/linux
Browse files Browse the repository at this point in the history
Merge virtio pull request from Rusty Russell.

* tag 'for-linus' of git://github.com/rustyrussell/linux:
  virtio: balloon: leak / fill balloon across S4
  • Loading branch information
Linus Torvalds committed Feb 29, 2012
2 parents c5f2ac9 + 4eb05d5 commit d7e5392
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions drivers/virtio/virtio_balloon.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,42 +367,53 @@ static void __devexit virtballoon_remove(struct virtio_device *vdev)
#ifdef CONFIG_PM
static int virtballoon_freeze(struct virtio_device *vdev)
{
struct virtio_balloon *vb = vdev->priv;

/*
* The kthread is already frozen by the PM core before this
* function is called.
*/

while (vb->num_pages)
leak_balloon(vb, vb->num_pages);
update_balloon_size(vb);

/* Ensure we don't get any more requests from the host */
vdev->config->reset(vdev);
vdev->config->del_vqs(vdev);
return 0;
}

static int restore_common(struct virtio_device *vdev)
{
struct virtio_balloon *vb = vdev->priv;
int ret;

ret = init_vqs(vdev->priv);
if (ret)
return ret;

fill_balloon(vb, towards_target(vb));
update_balloon_size(vb);
return 0;
}

static int virtballoon_thaw(struct virtio_device *vdev)
{
return init_vqs(vdev->priv);
return restore_common(vdev);
}

static int virtballoon_restore(struct virtio_device *vdev)
{
struct virtio_balloon *vb = vdev->priv;
struct page *page, *page2;

/* We're starting from a clean slate */
vb->num_pages = 0;

/*
* If a request wasn't complete at the time of freezing, this
* could have been set.
*/
vb->need_stats_update = 0;

/* We don't have these pages in the balloon anymore! */
list_for_each_entry_safe(page, page2, &vb->pages, lru) {
list_del(&page->lru);
totalram_pages++;
}
return init_vqs(vdev->priv);
return restore_common(vdev);
}
#endif

Expand Down

0 comments on commit d7e5392

Please sign in to comment.