qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug
@ 2011-09-09  9:00 Amit Shah
  2011-09-09  9:00 ` [Qemu-devel] [PATCH 2/2] virtio-balloon: Disassociate from the balloon handlers " Amit Shah
  2011-09-09 18:35 ` [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device " Anthony Liguori
  0 siblings, 2 replies; 3+ messages in thread
From: Amit Shah @ 2011-09-09  9:00 UTC (permalink / raw)
  To: qemu list; +Cc: Amit Shah, Markus Armbruster

When a balloon device gets unplugged, allow the balloon handlers to be
freed.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
 balloon.c |   10 ++++++++++
 balloon.h |    1 +
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/balloon.c b/balloon.c
index f56fdc1..a2133db 100644
--- a/balloon.c
+++ b/balloon.c
@@ -52,6 +52,16 @@ int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
     return 0;
 }
 
+void qemu_remove_balloon_handler(void *opaque)
+{
+    if (balloon_opaque != opaque) {
+        return;
+    }
+    balloon_event_fn = NULL;
+    balloon_stat_fn = NULL;
+    balloon_opaque = NULL;
+}
+
 static int qemu_balloon(ram_addr_t target)
 {
     if (!balloon_event_fn) {
diff --git a/balloon.h b/balloon.h
index 3df14e6..f59e288 100644
--- a/balloon.h
+++ b/balloon.h
@@ -22,6 +22,7 @@ typedef void (QEMUBalloonStatus)(void *opaque, MonitorCompletion cb,
 
 int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
 			     QEMUBalloonStatus *stat_func, void *opaque);
+void qemu_remove_balloon_handler(void *opaque);
 
 void monitor_print_balloon(Monitor *mon, const QObject *data);
 int do_info_balloon(Monitor *mon, MonitorCompletion cb, void *opaque);
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH 2/2] virtio-balloon: Disassociate from the balloon handlers on unplug
  2011-09-09  9:00 [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug Amit Shah
@ 2011-09-09  9:00 ` Amit Shah
  2011-09-09 18:35 ` [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device " Anthony Liguori
  1 sibling, 0 replies; 3+ messages in thread
From: Amit Shah @ 2011-09-09  9:00 UTC (permalink / raw)
  To: qemu list; +Cc: Amit Shah, Markus Armbruster

Adding a 2nd balloon device after unplugging the first one doesn't work.
Also, the 'info balloon' command should indicate an error mentioning no
balloon device is registered after unplug.

Reproduction steps given by Shaolong Hu:

(qemu) info balloon
Device 'balloon' has not been activated by the guest
(qemu) device_add virtio-balloon-pci,id=balloon1
(qemu) info balloon
balloon: actual=4096
(qemu) balloon 2048
(qemu) info balloon
balloon: actual=2048
(qemu) device_del balloon1
(qemu) info balloon
balloon: actual=4096
(qemu) balloon 2048
(qemu) info balloon
balloon: actual=4096
(qemu) device_del balloon1
Device 'balloon1' not found
(qemu) device_add virtio-balloon-pci,id=balloon1
Another balloon device already registered
Device 'virtio-balloon-pci' could not be initialized
(qemu) device_add virtio-balloon-pci,id=balloon2
Another balloon device already registered
Device 'virtio-balloon-pci' could not be initialized

Reported-by: Shaolong Hu <shu@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
 hw/virtio-balloon.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c
index 072a88a..5f8f4bd 100644
--- a/hw/virtio-balloon.c
+++ b/hw/virtio-balloon.c
@@ -303,6 +303,8 @@ VirtIODevice *virtio_balloon_init(DeviceState *dev)
 void virtio_balloon_exit(VirtIODevice *vdev)
 {
     VirtIOBalloon *s = DO_UPCAST(VirtIOBalloon, vdev, vdev);
+
+    qemu_remove_balloon_handler(s);
     unregister_savevm(s->qdev, "virtio-balloon", s);
     virtio_cleanup(vdev);
 }
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug
  2011-09-09  9:00 [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug Amit Shah
  2011-09-09  9:00 ` [Qemu-devel] [PATCH 2/2] virtio-balloon: Disassociate from the balloon handlers " Amit Shah
@ 2011-09-09 18:35 ` Anthony Liguori
  1 sibling, 0 replies; 3+ messages in thread
From: Anthony Liguori @ 2011-09-09 18:35 UTC (permalink / raw)
  To: Amit Shah; +Cc: qemu list, Markus Armbruster

On 09/09/2011 04:00 AM, Amit Shah wrote:
> When a balloon device gets unplugged, allow the balloon handlers to be
> freed.
>
> Signed-off-by: Amit Shah<amit.shah@redhat.com>

Applied all.  Thanks.

Regards,

Anthony Liguori

> ---
>   balloon.c |   10 ++++++++++
>   balloon.h |    1 +
>   2 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/balloon.c b/balloon.c
> index f56fdc1..a2133db 100644
> --- a/balloon.c
> +++ b/balloon.c
> @@ -52,6 +52,16 @@ int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
>       return 0;
>   }
>
> +void qemu_remove_balloon_handler(void *opaque)
> +{
> +    if (balloon_opaque != opaque) {
> +        return;
> +    }
> +    balloon_event_fn = NULL;
> +    balloon_stat_fn = NULL;
> +    balloon_opaque = NULL;
> +}
> +
>   static int qemu_balloon(ram_addr_t target)
>   {
>       if (!balloon_event_fn) {
> diff --git a/balloon.h b/balloon.h
> index 3df14e6..f59e288 100644
> --- a/balloon.h
> +++ b/balloon.h
> @@ -22,6 +22,7 @@ typedef void (QEMUBalloonStatus)(void *opaque, MonitorCompletion cb,
>
>   int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
>   			     QEMUBalloonStatus *stat_func, void *opaque);
> +void qemu_remove_balloon_handler(void *opaque);
>
>   void monitor_print_balloon(Monitor *mon, const QObject *data);
>   int do_info_balloon(Monitor *mon, MonitorCompletion cb, void *opaque);

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-09-09 18:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-09  9:00 [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug Amit Shah
2011-09-09  9:00 ` [Qemu-devel] [PATCH 2/2] virtio-balloon: Disassociate from the balloon handlers " Amit Shah
2011-09-09 18:35 ` [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device " Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).