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 <levinsasha928@xxxxxxxxx> --- 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 ed7babc..ec61696 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 eb49fd4..844a1ba 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 ea64fd4..07852d7 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; } -- 1.7.12 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html