[libvirt] [PATCH 0/4] qemu: add boot order support for redirected and host USB devices

Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 missed the functionality for redirected USB devices (fixed in 1/4), documentation and tests. https://bugzilla.redhat.com/show_bug.cgi?id=805414 Ján Tomko (4): conf: add support for booting from redirected USB devices docs: boot order for host and redirected USB devices tests: add boot order for host and redirected USB to qemu argv test tests: update qemuhelptest data docs/formatdomain.html.in | 27 ++- src/conf/domain_conf.c | 34 ++-- tests/qemuhelpdata/qemu-1.2.0 | 1 + tests/qemuhelpdata/qemu-1.2.0-device | 51 +++- tests/qemuhelpdata/qemu-kvm-1.2.0 | 276 ++++++++++++++++++++ tests/qemuhelpdata/qemu-kvm-1.2.0-device | 222 ++++++++++++++++ tests/qemuhelptest.c | 106 ++++++++- ...muxml2argv-hostdev-usb-address-device-boot.args | 6 + ...emuxml2argv-hostdev-usb-address-device-boot.xml | 28 ++ .../qemuxml2argv-usb-redir-boot.args | 10 + .../qemuxml2argv-usb-redir-boot.xml | 42 +++ tests/qemuxml2argvtest.c | 9 + 12 files changed, 775 insertions(+), 37 deletions(-) create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0 create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0-device create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml -- 1.7.8.6

Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 only added the QEMU capability flag, command line option and added the boot element for redirdev's in the XML schema. This patch adds support for parsing and writing the XML with redirdevs with the boot flag. It also ignores unknown XML elements in redirdev instead of failing with: "error: An error occurred, but the cause is unknown" Bug: https://bugzilla.redhat.com/show_bug.cgi?id=805414 --- src/conf/domain_conf.c | 34 +++++++++++++++++----------------- 1 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index be76c06..047c4fc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7312,11 +7312,13 @@ error: static virDomainRedirdevDefPtr virDomainRedirdevDefParseXML(const xmlNodePtr node, + virBitmapPtr bootMap, unsigned int flags) { xmlNodePtr cur; virDomainRedirdevDefPtr def; char *bus, *type = NULL; + int remaining; if (VIR_ALLOC(def) < 0) { virReportOOMError(); @@ -7348,25 +7350,20 @@ virDomainRedirdevDefParseXML(const xmlNodePtr node, } cur = node->children; - while (cur != NULL) { - if (cur->type == XML_ELEMENT_NODE) { - if (xmlStrEqual(cur->name, BAD_CAST "source")) { - int remaining; - - remaining = virDomainChrSourceDefParseXML(&def->source.chr, cur, flags, - NULL, NULL, NULL, 0); - if (remaining != 0) - goto error; - } - } - cur = cur->next; - } + /* boot gets parsed in virDomainDeviceInfoParseXML + * source gets parsed in virDomainChrSourceDefParseXML + * we don't know any of the elements that might remain */ + remaining = virDomainChrSourceDefParseXML(&def->source.chr, cur, flags, + NULL, NULL, NULL, 0); + if (remaining < 0) + goto error; if (def->source.chr.type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) { def->source.chr.data.spicevmc = VIR_DOMAIN_CHR_SPICEVMC_USBREDIR; } - if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0) + if (virDomainDeviceInfoParseXML(node, bootMap, &def->info, + flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) goto error; if (def->bus == VIR_DOMAIN_REDIRDEV_BUS_USB && @@ -7711,7 +7708,7 @@ virDomainDeviceDefPtr virDomainDeviceDefParse(virCapsPtr caps, goto error; } else if (xmlStrEqual(node->name, BAD_CAST "redirdev")) { dev->type = VIR_DOMAIN_DEVICE_REDIRDEV; - if (!(dev->data.redirdev = virDomainRedirdevDefParseXML(node, flags))) + if (!(dev->data.redirdev = virDomainRedirdevDefParseXML(node, NULL, flags))) goto error; } else { virReportError(VIR_ERR_XML_ERROR, @@ -8295,7 +8292,8 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt, if (virXPathULong("count(./devices/disk[boot]" "|./devices/interface[boot]" - "|./devices/hostdev[boot])", ctxt, &deviceBoot) < 0) { + "|./devices/hostdev[boot]" + "|./devices/redirdev[boot])", ctxt, &deviceBoot) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot count boot devices")); goto cleanup; @@ -10009,6 +10007,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, goto no_memory; for (i = 0 ; i < n ; i++) { virDomainRedirdevDefPtr redirdev = virDomainRedirdevDefParseXML(nodes[i], + bootMap, flags); if (!redirdev) goto error; @@ -13449,7 +13448,8 @@ virDomainRedirdevDefFormat(virBufferPtr buf, virBufferAsprintf(buf, " <redirdev bus='%s'", bus); if (virDomainChrSourceDefFormat(buf, &def->source.chr, false, flags) < 0) return -1; - if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0) + if (virDomainDeviceInfoFormat(buf, &def->info, + flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) return -1; virBufferAddLit(buf, " </redirdev>\n"); -- 1.7.8.6

On 20.11.2012 19:47, Ján Tomko wrote:
Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 only added the QEMU capability flag, command line option and added the boot element for redirdev's in the XML schema.
This patch adds support for parsing and writing the XML with redirdevs with the boot flag. It also ignores unknown XML elements in redirdev instead of failing with: "error: An error occurred, but the cause is unknown"
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=805414 --- src/conf/domain_conf.c | 34 +++++++++++++++++----------------- 1 files changed, 17 insertions(+), 17 deletions(-)
ACK Michal
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index be76c06..047c4fc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7312,11 +7312,13 @@ error:
static virDomainRedirdevDefPtr virDomainRedirdevDefParseXML(const xmlNodePtr node, + virBitmapPtr bootMap, unsigned int flags) { xmlNodePtr cur; virDomainRedirdevDefPtr def; char *bus, *type = NULL; + int remaining;
if (VIR_ALLOC(def) < 0) { virReportOOMError(); @@ -7348,25 +7350,20 @@ virDomainRedirdevDefParseXML(const xmlNodePtr node, }
cur = node->children; - while (cur != NULL) { - if (cur->type == XML_ELEMENT_NODE) { - if (xmlStrEqual(cur->name, BAD_CAST "source")) { - int remaining; - - remaining = virDomainChrSourceDefParseXML(&def->source.chr, cur, flags, - NULL, NULL, NULL, 0); - if (remaining != 0) - goto error; - } - } - cur = cur->next; - } + /* boot gets parsed in virDomainDeviceInfoParseXML + * source gets parsed in virDomainChrSourceDefParseXML + * we don't know any of the elements that might remain */ + remaining = virDomainChrSourceDefParseXML(&def->source.chr, cur, flags, + NULL, NULL, NULL, 0); + if (remaining < 0) + goto error;
if (def->source.chr.type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) { def->source.chr.data.spicevmc = VIR_DOMAIN_CHR_SPICEVMC_USBREDIR; }
- if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0) + if (virDomainDeviceInfoParseXML(node, bootMap, &def->info, + flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) goto error;
if (def->bus == VIR_DOMAIN_REDIRDEV_BUS_USB && @@ -7711,7 +7708,7 @@ virDomainDeviceDefPtr virDomainDeviceDefParse(virCapsPtr caps, goto error; } else if (xmlStrEqual(node->name, BAD_CAST "redirdev")) { dev->type = VIR_DOMAIN_DEVICE_REDIRDEV; - if (!(dev->data.redirdev = virDomainRedirdevDefParseXML(node, flags))) + if (!(dev->data.redirdev = virDomainRedirdevDefParseXML(node, NULL, flags))) goto error; } else { virReportError(VIR_ERR_XML_ERROR, @@ -8295,7 +8292,8 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
if (virXPathULong("count(./devices/disk[boot]" "|./devices/interface[boot]" - "|./devices/hostdev[boot])", ctxt, &deviceBoot) < 0) { + "|./devices/hostdev[boot]" + "|./devices/redirdev[boot])", ctxt, &deviceBoot) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot count boot devices")); goto cleanup; @@ -10009,6 +10007,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, goto no_memory; for (i = 0 ; i < n ; i++) { virDomainRedirdevDefPtr redirdev = virDomainRedirdevDefParseXML(nodes[i], + bootMap, flags); if (!redirdev) goto error; @@ -13449,7 +13448,8 @@ virDomainRedirdevDefFormat(virBufferPtr buf, virBufferAsprintf(buf, " <redirdev bus='%s'", bus); if (virDomainChrSourceDefFormat(buf, &def->source.chr, false, flags) < 0) return -1; - if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0) + if (virDomainDeviceInfoFormat(buf, &def->info, + flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) return -1; virBufferAddLit(buf, " </redirdev>\n");

And a few spaces. --- docs/formatdomain.html.in | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index c8da33d..6a3b976 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -2192,7 +2192,8 @@ boot sequence. The per-device <code>boot</code> elements cannot be used together with general boot elements in <a href="#elementsOSBIOS">BIOS bootloader</a> section. - <span class="since">Since 0.8.8</span></dd> + <span class="since">Since 0.8.8</span> for PCI devices, + <span class="since">Since 1.0.1</span> for USB devices. <dt><code>rom</code></dt> <dd>The <code>rom</code> element is used to change how a PCI device's ROM is presented to the guest. The optional <code>bar</code> @@ -2237,6 +2238,7 @@ <devices> <redirdev bus='usb' type='tcp'> <source mode='connect' host='localhost' service='4000'/> + <boot order='1'/> </redirdev> <redirfilter> <usbdev class='0x08' vendor='0x1234' product='0xbeef' version='2.00' allow='yes'/> @@ -2258,24 +2260,33 @@ tunnel; <code>type='tcp'</code> or <code>type='spicevmc'</code> (which uses the usbredir channel of a <a href="#elementsGraphics">SPICE graphics - device</a>) are typical.The redirdev element has an optional - sub-element<code><address></code> which can tie the + device</a>) are typical. The redirdev element has an optional + sub-element <code><address></code> which can tie the device to a particular controller. Further sub-elements, such as <code><source></code>, may be required according to the given type, although a <code><target></code> sub-element is not required (since the consumer of the character device is - the hypervisor itself,rather than a device visible in the guest). + the hypervisor itself, rather than a device visible in the guest). + </dd> + <dt><code>boot</code></dt> + + <dd>Specifies that the device is bootable. + The <code>order</code> attribute determines the order in which + devices will be tried during boot sequence. The per-device + <code>boot</code> elements cannot be used together with general + boot elements in <a href="#elementsOSBIOS">BIOS bootloader</a> section. + (<span class="since">Since 1.0.1</span>) </dd> <dt><code>redirfilter</code></dt> <dd>The<code> redirfilter </code>element is used for creating the filter rule to filter out certain devices from redirection. - It uses sub-element <code><usbdev></code>to define each filter rule. - <code>class</code>attribute is the USB Class code, for example, + It uses sub-element <code><usbdev></code> to define each filter rule. + <code>class</code> attribute is the USB Class code, for example, 0x08 represents mass storage devices. The USB device can be addressed by - vendor / product id using the<code>vendor</code> and <code>product</code> attributes. + vendor / product id using the <code>vendor</code> and <code>product</code> attributes. <code>version</code> is the bcdDevice value of USB device, such as 1.00, 1.10 and 2.00. These four attributes are optional and <code>-1</code> can be used to allow - any value for them. <code>allow</code>attribute is mandatory, + any value for them. <code>allow</code> attribute is mandatory, 'yes' means allow, 'no' for deny. </dd> </dl> -- 1.7.8.6

On 20.11.2012 19:47, Ján Tomko wrote:
And a few spaces. --- docs/formatdomain.html.in | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index c8da33d..6a3b976 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -2192,7 +2192,8 @@ boot sequence. The per-device <code>boot</code> elements cannot be used together with general boot elements in <a href="#elementsOSBIOS">BIOS bootloader</a> section. - <span class="since">Since 0.8.8</span></dd> + <span class="since">Since 0.8.8</span> for PCI devices, + <span class="since">Since 1.0.1</span> for USB devices. <dt><code>rom</code></dt> <dd>The <code>rom</code> element is used to change how a PCI device's ROM is presented to the guest. The optional <code>bar</code> @@ -2237,6 +2238,7 @@ <devices> <redirdev bus='usb' type='tcp'> <source mode='connect' host='localhost' service='4000'/> + <boot order='1'/> </redirdev> <redirfilter> <usbdev class='0x08' vendor='0x1234' product='0xbeef' version='2.00' allow='yes'/> @@ -2258,24 +2260,33 @@ tunnel; <code>type='tcp'</code> or <code>type='spicevmc'</code> (which uses the usbredir channel of a <a href="#elementsGraphics">SPICE graphics - device</a>) are typical.The redirdev element has an optional - sub-element<code><address></code> which can tie the + device</a>) are typical. The redirdev element has an optional + sub-element <code><address></code> which can tie the
While these changes are technically correct, they don't belong to this patch.
device to a particular controller. Further sub-elements, such as <code><source></code>, may be required according to the given type, although a <code><target></code> sub-element is not required (since the consumer of the character device is - the hypervisor itself,rather than a device visible in the guest). + the hypervisor itself, rather than a device visible in the guest). + </dd> + <dt><code>boot</code></dt> + + <dd>Specifies that the device is bootable. + The <code>order</code> attribute determines the order in which + devices will be tried during boot sequence. The per-device + <code>boot</code> elements cannot be used together with general + boot elements in <a href="#elementsOSBIOS">BIOS bootloader</a> section. + (<span class="since">Since 1.0.1</span>) </dd> <dt><code>redirfilter</code></dt> <dd>The<code> redirfilter </code>element is used for creating the filter rule to filter out certain devices from redirection. - It uses sub-element <code><usbdev></code>to define each filter rule. - <code>class</code>attribute is the USB Class code, for example, + It uses sub-element <code><usbdev></code> to define each filter rule. + <code>class</code> attribute is the USB Class code, for example, 0x08 represents mass storage devices. The USB device can be addressed by - vendor / product id using the<code>vendor</code> and <code>product</code> attributes. + vendor / product id using the <code>vendor</code> and <code>product</code> attributes. <code>version</code> is the bcdDevice value of USB device, such as 1.00, 1.10 and 2.00. These four attributes are optional and <code>-1</code> can be used to allow - any value for them. <code>allow</code>attribute is mandatory, + any value for them. <code>allow</code> attribute is mandatory, 'yes' means allow, 'no' for deny. </dd> </dl>
ACK to all changes, though. Michal

--- ...muxml2argv-hostdev-usb-address-device-boot.args | 6 +++ ...emuxml2argv-hostdev-usb-address-device-boot.xml | 28 +++++++++++++ .../qemuxml2argv-usb-redir-boot.args | 10 +++++ .../qemuxml2argv-usb-redir-boot.xml | 42 ++++++++++++++++++++ tests/qemuxml2argvtest.c | 9 ++++ 5 files changed, 95 insertions(+), 0 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args new file mode 100644 index 0000000..beb093c --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args @@ -0,0 +1,6 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \ +pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor \ +unix:/tmp/test-monitor,server,nowait -no-acpi -usb -hda \ +/dev/HostVG/QEMUGuest1 \ +-device usb-host,hostbus=14,hostaddr=6,id=hostdev0,bootindex=1 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml new file mode 100644 index 0000000..c11a963 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + </disk> + <hostdev mode='subsystem' type='usb' managed='no'> + <source> + <address bus='14' device='6'/> + </source> + <boot order='1'/> + </hostdev> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args new file mode 100644 index 0000000..3d0cc8f --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args @@ -0,0 +1,10 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi \ +-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 \ +-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4 \ +-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x4.0x1 \ +-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x4.0x2 \ +-chardev socket,id=charredir0,host=localhost,port=4000 \ +-device usb-redir,chardev=charredir0,id=redir0,bootindex=1 \ +-chardev spicevmc,id=charredir1,name=usbredir \ +-device usb-redir,chardev=charredir1,id=redir1,bootindex=2,bus=usb.0,port=4 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml new file mode 100644 index 0000000..02a27c1 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml @@ -0,0 +1,42 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <controller type='usb' index='0' model='ich9-ehci1'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/> + </controller> + <controller type='usb' index='0' model='ich9-uhci1'> + <master startport='0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/> + </controller> + <controller type='usb' index='0' model='ich9-uhci2'> + <master startport='2'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/> + </controller> + <controller type='usb' index='0' model='ich9-uhci3'> + <master startport='4'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/> + </controller> + <redirdev bus='usb' type='tcp'> + <source mode='connect' host='localhost' service='4000'/> + <protocol type='raw'/> + <boot order='1'/> + </redirdev> + <redirdev bus='usb' type='spicevmc'> + <address type='usb' bus='0' port='4'/> + <boot order='2'/> + </redirdev> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 48e09ab..4cccbb0 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -715,6 +715,12 @@ mymain(void) QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_USB_HUB, QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_USB_REDIR, QEMU_CAPS_SPICE, QEMU_CAPS_CHARDEV_SPICEVMC); + DO_TEST("usb-redir-boot", + QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG, + QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_USB_HUB, + QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_USB_REDIR, + QEMU_CAPS_SPICE, QEMU_CAPS_CHARDEV_SPICEVMC, QEMU_CAPS_BOOTINDEX, + QEMU_CAPS_USB_REDIR_BOOTINDEX); DO_TEST("usb-redir-filter", QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_USB_HUB, @@ -755,6 +761,9 @@ mymain(void) DO_TEST("hostdev-usb-address", NONE); DO_TEST("hostdev-usb-address-device", QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG); + DO_TEST("hostdev-usb-address-device-boot", QEMU_CAPS_DEVICE, + QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_BOOTINDEX, + QEMU_CAPS_USB_HOST_BOOTINDEX); DO_TEST("hostdev-pci-address", QEMU_CAPS_PCIDEVICE); DO_TEST("hostdev-pci-address-device", QEMU_CAPS_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG); -- 1.7.8.6

On 20.11.2012 19:47, Ján Tomko wrote:
--- ...muxml2argv-hostdev-usb-address-device-boot.args | 6 +++ ...emuxml2argv-hostdev-usb-address-device-boot.xml | 28 +++++++++++++ .../qemuxml2argv-usb-redir-boot.args | 10 +++++ .../qemuxml2argv-usb-redir-boot.xml | 42 ++++++++++++++++++++ tests/qemuxml2argvtest.c | 9 ++++ 5 files changed, 95 insertions(+), 0 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args new file mode 100644 index 0000000..beb093c --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args @@ -0,0 +1,6 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \ +pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor \ +unix:/tmp/test-monitor,server,nowait -no-acpi -usb -hda \ +/dev/HostVG/QEMUGuest1 \ +-device usb-host,hostbus=14,hostaddr=6,id=hostdev0,bootindex=1 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml new file mode 100644 index 0000000..c11a963 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + </disk> + <hostdev mode='subsystem' type='usb' managed='no'> + <source> + <address bus='14' device='6'/> + </source> + <boot order='1'/> + </hostdev> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args new file mode 100644 index 0000000..3d0cc8f --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args @@ -0,0 +1,10 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi \
This is a veeery long line. ACK Michal

On 11/21/2012 10:43 AM, Michal Privoznik wrote:
+++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args @@ -0,0 +1,10 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi \
This is a veeery long line.
Add more backslash-newline pairs to shorten it; we added that support to the testsuite precisely to enable lines fitting in 80 columns. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

Both generated with qemu-system-x86_64 --help > qemu-1.2.0 qemu-system-x86_64 \ -device ? \ -device pci-assign,? \ -device virtio-blk-pci,? \ -device virtio-net-pci,? \ -device scsi-disk,? \ -device PIIX4_PM,? \ -device usb-redir,? \ -device ide-drive,? \ -device usb-host,? 2> qemu-1.2.0-device It seems I missed a few -device flags when doing this last time and I mixed up qemu and qemu-kvm. --- tests/qemuhelpdata/qemu-1.2.0 | 1 + tests/qemuhelpdata/qemu-1.2.0-device | 51 +++++-- tests/qemuhelpdata/qemu-kvm-1.2.0 | 276 ++++++++++++++++++++++++++++++ tests/qemuhelpdata/qemu-kvm-1.2.0-device | 222 ++++++++++++++++++++++++ tests/qemuhelptest.c | 106 +++++++++++- 5 files changed, 644 insertions(+), 12 deletions(-) create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0 create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0-device diff --git a/tests/qemuhelpdata/qemu-1.2.0 b/tests/qemuhelpdata/qemu-1.2.0 index f52fdcb..78375f3 100644 --- a/tests/qemuhelpdata/qemu-1.2.0 +++ b/tests/qemuhelpdata/qemu-1.2.0 @@ -175,6 +175,7 @@ Character device options: -chardev stdio,id=id[,mux=on|off][,signal=on|off] -chardev tty,id=id,path=path[,mux=on|off] -chardev parport,id=id,path=path[,mux=on|off] +-chardev spicevmc,id=id,name=name[,debug=debug] -iscsi [user=user][,password=password] [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE diff --git a/tests/qemuhelpdata/qemu-1.2.0-device b/tests/qemuhelpdata/qemu-1.2.0-device index 9230a93..5613e00 100644 --- a/tests/qemuhelpdata/qemu-1.2.0-device +++ b/tests/qemuhelpdata/qemu-1.2.0-device @@ -8,6 +8,7 @@ name "esp", bus System name "sysbus-ohci", bus System, desc "OHCI USB Controller" name "virtio-blk-pci", bus PCI, alias "virtio-blk" name "usb-uas", bus usb-bus +name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)" name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)" name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch" name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA" @@ -32,6 +33,7 @@ name "pci-ohci", bus PCI, desc "Apple USB Controller" name "nec-usb-xhci", bus PCI name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch" name "virtserialport", bus virtio-serial-bus +name "usb-redir", bus usb-bus name "usb-braille", bus usb-bus name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM" name "usb-wacom-tablet", bus usb-bus, desc "QEMU PenPartner Tablet" @@ -64,9 +66,9 @@ name "usb-bt-dongle", bus usb-bus name "usb-tablet", bus usb-bus name "isa-vga", bus ISA name "usb-kbd", bus usb-bus -name "kvm-pci-assign", bus PCI, alias "pci-assign", desc "KVM-based PCI passthrough" name "isa-applesmc", bus ISA name "rtl8139", bus PCI +name "qxl", bus PCI, desc "Spice QXL GPU (secondary)" name "i82557a", bus PCI, desc "Intel i82557A Ethernet" name "i82557c", bus PCI, desc "Intel i82557C Ethernet" name "usb-audio", bus usb-bus @@ -95,16 +97,6 @@ name "vt82c686b-usb-uhci", bus PCI name "usb-ehci", bus PCI name "i6300esb", bus PCI name "virtio-scsi-pci", bus PCI -kvm-pci-assign.host=pci-host-devaddr -kvm-pci-assign.prefer_msi=on/off -kvm-pci-assign.share_intx=on/off -kvm-pci-assign.bootindex=int32 -kvm-pci-assign.configfd=string -kvm-pci-assign.addr=pci-devfn -kvm-pci-assign.romfile=string -kvm-pci-assign.rombar=uint32 -kvm-pci-assign.multifunction=on/off -kvm-pci-assign.command_serr_enable=on/off virtio-blk-pci.class=hex32 virtio-blk-pci.drive=drive virtio-blk-pci.logical_block_size=blocksize @@ -179,3 +171,40 @@ scsi-disk.wwn=hex64 scsi-disk.channel=uint32 scsi-disk.scsi-id=uint32 scsi-disk.lun=uint32 +PIIX4_PM.smb_io_base=uint32 +PIIX4_PM.disable_s3=uint8 +PIIX4_PM.disable_s4=uint8 +PIIX4_PM.s4_val=uint8 +PIIX4_PM.addr=pci-devfn +PIIX4_PM.romfile=string +PIIX4_PM.rombar=uint32 +PIIX4_PM.multifunction=on/off +PIIX4_PM.command_serr_enable=on/off +usb-redir.chardev=chr +usb-redir.debug=uint8 +usb-redir.filter=string +usb-redir.bootindex=int32 +usb-redir.port=string +usb-redir.full-path=on/off +ide-drive.drive=drive +ide-drive.logical_block_size=blocksize +ide-drive.physical_block_size=blocksize +ide-drive.min_io_size=uint16 +ide-drive.opt_io_size=uint32 +ide-drive.bootindex=int32 +ide-drive.discard_granularity=uint32 +ide-drive.ver=string +ide-drive.wwn=hex64 +ide-drive.serial=string +ide-drive.model=string +ide-drive.unit=uint32 +usb-host.hostbus=uint32 +usb-host.hostaddr=uint32 +usb-host.hostport=string +usb-host.vendorid=hex32 +usb-host.productid=hex32 +usb-host.isobufs=uint32 +usb-host.bootindex=int32 +usb-host.pipeline=on/off +usb-host.port=string +usb-host.full-path=on/off diff --git a/tests/qemuhelpdata/qemu-kvm-1.2.0 b/tests/qemuhelpdata/qemu-kvm-1.2.0 new file mode 100644 index 0000000..372002a --- /dev/null +++ b/tests/qemuhelpdata/qemu-kvm-1.2.0 @@ -0,0 +1,276 @@ +QEMU emulator version 1.2.0 (qemu-kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard +usage: qemu-system-x86_64 [options] [disk_image] + +'disk_image' is a raw hard disk image for IDE hard disk 0 + +Standard options: +-h or -help display this help and exit +-version display version information and exit +-machine [type=]name[,prop[=value][,...]] + selects emulated machine (-machine ? for list) + property accel=accel1[:accel2[:...]] selects accelerator + supported accelerators are kvm, xen, tcg (default: tcg) + kernel_irqchip=on|off controls accelerated irqchip support + kvm_shadow_mem=size of KVM shadow MMU + dump-guest-core=on|off include guest memory in a core dump (default=on) +-cpu cpu select CPU (-cpu ? for list) +-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets] + set the number of CPUs to 'n' [default=1] + maxcpus= maximum number of total cpus, including + offline CPUs for hotplug, etc + cores= number of CPU cores on one socket + threads= number of threads on one CPU core + sockets= number of discrete sockets in the system +-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node] +-fda/-fdb file use 'file' as floppy disk 0/1 image +-hda/-hdb file use 'file' as IDE hard disk 0/1 image +-hdc/-hdd file use 'file' as IDE hard disk 2/3 image +-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master) +-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i] + [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off] + [,cache=writethrough|writeback|none|directsync|unsafe][,format=f] + [,serial=s][,addr=A][,id=name][,aio=threads|native] + [,readonly=on|off][,copy-on-read=on|off] + [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]] + use 'file' as a drive image +-set group.id.arg=value + set <arg> parameter for item <id> of type <group> + i.e. -set drive.$id.file=/path/to/image +-global driver.prop=value + set a global default for a driver property +-mtdblock file use 'file' as on-board Flash memory image +-sd file use 'file' as SecureDigital card image +-pflash file use 'file' as a parallel flash image +-boot [order=drives][,once=drives][,menu=on|off] + [,splash=sp_name][,splash-time=sp_time] + 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n) + 'sp_name': the file's name that would be passed to bios as logo picture, if menu=on + 'sp_time': the period that splash picture last if menu=on, unit is ms +-snapshot write to temporary files instead of disk image files +-m megs set virtual RAM size to megs MB [default=128] +-mem-path FILE provide backing storage for guest RAM +-mem-prealloc preallocate guest memory (use with -mem-path) +-k language use keyboard layout (for example 'fr' for French) +-audio-help print list of audio drivers and their options +-soundhw c1,... enable audio support + and only specified sound cards (comma separated list) + use -soundhw ? to get the list of supported cards + use -soundhw all to enable all of them +-balloon none disable balloon device +-balloon virtio[,addr=str] + enable virtio balloon device (default) +-usb enable the USB driver (will be the default soon) +-usbdevice name add the host or guest USB device 'name' +-device driver[,prop[=value][,...]] + add device (based on driver) + prop=value,... sets driver properties + use -device ? to print all possible drivers + use -device driver,? to print all possible properties + +File system options: +-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}] + [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] + +Virtual File system pass-through options: +-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none] + [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] +-virtfs_synth Create synthetic file system image + +-name string1[,process=string2] + set the name of the guest + string1 sets the window title and string2 the process name (on Linux) +-uuid %08x-%04x-%04x-%04x-%012x + specify machine UUID + +Display options: +-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off] + [,window_close=on|off]|curses|none| + vnc=<display>[,<optargs>] + select display type +-nographic disable graphical output and redirect serial I/Os to console +-curses use a curses/ncurses interface instead of SDL +-no-frame open SDL window without a frame and window decorations +-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt) +-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt) +-no-quit disable SDL window close capability +-sdl enable SDL +-spice <args> enable spice +-portrait rotate graphical output 90 deg left (only PXA LCD) +-rotate <deg> rotate graphical output some deg left (only PXA LCD) +-vga [std|cirrus|vmware|qxl|xenfb|none] + select video card type +-full-screen start in full screen +-vnc display start a VNC server on display + +i386 target only: +-win2k-hack use it when installing Windows 2000 to avoid a disk full bug +-no-fd-bootchk disable boot signature checking for floppy disks +-no-acpi disable ACPI +-no-hpet disable HPET +-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...] + ACPI table description +-smbios file=binary + load SMBIOS entry from binary file +-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d] + specify SMBIOS type 0 fields +-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str] + [,uuid=uuid][,sku=str][,family=str] + specify SMBIOS type 1 fields + +Network options: +-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v] + create a new Network Interface Card and connect it to VLAN 'n' +-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off] + [,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f] + [,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]] + connect the user mode network stack to VLAN 'n', configure its + DHCP server and enabled optional services +-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off] + connect the host TAP network interface to VLAN 'n' + use network scripts 'file' (default=/etc/qemu-ifup) + to configure it and 'dfile' (default=/etc/qemu-ifdown) + to deconfigure it + use '[down]script=no' to disable script execution + use network helper 'helper' (default=/usr/local/libexec/qemu-bridge-helper) to + configure it + use 'fd=h' to connect to an already opened TAP interface + use 'sndbuf=nbytes' to limit the size of the send buffer (the + default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576') + use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag + use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition + use vhost=on to enable experimental in kernel accelerator + (only has effect for virtio guests which use MSIX) + use vhostforce=on to force vhost on for non-MSIX virtio guests + use 'vhostfd=h' to connect to an already opened vhost net device +-net bridge[,vlan=n][,name=str][,br=bridge][,helper=helper] + connects a host TAP network interface to a host bridge device 'br' + (default=br0) using the program 'helper' + (default=/usr/local/libexec/qemu-bridge-helper) +-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port] + connect the vlan 'n' to another VLAN using a socket connection +-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]] + connect the vlan 'n' to multicast maddr and port + use 'localaddr=addr' to specify the host address to send packets from +-net socket[,vlan=n][,name=str][,fd=h][,udp=host:port][,localaddr=host:port] + connect the vlan 'n' to another VLAN using an UDP tunnel +-net dump[,vlan=n][,file=f][,len=n] + dump traffic on vlan 'n' to file 'f' (max n bytes per packet) +-net none use it alone to have zero network devices. If no -net option + is provided, the default is '-net nic -net user' +-netdev [user|tap|bridge|socket],id=str[,option][,option][,...] + +Character device options: +-chardev null,id=id[,mux=on|off] +-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay] + [,server][,nowait][,telnet][,mux=on|off] (tcp) +-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix) +-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr] + [,localport=localport][,ipv4][,ipv6][,mux=on|off] +-chardev msmouse,id=id[,mux=on|off] +-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]] + [,mux=on|off] +-chardev file,id=id,path=path[,mux=on|off] +-chardev pipe,id=id,path=path[,mux=on|off] +-chardev pty,id=id[,mux=on|off] +-chardev stdio,id=id[,mux=on|off][,signal=on|off] +-chardev tty,id=id,path=path[,mux=on|off] +-chardev parport,id=id,path=path[,mux=on|off] +-chardev spicevmc,id=id,name=name[,debug=debug] + +-iscsi [user=user][,password=password] + [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE + [,initiator-name=iqn] + iSCSI session parameters +Bluetooth(R) options: +-bt hci,null dumb bluetooth HCI - doesn't respond to commands +-bt hci,host[:id] + use host's HCI with the given name +-bt hci[,vlan=n] + emulate a standard HCI in virtual scatternet 'n' +-bt vhci[,vlan=n] + add host computer to virtual scatternet 'n' using VHCI +-bt device:dev[,vlan=n] + emulate a bluetooth device 'dev' in scatternet 'n' + +Linux/Multiboot boot specific: +-kernel bzImage use 'bzImage' as kernel image +-append cmdline use 'cmdline' as kernel command line +-initrd file use 'file' as initial ram disk +-dtb file use 'file' as device tree image + +Debug/Expert options: +-serial dev redirect the serial port to char device 'dev' +-parallel dev redirect the parallel port to char device 'dev' +-monitor dev redirect the monitor to char device 'dev' +-qmp dev like -monitor but opens in 'control' mode +-mon chardev=[name][,mode=readline|control][,default] +-debugcon dev redirect the debug console to char device 'dev' +-pidfile file write PID to 'file' +-singlestep always run in singlestep mode +-S freeze CPU at startup (use 'c' to start execution) +-gdb dev wait for gdb connection on 'dev' +-s shorthand for -gdb tcp::1234 +-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items) +-D logfile output log to logfile (instead of the default /tmp/qemu.log) +-hdachs c,h,s[,t] + force hard disk 0 physical geometry and the optional BIOS + translation (t=none or lba) (usually QEMU can guess them) +-L path set the directory for the BIOS, VGA BIOS and keymaps +-bios file set the filename for the BIOS +-enable-kvm enable KVM full virtualization support +-xen-domid id specify xen guest domain id +-xen-create create domain using xen hypercalls, bypassing xend + warning: should not be used when xend is in use +-xen-attach attach to existing xen domain + xend will use this when starting QEMU +-no-reboot exit instead of rebooting +-no-shutdown stop before shutdown +-loadvm [tag|id] + start right away with a saved state (loadvm in monitor) +-daemonize daemonize QEMU after initializing +-option-rom rom load a file, rom, into the option ROM space +-clock force the use of the given methods for timer alarm. + To see what timers are available use -clock ? +-rtc [base=utc|localtime|date][,clock=host|rt|vm][,driftfix=none|slew] + set the RTC base and clock, enable drift fix for clock ticks (x86 only) +-icount [N|auto] + enable virtual instruction counter with 2^N clock ticks per + instruction +-watchdog i6300esb|ib700 + enable virtual hardware watchdog [default=none] +-watchdog-action reset|shutdown|poweroff|pause|debug|none + action when watchdog fires [default=reset] +-echr chr set terminal escape character instead of ctrl-a +-virtioconsole c + set virtio console +-show-cursor show cursor +-tb-size n set TB size +-incoming p prepare for incoming migration, listen on port p +-nodefaults don't create default devices +-chroot dir chroot to dir just before starting the VM +-runas user change to user id user just before starting the VM +-sandbox <arg> Enable seccomp mode 2 system call filter (default 'off'). +-readconfig <file> +-writeconfig <file> + read/write config file +-nodefconfig + do not load default config files at startup +-no-user-config + do not load user-provided config files at startup +-trace [events=<file>][,file=<file>] + specify tracing options +-qtest CHR specify tracing options +-qtest-log LOG specify tracing options +-enable-fips enable FIPS 140-2 compliance +-no-kvm disable KVM hardware virtualization +-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC +-no-kvm-pit disable KVM kernel mode PIT +-no-kvm-pit-reinjection + disable KVM kernel mode PIT interrupt reinjection + +During emulation, the following keys are useful: +ctrl-alt-f toggle full screen +ctrl-alt-n switch to virtual console 'n' +ctrl-alt toggle mouse and keyboard grab + +When using -nographic, press 'ctrl-a h' to get some help. diff --git a/tests/qemuhelpdata/qemu-kvm-1.2.0-device b/tests/qemuhelpdata/qemu-kvm-1.2.0-device new file mode 100644 index 0000000..879a049 --- /dev/null +++ b/tests/qemuhelpdata/qemu-kvm-1.2.0-device @@ -0,0 +1,222 @@ +name "VGA", bus PCI +name "usb-storage", bus usb-bus +name "scsi-hd", bus SCSI, desc "virtual SCSI disk" +name "i82559a", bus PCI, desc "Intel i82559A Ethernet" +name "i82559b", bus PCI, desc "Intel i82559B Ethernet" +name "i82559c", bus PCI, desc "Intel i82559C Ethernet" +name "esp", bus System +name "sysbus-ohci", bus System, desc "OHCI USB Controller" +name "virtio-blk-pci", bus PCI, alias "virtio-blk" +name "usb-uas", bus usb-bus +name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)" +name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)" +name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch" +name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA" +name "ide-hd", bus IDE, desc "virtual IDE disk" +name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370" +name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port" +name "sga", bus ISA, desc "Serial Graphics Adapter" +name "scsi-block", bus SCSI, desc "SCSI block device passthrough" +name "usb-serial", bus usb-bus +name "pc-sysfw", bus System, desc "PC System Firmware" +name "usb-mouse", bus usb-bus +name "usb-net", bus usb-bus +name "usb-hub", bus usb-bus +name "ccid-card-emulated", bus ccid-bus, desc "emulated smartcard" +name "ne2k_isa", bus ISA +name "pci-assign", bus PCI +name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)" +name "pcnet", bus PCI +name "lsi53c895a", bus PCI, alias "lsi" +name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)" +name "hda-micro", bus HDA, desc "HDA Audio Codec, duplex (speaker, microphone)" +name "pci-ohci", bus PCI, desc "Apple USB Controller" +name "nec-usb-xhci", bus PCI +name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch" +name "virtserialport", bus virtio-serial-bus +name "usb-redir", bus usb-bus +name "usb-braille", bus usb-bus +name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM" +name "usb-wacom-tablet", bus usb-bus, desc "QEMU PenPartner Tablet" +name "isa-serial", bus ISA +name "i82550", bus PCI, desc "Intel i82550 Ethernet" +name "i82551", bus PCI, desc "Intel i82551 Ethernet" +name "isa-debugcon", bus ISA +name "ide-cd", bus IDE, desc "virtual IDE CD-ROM" +name "SUNW,fdtwo", bus System +name "ich9-usb-uhci2", bus PCI +name "ich9-usb-uhci3", bus PCI +name "ich9-usb-uhci1", bus PCI +name "isa-parallel", bus ISA +name "virtconsole", bus virtio-serial-bus +name "ne2k_pci", bus PCI +name "virtio-serial-pci", bus PCI, alias "virtio-serial" +name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex (line-out, line-in)" +name "intel-hda", bus PCI, desc "Intel HD Audio Controller" +name "megasas", bus PCI, desc "LSI MegaRAID SAS 1078" +name "i82559er", bus PCI, desc "Intel i82559ER Ethernet" +name "hda-output", bus HDA, desc "HDA Audio Codec, output-only (line-out)" +name "i82562", bus PCI, desc "Intel i82562 Ethernet" +name "sysbus-ahci", bus System +name "usb-ccid", bus usb-bus, desc "CCID Rev 1.1 smartcard reader" +name "ivshmem", bus PCI +name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio" +name "e1000", bus PCI, desc "Intel Gigabit Ethernet" +name "sysbus-fdc", bus System +name "usb-bt-dongle", bus usb-bus +name "usb-tablet", bus usb-bus +name "isa-vga", bus ISA +name "usb-kbd", bus usb-bus +name "isa-applesmc", bus ISA +name "rtl8139", bus PCI +name "qxl", bus PCI, desc "Spice QXL GPU (secondary)" +name "i82557a", bus PCI, desc "Intel i82557A Ethernet" +name "i82557c", bus PCI, desc "Intel i82557C Ethernet" +name "usb-audio", bus usb-bus +name "ib700", bus ISA +name "piix3-usb-uhci", bus PCI +name "i82557b", bus PCI, desc "Intel i82557B Ethernet" +name "piix4-usb-uhci", bus PCI +name "ccid-card-passthru", bus ccid-bus, desc "passthrough smartcard" +name "i82801", bus PCI, desc "Intel i82801 Ethernet" +name "smbus-eeprom", bus i2c-bus +name "vmware-svga", bus PCI +name "dc390", bus PCI, desc "Tekram DC-390 SCSI adapter" +name "isa-cirrus-vga", bus ISA +name "sb16", bus ISA, desc "Creative Sound Blaster 16" +name "am53c974", bus PCI, desc "AMD Am53c974 PCscsi-PCI SCSI adapter" +name "pci-bridge", bus PCI, desc "Standard PCI Bridge" +name "i82558a", bus PCI, desc "Intel i82558A Ethernet" +name "i82558b", bus PCI, desc "Intel i82558B Ethernet" +name "virtio-net-pci", bus PCI, alias "virtio-net" +name "virtio-balloon-pci", bus PCI, alias "virtio-balloon" +name "ich9-usb-ehci1", bus PCI +name "isa-ide", bus ISA +name "usb-host", bus usb-bus +name "ich9-ahci", bus PCI, alias "ahci" +name "vt82c686b-usb-uhci", bus PCI +name "usb-ehci", bus PCI +name "testdev", bus ISA +name "i6300esb", bus PCI +name "virtio-scsi-pci", bus PCI +pci-assign.host=pci-host-devaddr +pci-assign.prefer_msi=on/off +pci-assign.share_intx=on/off +pci-assign.bootindex=int32 +pci-assign.configfd=string +pci-assign.addr=pci-devfn +pci-assign.romfile=string +pci-assign.rombar=uint32 +pci-assign.multifunction=on/off +pci-assign.command_serr_enable=on/off +virtio-blk-pci.class=hex32 +virtio-blk-pci.drive=drive +virtio-blk-pci.logical_block_size=blocksize +virtio-blk-pci.physical_block_size=blocksize +virtio-blk-pci.min_io_size=uint16 +virtio-blk-pci.opt_io_size=uint32 +virtio-blk-pci.bootindex=int32 +virtio-blk-pci.discard_granularity=uint32 +virtio-blk-pci.cyls=uint32 +virtio-blk-pci.heads=uint32 +virtio-blk-pci.secs=uint32 +virtio-blk-pci.serial=string +virtio-blk-pci.scsi=on/off +virtio-blk-pci.config-wce=on/off +virtio-blk-pci.ioeventfd=on/off +virtio-blk-pci.vectors=uint32 +virtio-blk-pci.indirect_desc=on/off +virtio-blk-pci.event_idx=on/off +virtio-blk-pci.config-wce=on/off +virtio-blk-pci.addr=pci-devfn +virtio-blk-pci.romfile=string +virtio-blk-pci.rombar=uint32 +virtio-blk-pci.multifunction=on/off +virtio-blk-pci.command_serr_enable=on/off +virtio-net-pci.ioeventfd=on/off +virtio-net-pci.vectors=uint32 +virtio-net-pci.indirect_desc=on/off +virtio-net-pci.event_idx=on/off +virtio-net-pci.csum=on/off +virtio-net-pci.guest_csum=on/off +virtio-net-pci.gso=on/off +virtio-net-pci.guest_tso4=on/off +virtio-net-pci.guest_tso6=on/off +virtio-net-pci.guest_ecn=on/off +virtio-net-pci.guest_ufo=on/off +virtio-net-pci.host_tso4=on/off +virtio-net-pci.host_tso6=on/off +virtio-net-pci.host_ecn=on/off +virtio-net-pci.host_ufo=on/off +virtio-net-pci.mrg_rxbuf=on/off +virtio-net-pci.status=on/off +virtio-net-pci.ctrl_vq=on/off +virtio-net-pci.ctrl_rx=on/off +virtio-net-pci.ctrl_vlan=on/off +virtio-net-pci.ctrl_rx_extra=on/off +virtio-net-pci.mac=macaddr +virtio-net-pci.vlan=vlan +virtio-net-pci.netdev=netdev +virtio-net-pci.bootindex=int32 +virtio-net-pci.x-txtimer=uint32 +virtio-net-pci.x-txburst=int32 +virtio-net-pci.tx=string +virtio-net-pci.addr=pci-devfn +virtio-net-pci.romfile=string +virtio-net-pci.rombar=uint32 +virtio-net-pci.multifunction=on/off +virtio-net-pci.command_serr_enable=on/off +scsi-disk.drive=drive +scsi-disk.logical_block_size=blocksize +scsi-disk.physical_block_size=blocksize +scsi-disk.min_io_size=uint16 +scsi-disk.opt_io_size=uint32 +scsi-disk.bootindex=int32 +scsi-disk.discard_granularity=uint32 +scsi-disk.ver=string +scsi-disk.serial=string +scsi-disk.vendor=string +scsi-disk.product=string +scsi-disk.removable=on/off +scsi-disk.dpofua=on/off +scsi-disk.wwn=hex64 +scsi-disk.channel=uint32 +scsi-disk.scsi-id=uint32 +scsi-disk.lun=uint32 +PIIX4_PM.smb_io_base=uint32 +PIIX4_PM.disable_s3=uint8 +PIIX4_PM.disable_s4=uint8 +PIIX4_PM.s4_val=uint8 +PIIX4_PM.addr=pci-devfn +PIIX4_PM.romfile=string +PIIX4_PM.rombar=uint32 +PIIX4_PM.multifunction=on/off +PIIX4_PM.command_serr_enable=on/off +usb-redir.chardev=chr +usb-redir.debug=uint8 +usb-redir.filter=string +usb-redir.bootindex=int32 +usb-redir.port=string +usb-redir.full-path=on/off +ide-drive.drive=drive +ide-drive.logical_block_size=blocksize +ide-drive.physical_block_size=blocksize +ide-drive.min_io_size=uint16 +ide-drive.opt_io_size=uint32 +ide-drive.bootindex=int32 +ide-drive.discard_granularity=uint32 +ide-drive.ver=string +ide-drive.wwn=hex64 +ide-drive.serial=string +ide-drive.model=string +ide-drive.unit=uint32 +usb-host.hostbus=uint32 +usb-host.hostaddr=uint32 +usb-host.hostport=string +usb-host.vendorid=hex32 +usb-host.productid=hex32 +usb-host.isobufs=uint32 +usb-host.bootindex=int32 +usb-host.pipeline=on/off +usb-host.port=string +usb-host.full-path=on/off diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index b49c86d..021b3dc 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -809,6 +809,101 @@ mymain(void) QEMU_CAPS_RTC, QEMU_CAPS_VHOST_NET, QEMU_CAPS_NO_HPET, + QEMU_CAPS_NODEFCONFIG, + QEMU_CAPS_BOOT_MENU, + QEMU_CAPS_FSDEV, + QEMU_CAPS_NAME_PROCESS, + QEMU_CAPS_SMBIOS_TYPE, + QEMU_CAPS_VGA_QXL, + QEMU_CAPS_SPICE, + QEMU_CAPS_VGA_NONE, + QEMU_CAPS_MIGRATE_QEMU_FD, + QEMU_CAPS_BOOTINDEX, + QEMU_CAPS_HDA_DUPLEX, + QEMU_CAPS_DRIVE_AIO, + QEMU_CAPS_CCID_EMULATED, + QEMU_CAPS_CCID_PASSTHRU, + QEMU_CAPS_CHARDEV_SPICEVMC, + QEMU_CAPS_VIRTIO_TX_ALG, + QEMU_CAPS_DEVICE_QXL_VGA, + QEMU_CAPS_PCI_MULTIFUNCTION, + QEMU_CAPS_VIRTIO_IOEVENTFD, + QEMU_CAPS_SGA, + QEMU_CAPS_VIRTIO_BLK_EVENT_IDX, + QEMU_CAPS_VIRTIO_NET_EVENT_IDX, + QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, + QEMU_CAPS_PIIX3_USB_UHCI, + QEMU_CAPS_PIIX4_USB_UHCI, + QEMU_CAPS_USB_EHCI, + QEMU_CAPS_ICH9_USB_EHCI1, + QEMU_CAPS_VT82C686B_USB_UHCI, + QEMU_CAPS_PCI_OHCI, + QEMU_CAPS_USB_REDIR, + QEMU_CAPS_USB_HUB, + QEMU_CAPS_NO_SHUTDOWN, + QEMU_CAPS_PCI_ROMBAR, + QEMU_CAPS_ICH9_AHCI, + QEMU_CAPS_NO_ACPI, + QEMU_CAPS_FSDEV_READONLY, + QEMU_CAPS_VIRTIO_BLK_SCSI, + QEMU_CAPS_VIRTIO_BLK_SG_IO, + QEMU_CAPS_DRIVE_COPY_ON_READ, + QEMU_CAPS_CPU_HOST, + QEMU_CAPS_FSDEV_WRITEOUT, + QEMU_CAPS_DRIVE_IOTUNE, + QEMU_CAPS_SCSI_DISK_CHANNEL, + QEMU_CAPS_SCSI_BLOCK, + QEMU_CAPS_SCSI_CD, + QEMU_CAPS_IDE_CD, + QEMU_CAPS_NO_USER_CONFIG, + QEMU_CAPS_HDA_MICRO, + QEMU_CAPS_NEC_USB_XHCI, + QEMU_CAPS_NETDEV_BRIDGE, + QEMU_CAPS_SCSI_LSI, + QEMU_CAPS_VIRTIO_SCSI_PCI, + QEMU_CAPS_BLOCKIO, + QEMU_CAPS_DISABLE_S3, + QEMU_CAPS_DISABLE_S4, + QEMU_CAPS_USB_REDIR_FILTER, + QEMU_CAPS_IDE_DRIVE_WWN, + QEMU_CAPS_SCSI_DISK_WWN, + QEMU_CAPS_SECCOMP_SANDBOX, + QEMU_CAPS_DUMP_GUEST_CORE, + QEMU_CAPS_VNC, + QEMU_CAPS_USB_REDIR_BOOTINDEX, + QEMU_CAPS_USB_HOST_BOOTINDEX); + DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0, + QEMU_CAPS_VNC_COLON, + QEMU_CAPS_NO_REBOOT, + QEMU_CAPS_DRIVE, + QEMU_CAPS_NAME, + QEMU_CAPS_UUID, + QEMU_CAPS_VNET_HDR, + QEMU_CAPS_MIGRATE_QEMU_TCP, + QEMU_CAPS_MIGRATE_QEMU_EXEC, + QEMU_CAPS_DRIVE_CACHE_V2, + QEMU_CAPS_KVM, + QEMU_CAPS_DRIVE_CACHE_UNSAFE, + QEMU_CAPS_DRIVE_FORMAT, + QEMU_CAPS_DRIVE_SERIAL, + QEMU_CAPS_XEN_DOMID, + QEMU_CAPS_DRIVE_READONLY, + QEMU_CAPS_VGA, + QEMU_CAPS_0_10, + QEMU_CAPS_MEM_PATH, + QEMU_CAPS_SDL, + QEMU_CAPS_MIGRATE_QEMU_UNIX, + QEMU_CAPS_CHARDEV, + QEMU_CAPS_ENABLE_KVM, + QEMU_CAPS_MONITOR_JSON, + QEMU_CAPS_BALLOON, + QEMU_CAPS_DEVICE, + QEMU_CAPS_SMP_TOPOLOGY, + QEMU_CAPS_NETDEV, + QEMU_CAPS_RTC, + QEMU_CAPS_VHOST_NET, + QEMU_CAPS_NO_HPET, + QEMU_CAPS_NO_KVM_PIT, QEMU_CAPS_PCI_CONFIGFD, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_BOOT_MENU, @@ -825,7 +920,9 @@ mymain(void) QEMU_CAPS_PCI_BOOTINDEX, QEMU_CAPS_CCID_EMULATED, QEMU_CAPS_CCID_PASSTHRU, + QEMU_CAPS_CHARDEV_SPICEVMC, QEMU_CAPS_VIRTIO_TX_ALG, + QEMU_CAPS_DEVICE_QXL_VGA, QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_VIRTIO_IOEVENTFD, QEMU_CAPS_SGA, @@ -838,6 +935,7 @@ mymain(void) QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_VT82C686B_USB_UHCI, QEMU_CAPS_PCI_OHCI, + QEMU_CAPS_USB_REDIR, QEMU_CAPS_USB_HUB, QEMU_CAPS_NO_SHUTDOWN, QEMU_CAPS_PCI_ROMBAR, @@ -861,10 +959,16 @@ mymain(void) QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI_PCI, QEMU_CAPS_BLOCKIO, + QEMU_CAPS_DISABLE_S3, + QEMU_CAPS_DISABLE_S4, + QEMU_CAPS_USB_REDIR_FILTER, + QEMU_CAPS_IDE_DRIVE_WWN, QEMU_CAPS_SCSI_DISK_WWN, QEMU_CAPS_SECCOMP_SANDBOX, QEMU_CAPS_DUMP_GUEST_CORE, - QEMU_CAPS_VNC); + QEMU_CAPS_VNC, + QEMU_CAPS_USB_REDIR_BOOTINDEX, + QEMU_CAPS_USB_HOST_BOOTINDEX); return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; } -- 1.7.8.6

