diff options
author | Amit Shah <amit.shah@redhat.com> | 2011-09-09 14:30:40 +0530 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-09-09 12:58:16 -0500 |
commit | 3b86b13ab07407fc8c6ac0efbd717fe51df1cad7 (patch) | |
tree | 9c5ac2837f9bfd7e1e9ca539c33a77fe3d341665 /hw | |
parent | 8a7d552cb3684570491a5ecaa8b78818404ed2fb (diff) | |
download | qemu-3b86b13ab07407fc8c6ac0efbd717fe51df1cad7.zip qemu-3b86b13ab07407fc8c6ac0efbd717fe51df1cad7.tar.gz qemu-3b86b13ab07407fc8c6ac0efbd717fe51df1cad7.tar.bz2 |
virtio-balloon: Disassociate from the balloon handlers on unplug
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>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | 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); } |