From 894d00a1da6f2b4d0b06fbe62598c3d3fadb82c9 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Wed, 5 Sep 2012 10:31:53 +0200 Subject: [PATCH] kvm tools: virtio-bln init/exit Make the init/exit of virtio-balloon self-contained, so the global init code won't need to check if it was selected or not. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- tools/kvm/builtin-run.c | 11 +++++++++-- tools/kvm/include/kvm/virtio-balloon.h | 3 ++- tools/kvm/virtio/balloon.c | 12 +++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c index 906d7134ccfb..236078aeda32 100644 --- a/tools/kvm/builtin-run.c +++ b/tools/kvm/builtin-run.c @@ -1136,8 +1136,11 @@ static int kvm_cmd_run_init(int argc, const char **argv) goto fail; } - if (kvm->cfg.balloon) - virtio_bln__init(kvm); + r = virtio_bln__init(kvm); + if (r < 0) { + pr_err("virtio_rng__init() failed with error %d\n", r); + goto fail; + } if (!kvm->cfg.network) kvm->cfg.network = DEFAULT_NETWORK; @@ -1287,6 +1290,10 @@ static void kvm_cmd_run_exit(int guest_ret) if (r < 0) pr_warning("virtio_rng__exit() failed with error %d\n", r); + r = virtio_bln__exit(kvm); + if (r < 0) + pr_warning("virtio_bln__exit() failed with error %d\n", r); + r = virtio_console__exit(kvm); if (r < 0) pr_warning("virtio_console__exit() failed with error %d\n", r); diff --git a/tools/kvm/include/kvm/virtio-balloon.h b/tools/kvm/include/kvm/virtio-balloon.h index eb49fd48344f..844a1bab7e41 100644 --- a/tools/kvm/include/kvm/virtio-balloon.h +++ b/tools/kvm/include/kvm/virtio-balloon.h @@ -3,6 +3,7 @@ struct kvm; -void virtio_bln__init(struct kvm *kvm); +int virtio_bln__init(struct kvm *kvm); +int virtio_bln__exit(struct kvm *kvm); #endif /* KVM__BLN_VIRTIO_H */ diff --git a/tools/kvm/virtio/balloon.c b/tools/kvm/virtio/balloon.c index ea64fd4ba0df..07852d7c2142 100644 --- a/tools/kvm/virtio/balloon.c +++ b/tools/kvm/virtio/balloon.c @@ -243,8 +243,11 @@ struct virtio_ops bln_dev_virtio_ops = (struct virtio_ops) { .get_size_vq = get_size_vq, }; -void virtio_bln__init(struct kvm *kvm) +int virtio_bln__init(struct kvm *kvm) { + if (!kvm->cfg.balloon) + return 0; + kvm_ipc__register_handler(KVM_IPC_BALLOON, handle_mem); kvm_ipc__register_handler(KVM_IPC_STAT, virtio_bln__print_stats); @@ -256,4 +259,11 @@ void virtio_bln__init(struct kvm *kvm) if (compat_id == -1) compat_id = virtio_compat_add_message("virtio-balloon", "CONFIG_VIRTIO_BALLOON"); + + return 0; +} + +int virtio_bln__exit(struct kvm *kvm) +{ + return 0; } -- 2.39.5