From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MPEFl-0002so-Br for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MPEFW-0002Vx-40 for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:46 -0400 Received: from [199.232.76.173] (port=37958 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPEFV-0002VP-Kj for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:41 -0400 Received: from mx2.redhat.com ([66.187.237.31]:38373) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MPEFU-0005e8-VM for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:41 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6ABQeES030049 for ; Fri, 10 Jul 2009 07:26:40 -0400 From: Gerd Hoffmann Date: Fri, 10 Jul 2009 13:26:17 +0200 Message-Id: <1247225179-5495-12-git-send-email-kraxel@redhat.com> In-Reply-To: <1247225179-5495-1-git-send-email-kraxel@redhat.com> References: <1247225179-5495-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 11/13] switch balloon initialization to -device. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann 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 --- hw/pc.c | 6 ----- sysemu.h | 2 - vl.c | 65 +++++++++++++++++++++++++++++++++++++------------------------ 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 2b89356..ccd2fed 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1407,12 +1407,6 @@ static void pc_init1(ram_addr_t ram_size, } } - /* Add virtio balloon device */ - if (pci_enabled && virtio_balloon) { - qdev = pci_create("virtio-balloon-pci", virtio_balloon_devaddr); - qdev_init(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 06dc4c6..9a83bfe 100644 --- a/sysemu.h +++ b/sysemu.h @@ -116,8 +116,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 cursor_hide; extern int graphic_rotate; diff --git a/vl.c b/vl.c index dddceef..cdc7b8a 100644 --- a/vl.c +++ b/vl.c @@ -223,8 +223,6 @@ int smp_cpus = 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; @@ -4550,29 +4548,6 @@ 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) { @@ -4778,6 +4753,24 @@ static void add_device_config(int type, const char *cmdline) TAILQ_INSERT_TAIL(&device_configs, conf, next); } +#ifdef TARGET_I386 +static void add_device_config_params(int type, const char *driver, + const char *params) +{ + char *buf; + size_t len,pos; + + len = strlen(driver) + 1; + if (params) + len += strlen(params) + 1; + buf = qemu_mallocz(len); + pos = snprintf(buf, len, "%s", driver); + if (params) + pos += snprintf(buf+pos, len-pos, ",%s", params); + add_device_config(type, buf); +} +#endif + static int foreach_device_config(int type, int (*func)(const char *cmdline)) { struct device_config *conf; @@ -4803,6 +4796,26 @@ static int generic_parse(const char *cmdline) return 0; } +#ifdef TARGET_I386 +static int add_device_balloon(const char *arg) +{ + const char *name = NULL, *params = NULL; + + if (!strcmp(arg, "none")) + return 0; + if (!strncmp(arg, "virtio", 6)) { + name = "virtio-balloon-pci"; + if (arg[6] == ',') + params = arg+7; + } + if (!name) + return -1; + + add_device_config_params(DEV_GENERIC, name, params); + return 0; +} +#endif + int main(int argc, char **argv, char **envp) { const char *gdbstub_dev = NULL; @@ -5423,7 +5436,7 @@ int main(int argc, char **argv, char **envp) no_hpet = 1; break; case QEMU_OPTION_balloon: - if (balloon_parse(optarg) < 0) { + if (add_device_balloon(optarg) < 0) { fprintf(stderr, "Unknown -balloon argument %s\n", optarg); exit(1); } -- 1.6.2.5