On 20.11.2012 19:47, Ján Tomko wrote:
Both generated with qemu-system-x86_64 --help > qemu-1.2.0
qemu-system-x86_64 \ -device ? \ -device pci-assign,? \ -device virtio-blk-pci,? \ -device virtio-net-pci,? \ -device scsi-disk,? \ -device PIIX4_PM,? \ -device usb-redir,? \ -device ide-drive,? \ -device usb-host,? 2> qemu-1.2.0-device
It seems I missed a few -device flags when doing this last time and I mixed up qemu and qemu-kvm. --- tests/qemuhelpdata/qemu-1.2.0 | 1 + tests/qemuhelpdata/qemu-1.2.0-device | 51 +++++-- tests/qemuhelpdata/qemu-kvm-1.2.0 | 276 ++++++++++++++++++++++++++++++ tests/qemuhelpdata/qemu-kvm-1.2.0-device | 222 ++++++++++++++++++++++++ tests/qemuhelptest.c | 106 +++++++++++- 5 files changed, 644 insertions(+), 12 deletions(-) create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0 create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0-device
diff --git a/tests/qemuhelpdata/qemu-1.2.0 b/tests/qemuhelpdata/qemu-1.2.0 index f52fdcb..78375f3 100644 --- a/tests/qemuhelpdata/qemu-1.2.0 +++ b/tests/qemuhelpdata/qemu-1.2.0 @@ -175,6 +175,7 @@ Character device options: -chardev stdio,id=id[,mux=on|off][,signal=on|off] -chardev tty,id=id,path=path[,mux=on|off] -chardev parport,id=id,path=path[,mux=on|off] +-chardev spicevmc,id=id,name=name[,debug=debug]
-iscsi [user=user][,password=password] [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE diff --git a/tests/qemuhelpdata/qemu-1.2.0-device b/tests/qemuhelpdata/qemu-1.2.0-device index 9230a93..5613e00 100644 --- a/tests/qemuhelpdata/qemu-1.2.0-device +++ b/tests/qemuhelpdata/qemu-1.2.0-device @@ -8,6 +8,7 @@ name "esp", bus System name "sysbus-ohci", bus System, desc "OHCI USB Controller" name "virtio-blk-pci", bus PCI, alias "virtio-blk" name "usb-uas", bus usb-bus +name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)" name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)" name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch" name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA" @@ -32,6 +33,7 @@ name "pci-ohci", bus PCI, desc "Apple USB Controller" name "nec-usb-xhci", bus PCI name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch" name "virtserialport", bus virtio-serial-bus +name "usb-redir", bus usb-bus name "usb-braille", bus usb-bus name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM" name "usb-wacom-tablet", bus usb-bus, desc "QEMU PenPartner Tablet" @@ -64,9 +66,9 @@ name "usb-bt-dongle", bus usb-bus name "usb-tablet", bus usb-bus name "isa-vga", bus ISA name "usb-kbd", bus usb-bus -name "kvm-pci-assign", bus PCI, alias "pci-assign", desc "KVM-based PCI passthrough" name "isa-applesmc", bus ISA name "rtl8139", bus PCI +name "qxl", bus PCI, desc "Spice QXL GPU (secondary)" name "i82557a", bus PCI, desc "Intel i82557A Ethernet" name "i82557c", bus PCI, desc "Intel i82557C Ethernet" name "usb-audio", bus usb-bus @@ -95,16 +97,6 @@ name "vt82c686b-usb-uhci", bus PCI name "usb-ehci", bus PCI name "i6300esb", bus PCI name "virtio-scsi-pci", bus PCI -kvm-pci-assign.host=pci-host-devaddr -kvm-pci-assign.prefer_msi=on/off -kvm-pci-assign.share_intx=on/off -kvm-pci-assign.bootindex=int32 -kvm-pci-assign.configfd=string -kvm-pci-assign.addr=pci-devfn -kvm-pci-assign.romfile=string -kvm-pci-assign.rombar=uint32 -kvm-pci-assign.multifunction=on/off -kvm-pci-assign.command_serr_enable=on/off virtio-blk-pci.class=hex32 virtio-blk-pci.drive=drive virtio-blk-pci.logical_block_size=blocksize @@ -179,3 +171,40 @@ scsi-disk.wwn=hex64 scsi-disk.channel=uint32 scsi-disk.scsi-id=uint32 scsi-disk.lun=uint32 +PIIX4_PM.smb_io_base=uint32 +PIIX4_PM.disable_s3=uint8 +PIIX4_PM.disable_s4=uint8 +PIIX4_PM.s4_val=uint8 +PIIX4_PM.addr=pci-devfn +PIIX4_PM.romfile=string +PIIX4_PM.rombar=uint32 +PIIX4_PM.multifunction=on/off +PIIX4_PM.command_serr_enable=on/off +usb-redir.chardev=chr +usb-redir.debug=uint8 +usb-redir.filter=string +usb-redir.bootindex=int32 +usb-redir.port=string +usb-redir.full-path=on/off +ide-drive.drive=drive +ide-drive.logical_block_size=blocksize +ide-drive.physical_block_size=blocksize +ide-drive.min_io_size=uint16 +ide-drive.opt_io_size=uint32 +ide-drive.bootindex=int32 +ide-drive.discard_granularity=uint32 +ide-drive.ver=string +ide-drive.wwn=hex64 +ide-drive.serial=string +ide-drive.model=string +ide-drive.unit=uint32 +usb-host.hostbus=uint32 +usb-host.hostaddr=uint32 +usb-host.hostport=string +usb-host.vendorid=hex32 +usb-host.productid=hex32 +usb-host.isobufs=uint32 +usb-host.bootindex=int32 +usb-host.pipeline=on/off +usb-host.port=string +usb-host.full-path=on/off diff --git a/tests/qemuhelpdata/qemu-kvm-1.2.0 b/tests/qemuhelpdata/qemu-kvm-1.2.0 new file mode 100644 index 0000000..372002a --- /dev/null +++ b/tests/qemuhelpdata/qemu-kvm-1.2.0 @@ -0,0 +1,276 @@ +QEMU emulator version 1.2.0 (qemu-kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard +usage: qemu-system-x86_64 [options] [disk_image] + +'disk_image' is a raw hard disk image for IDE hard disk 0 + +Standard options: +-h or -help display this help and exit +-version display version information and exit +-machine [type=]name[,prop[=value][,...]] + selects emulated machine (-machine ? for list) + property accel=accel1[:accel2[:...]] selects accelerator + supported accelerators are kvm, xen, tcg (default: tcg) + kernel_irqchip=on|off controls accelerated irqchip support + kvm_shadow_mem=size of KVM shadow MMU + dump-guest-core=on|off include guest memory in a core dump (default=on) +-cpu cpu select CPU (-cpu ? for list) +-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets] + set the number of CPUs to 'n' [default=1] + maxcpus= maximum number of total cpus, including + offline CPUs for hotplug, etc + cores= number of CPU cores on one socket + threads= number of threads on one CPU core + sockets= number of discrete sockets in the system +-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node] +-fda/-fdb file use 'file' as floppy disk 0/1 image +-hda/-hdb file use 'file' as IDE hard disk 0/1 image +-hdc/-hdd file use 'file' as IDE hard disk 2/3 image +-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master) +-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i] + [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off] + [,cache=writethrough|writeback|none|directsync|unsafe][,format=f] + [,serial=s][,addr=A][,id=name][,aio=threads|native] + [,readonly=on|off][,copy-on-read=on|off] + [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]] + use 'file' as a drive image +-set group.id.arg=value + set <arg> parameter for item <id> of type <group> + i.e. -set drive.$id.file=/path/to/image +-global driver.prop=value + set a global default for a driver property +-mtdblock file use 'file' as on-board Flash memory image +-sd file use 'file' as SecureDigital card image +-pflash file use 'file' as a parallel flash image +-boot [order=drives][,once=drives][,menu=on|off] + [,splash=sp_name][,splash-time=sp_time] + 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n) + 'sp_name': the file's name that would be passed to bios as logo picture, if menu=on + 'sp_time': the period that splash picture last if menu=on, unit is ms +-snapshot write to temporary files instead of disk image files +-m megs set virtual RAM size to megs MB [default=128] +-mem-path FILE provide backing storage for guest RAM +-mem-prealloc preallocate guest memory (use with -mem-path) +-k language use keyboard layout (for example 'fr' for French) +-audio-help print list of audio drivers and their options +-soundhw c1,... enable audio support + and only specified sound cards (comma separated list) + use -soundhw ? to get the list of supported cards + use -soundhw all to enable all of them +-balloon none disable balloon device +-balloon virtio[,addr=str] + enable virtio balloon device (default) +-usb enable the USB driver (will be the default soon) +-usbdevice name add the host or guest USB device 'name' +-device driver[,prop[=value][,...]] + add device (based on driver) + prop=value,... sets driver properties + use -device ? to print all possible drivers + use -device driver,? to print all possible properties + +File system options: +-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}] + [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] + +Virtual File system pass-through options: +-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none] + [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] +-virtfs_synth Create synthetic file system image + +-name string1[,process=string2] + set the name of the guest + string1 sets the window title and string2 the process name (on Linux) +-uuid %08x-%04x-%04x-%04x-%012x + specify machine UUID + +Display options: +-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off] + [,window_close=on|off]|curses|none| + vnc=<display>[,<optargs>] + select display type +-nographic disable graphical output and redirect serial I/Os to console +-curses use a curses/ncurses interface instead of SDL +-no-frame open SDL window without a frame and window decorations +-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt) +-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt) +-no-quit disable SDL window close capability +-sdl enable SDL +-spice <args> enable spice +-portrait rotate graphical output 90 deg left (only PXA LCD) +-rotate <deg> rotate graphical output some deg left (only PXA LCD) +-vga [std|cirrus|vmware|qxl|xenfb|none] + select video card type +-full-screen start in full screen +-vnc display start a VNC server on display + +i386 target only: +-win2k-hack use it when installing Windows 2000 to avoid a disk full bug +-no-fd-bootchk disable boot signature checking for floppy disks +-no-acpi disable ACPI +-no-hpet disable HPET +-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...] + ACPI table description +-smbios file=binary + load SMBIOS entry from binary file +-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d] + specify SMBIOS type 0 fields +-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str] + [,uuid=uuid][,sku=str][,family=str] + specify SMBIOS type 1 fields + +Network options: +-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v] + create a new Network Interface Card and connect it to VLAN 'n' +-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off] + [,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f] + [,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]] + connect the user mode network stack to VLAN 'n', configure its + DHCP server and enabled optional services +-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off] + connect the host TAP network interface to VLAN 'n'
This line adds a space at EOL. ACK if that's fixed. Michal

