From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MMJab-0003BT-DE for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MMJaV-000353-5j for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:24 -0400 Received: from [199.232.76.173] (port=36451 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MMJaU-00034d-SC for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:18 -0400 Received: from mx2.redhat.com ([66.187.237.31]:34411) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MMJaU-00007V-7F for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:18 -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 n62AWHd9005921 for ; Thu, 2 Jul 2009 06:32:17 -0400 From: Gerd Hoffmann Date: Thu, 2 Jul 2009 12:32:11 +0200 Message-Id: <1246530731-18828-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1246530731-18828-1-git-send-email-kraxel@redhat.com> References: <1246530731-18828-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 2/2] 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 f62a6b8..2d06cdf 100644 --- a/vl.c +++ b/vl.c @@ -236,8 +236,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; @@ -4680,29 +4678,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) { @@ -4908,6 +4883,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; @@ -4933,6 +4926,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; @@ -5553,7 +5566,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