Thread (20 messages) 20 messages, 2 authors, 2011-11-17

Re: [PATCH v3 11/11] virtio: balloon: Add freeze, restore handlers to support S4

From: Amit Shah <hidden>
Date: 2011-11-17 12:29:28
Also in: lkml

On (Thu) 17 Nov 2011 [14:25:08], Michael S. Tsirkin wrote:
On Thu, Nov 17, 2011 at 05:27:42PM +0530, Amit Shah wrote:
quoted
Delete the vqs on the freeze callback to prepare for hibernation.
Re-create the vqs in the restore callback to resume normal function.

Signed-off-by: Amit Shah <redacted>
---
 drivers/virtio/virtio_balloon.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 1ff3cf4..90149d1 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -363,6 +363,22 @@ static void __devexit virtballoon_remove(struct virtio_device *vdev)
 	kfree(vb);
 }
 
+#ifdef CONFIG_PM
+static int virtballoon_freeze(struct virtio_device *vdev)
+{
+	/* Now we reset the device so we can clean up the queues. */
+	vdev->config->reset(vdev);
+
This is a weird thing to do. We normally delete vqs then reset.
No, all the drivers first reset, then delete.
For example, I don't know whether we guarantee what happens
to MSI-X vectors assigned meanwhile if you reset.
IIRC qemu doesn't use MSI-X for the balloon, but nothing
prevents it.
quoted
+	vdev->config->del_vqs(vdev);
What prevents requests being submitted at this point?
I see all kind of handling of freezing in the balloon thread ...
maybe that gives us some guarantees, but if yes
it makes sense to add a comment to point this out.
Once reset, the host won't write anything to the vqs anyway..

		Amit
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help