From 7d4c3d535c6f33e1d6d158aaf2108a27b45d743d Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 26 Jun 2009 19:15:14 +0200 Subject: [PATCH] Replace -no-virtio-balloon by -balloon We want to do (at least) two things to the virtio-balloon device: suppress it, and control its PCI address. Option -no-virtio-balloon lets us do only the former. To get the latter, replace -no-virtio-balloon with -balloon none disable balloon device -balloon virtio[,addr=str] enable virtio balloon device (default) Syntax suggested by Anthony Liguori. Signed-off-by: Markus Armbruster Signed-off-by: Anthony Liguori --- hw/pc.c | 5 +++-- qemu-options.hx | 13 +++++++++---- sysemu.h | 3 ++- vl.c | 33 ++++++++++++++++++++++++++++++--- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index f02a2b5799..553ba5c84e 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1408,8 +1408,9 @@ static void pc_init1(ram_addr_t ram_size, } /* Add virtio balloon device */ - if (pci_enabled && !no_virtio_balloon) { - pci_create_simple(pci_bus, -1, "virtio-balloon-pci"); + if (pci_enabled && virtio_balloon) { + pci_dev = pci_create("virtio-balloon-pci", virtio_balloon_devaddr); + qdev_init(&pci_dev->qdev); } /* Add virtio console devices */ diff --git a/qemu-options.hx b/qemu-options.hx index dc54115e52..a94f9d38aa 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -684,12 +684,17 @@ Disable HPET support. ETEXI #ifdef TARGET_I386 -DEF("no-virtio-balloon", 0, QEMU_OPTION_no_virtio_balloon, - "-no-virtio-balloon disable virtio balloon device\n") +DEF("balloon", HAS_ARG, QEMU_OPTION_balloon, + "-balloon none disable balloon device\n" + "-balloon virtio[,addr=str]\n" + " enable virtio balloon device (default)\n") #endif STEXI -@item -no-virtio-balloon -Disable virtio-balloon device. +@item -balloon none +Disable balloon device. +@item -balloon virtio[,addr=@var{addr}] +Enable virtio balloon device (default), optionally with PCI address +@var{addr}. ETEXI #ifdef TARGET_I386 diff --git a/sysemu.h b/sysemu.h index 8744347f28..06dc4c6868 100644 --- a/sysemu.h +++ b/sysemu.h @@ -116,7 +116,8 @@ extern int win2k_install_hack; extern int rtc_td_hack; extern int alt_grab; extern int usb_enabled; -extern int no_virtio_balloon; +extern int virtio_balloon; +extern const char *virtio_balloon_devaddr; extern int smp_cpus; extern int cursor_hide; extern int graphic_rotate; diff --git a/vl.c b/vl.c index 9d1fe87f44..7b7489c7ce 100644 --- a/vl.c +++ b/vl.c @@ -242,7 +242,8 @@ int smp_cpus = 1; const char *vnc_display; int acpi_enabled = 1; int no_hpet = 0; -int no_virtio_balloon = 0; +int virtio_balloon = 1; +const char *virtio_balloon_devaddr; int fd_bootchk = 1; int no_reboot = 0; int no_shutdown = 0; @@ -4762,6 +4763,29 @@ static void select_vgahw (const char *p) } } +#ifdef TARGET_I386 +static int balloon_parse(const char *arg) +{ + char buf[128]; + const char *p; + + if (!strcmp(arg, "none")) { + virtio_balloon = 0; + } else if (!strncmp(arg, "virtio", 6)) { + virtio_balloon = 1; + if (arg[6] == ',') { + p = arg + 7; + if (get_param_value(buf, sizeof(buf), "addr", p)) { + virtio_balloon_devaddr = strdup(buf); + } + } + } else { + return -1; + } + return 0; +} +#endif + #ifdef _WIN32 static BOOL WINAPI qemu_ctrl_handler(DWORD type) { @@ -5578,8 +5602,11 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_no_hpet: no_hpet = 1; break; - case QEMU_OPTION_no_virtio_balloon: - no_virtio_balloon = 1; + case QEMU_OPTION_balloon: + if (balloon_parse(optarg) < 0) { + fprintf(stderr, "Unknown -balloon argument %s\n", optarg); + exit(1); + } break; #endif case QEMU_OPTION_no_reboot: -- GitLab