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 <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Markus Armbruster 2009-06-26 19:15:14 +02:00 committed by Anthony Liguori
parent 74efd61a75
commit 7d4c3d535c
4 changed files with 44 additions and 10 deletions

View File

@ -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 */

View File

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

View File

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

33
vl.c
View File

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