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=<tag>.
 - 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 <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Gerd Hoffmann 2009-08-14 10:34:22 +02:00 committed by Anthony Liguori
parent 59f2a78793
commit 382f074371
3 changed files with 19 additions and 26 deletions

View File

@ -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++) {

View File

@ -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;

36
vl.c
View File

@ -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);
}
}
} else {
return -1;
}
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);
}
qemu_opt_set(opts, "driver", "virtio-balloon-pci");
return 0;
}
return -1;
}
#endif