On 11/21/2012 10:44 AM, Michal Privoznik wrote:
On 20.11.2012 19:47, Ján Tomko wrote:
Both generated with qemu-system-x86_64 --help > qemu-1.2.0
qemu-system-x86_64 \ -device ? \ -device pci-assign,? \ -device virtio-blk-pci,? \ -device virtio-net-pci,? \ -device scsi-disk,? \ -device PIIX4_PM,? \ -device usb-redir,? \ -device ide-drive,? \ -device usb-host,? 2> qemu-1.2.0-device
It seems I missed a few -device flags when doing this last time and I mixed up qemu and qemu-kvm. ---
+-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off] + connect the host TAP network interface to VLAN 'n'
This line adds a space at EOL.
That space is present in actual qemu output. This file should be exempt from our syntax check rules.
ACK if that's fixed.
There's nothing to fix. We should be using the qemu output as-is (and raising an upstream bug report so that 1.3 won't have the trailing space; except that for 1.3, we won't be scraping -help output, so we need to figure out how to start testing feature detection in 1.2 and beyond to match our new QMP usage). -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 20.11.2012 19:47, Ján Tomko wrote:
Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 missed the functionality for redirected USB devices (fixed in 1/4), documentation and tests.
https://bugzilla.redhat.com/show_bug.cgi?id=805414
Ján Tomko (4): conf: add support for booting from redirected USB devices docs: boot order for host and redirected USB devices tests: add boot order for host and redirected USB to qemu argv test tests: update qemuhelptest data
docs/formatdomain.html.in | 27 ++- src/conf/domain_conf.c | 34 ++-- tests/qemuhelpdata/qemu-1.2.0 | 1 + tests/qemuhelpdata/qemu-1.2.0-device | 51 +++- tests/qemuhelpdata/qemu-kvm-1.2.0 | 276 ++++++++++++++++++++ tests/qemuhelpdata/qemu-kvm-1.2.0-device | 222 ++++++++++++++++ tests/qemuhelptest.c | 106 ++++++++- ...muxml2argv-hostdev-usb-address-device-boot.args | 6 + ...emuxml2argv-hostdev-usb-address-device-boot.xml | 28 ++ .../qemuxml2argv-usb-redir-boot.args | 10 + .../qemuxml2argv-usb-redir-boot.xml | 42 +++ tests/qemuxml2argvtest.c | 9 + 12 files changed, 775 insertions(+), 37 deletions(-) create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0 create mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0-device create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device-boot.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-redir-boot.xml
I went ahead, ACKed and pushed this. However, meanwhile I've: -split 2/4 patch into two smaller ones -split huge line in 3/4 -fixed space at EOL in 4/4 Michal

