From 382f074371f7dc32a34c944c845b1698e83d8c36 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 14 Aug 2009 10:34:22 +0200 Subject: [PATCH] switch balloon initialization to -device. With that patch applied "-balloon virtio,args" becomes a shortcut for "-device virtio-balloon-pci,args". Side effects: - ballon device gains support for id=. - ballon device is off by default now. - initialization order changes, which may in different pci slot assignment depending on the VM configuration. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- hw/pc.c | 7 ------- sysemu.h | 2 -- vl.c | 34 ++++++++++++++++++---------------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 77ad8a1..32713b4 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1123,7 +1123,6 @@ static void pc_init1(ram_addr_t ram_size, ram_addr_t below_4g_mem_size, above_4g_mem_size = 0; int bios_size, isa_bios_size, oprom_area_size; PCIBus *pci_bus; - PCIDevice *pci_dev; ISADevice *isa_dev; int piix3_devfn = -1; CPUState *env; @@ -1423,12 +1422,6 @@ static void pc_init1(ram_addr_t ram_size, } } - /* Add virtio balloon device */ - if (pci_enabled && virtio_balloon) { - pci_dev = pci_create("virtio-balloon-pci", virtio_balloon_devaddr); - qdev_init(&pci_dev->qdev); - } - /* Add virtio console devices */ if (pci_enabled) { for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { diff --git a/sysemu.h b/sysemu.h index d42fe9d..45aa8b0 100644 --- a/sysemu.h +++ b/sysemu.h @@ -125,8 +125,6 @@ extern int win2k_install_hack; extern int rtc_td_hack; extern int alt_grab; extern int usb_enabled; -extern int virtio_balloon; -extern const char *virtio_balloon_devaddr; extern int smp_cpus; extern int max_cpus; extern int cursor_hide; diff --git a/vl.c b/vl.c index cd0f907..a894285 100644 --- a/vl.c +++ b/vl.c @@ -222,8 +222,6 @@ int smp_threads = 1; const char *vnc_display; int acpi_enabled = 1; int no_hpet = 0; -int virtio_balloon = 1; -const char *virtio_balloon_devaddr; int fd_bootchk = 1; int no_reboot = 0; int no_shutdown = 0; @@ -4586,23 +4584,27 @@ static void select_vgahw (const char *p) #ifdef TARGET_I386 static int balloon_parse(const char *arg) { - char buf[128]; - const char *p; + QemuOpts *opts; - 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); - } + if (strcmp(arg, "none") == 0) { + return 0; + } + + if (!strncmp(arg, "virtio", 6)) { + if (arg[6] == ',') { + /* have params -> parse them */ + opts = qemu_opts_parse(&qemu_device_opts, arg+7, NULL); + if (!opts) + return -1; + } else { + /* create empty opts */ + opts = qemu_opts_create(&qemu_device_opts, NULL, 0); } - } else { - return -1; + qemu_opt_set(opts, "driver", "virtio-balloon-pci"); + return 0; } - return 0; + + return -1; } #endif -- 1.7.9.5