From 7a90f21655aedc35cf711264498ebb4a1b783c8a Mon Sep 17 00:00:00 2001 From: Adam Litke Date: Wed, 6 Jan 2010 18:01:51 +0100 Subject: [PATCH] qemu: Always enable the virtio balloon driver The behavior for the qemu balloon device has changed. Formerly, a virtio balloon device was provided by default. Now, '-balloon virtio' must be specified on the command line to enable it. This patch causes libvirt to add '-balloon virtio' to the command line whenever the -balloon option is available. * src/qemu/qemu_conf.c src/qemu/qemu_conf.h: check for the new flag and add "-baloon vitio" to qemu command when needed * tests/qemuhelptest.c: add the new flag for detection --- src/qemu/qemu_conf.c | 10 ++++++++++ src/qemu/qemu_conf.h | 1 + tests/qemuhelptest.c | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f53c1f722f..824055f3ca 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1113,6 +1113,8 @@ static unsigned int qemudComputeCmdFlags(const char *help, flags |= QEMUD_CMD_FLAG_MEM_PATH; if (strstr(help, "-chardev")) flags |= QEMUD_CMD_FLAG_CHARDEV; + if (strstr(help, "-balloon")) + flags |= QEMUD_CMD_FLAG_BALLOON; if (version >= 9000) flags |= QEMUD_CMD_FLAG_VNC_COLON; @@ -2888,6 +2890,14 @@ int qemudBuildCommandLine(virConnectPtr conn, ADD_ARG_LIT(migrateFrom); } + /* QEMU changed its default behavior to not include the virtio balloon + * device. Explicitly request it to ensure it will be present. + */ + if (qemuCmdFlags & QEMUD_CMD_FLAG_BALLOON) { + ADD_ARG_LIT("-balloon"); + ADD_ARG_LIT("virtio"); + } + ADD_ARG(NULL); ADD_ENV(NULL); diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 209cd31050..82254ca584 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -77,6 +77,7 @@ enum qemud_cmd_flags { QEMUD_CMD_FLAG_CHARDEV = (1 << 22), /* Is the new -chardev arg available */ QEMUD_CMD_FLAG_ENABLE_KVM = (1 << 23), /* Is the -enable-kvm flag available to "enable KVM full virtualization support" */ QEMUD_CMD_FLAG_MONITOR_JSON = (1 << 24), /* JSON mode for monitor */ + QEMUD_CMD_FLAG_BALLOON = (1 << 25), /* -balloon available */ }; /* Main driver state */ diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index a747da7405..0a78b05082 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -179,7 +179,8 @@ mymain(int argc, char **argv) QEMUD_CMD_FLAG_0_10 | QEMUD_CMD_FLAG_PCIDEVICE | QEMUD_CMD_FLAG_MEM_PATH | - QEMUD_CMD_FLAG_ENABLE_KVM, + QEMUD_CMD_FLAG_ENABLE_KVM | + QEMUD_CMD_FLAG_BALLOON, 10092, 1, 0); return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; -- 2.47.2