On 11/21/2012 10:43 AM, Michal Privoznik wrote:
On 20.11.2012 19:47, Ján Tomko wrote:
Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 missed the functionality for redirected USB devices (fixed in 1/4), documentation and tests.
I went ahead, ACKed and pushed this. However, meanwhile I've: -split 2/4 patch into two smaller ones -split huge line in 3/4 -fixed space at EOL in 4/4
I think you should undo this fix, and match actual qemu output (even if it DOES have a trailing space), as that particular file should be exempt from whitespace enforcement. (If git gives you problems for pushing a trailing space, ping me on IRC, and I'll help you figure out what to tweak). -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 21.11.2012 18:53, Eric Blake wrote:
On 11/21/2012 10:43 AM, Michal Privoznik wrote:
On 20.11.2012 19:47, Ján Tomko wrote:
Commit a4c19459aa8634c43b51e8138fb1d7eec4c17824 missed the functionality for redirected USB devices (fixed in 1/4), documentation and tests.
I went ahead, ACKed and pushed this. However, meanwhile I've: -split 2/4 patch into two smaller ones -split huge line in 3/4 -fixed space at EOL in 4/4
I think you should undo this fix, and match actual qemu output (even if it DOES have a trailing space), as that particular file should be exempt from whitespace enforcement. (If git gives you problems for pushing a trailing space, ping me on IRC, and I'll help you figure out what to tweak).
Okay, I've fixed it. Surprisingly, there was no problem pushing the previous version. In fact, we don't run the syntax-check rule on tests/qemuhelpdata/* as I learned after digging into things. Anyway, I've proposed patch on qemu upstream list: http://lists.nongnu.org/archive/html/qemu-devel/2012-11/msg02525.html Michal
participants (3)
-
Eric Blake
-
Ján Tomko
-
Michal Privoznik