From: Jim Fehlig <jfehlig@xxxxxxxx> Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of USB hostdevs. Advertise support for USB hostdevs in the domcapabilities. In addition add the appropriate caps for USB support on domaincapstest when libvirt is built on a Xen with LIBXL_HAVE_PVUSB. Otherwise domaincapstest would fail i.e. testing the wrong domain capabilities. Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> Signed-off-by: Joao Martins <joao.m.martins@xxxxxxxxxx> --- Changes since v2: - Change domaincapstest to target (non-)PVUSB caps. --- src/libxl/libxl_capabilities.c | 5 ++ tests/domaincapsschemadata/libxl-xenfv-usb.xml | 69 ++++++++++++++++++++++++++ tests/domaincapsschemadata/libxl-xenpv-usb.xml | 59 ++++++++++++++++++++++ tests/domaincapstest.c | 12 ++++- 4 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 tests/domaincapsschemadata/libxl-xenfv-usb.xml create mode 100644 tests/domaincapsschemadata/libxl-xenpv-usb.xml diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c index 45f0988..0145116 100644 --- a/src/libxl/libxl_capabilities.c +++ b/src/libxl/libxl_capabilities.c @@ -492,6 +492,11 @@ libxlMakeDomainDeviceHostdevCaps(virDomainCapsDeviceHostdevPtr dev) VIR_DOMAIN_CAPS_ENUM_SET(dev->subsysType, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI); +#ifdef LIBXL_HAVE_PVUSB + VIR_DOMAIN_CAPS_ENUM_SET(dev->subsysType, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB); +#endif + /* No virDomainHostdevCapsType for libxl */ virDomainCapsEnumClear(&dev->capsType); diff --git a/tests/domaincapsschemadata/libxl-xenfv-usb.xml b/tests/domaincapsschemadata/libxl-xenfv-usb.xml new file mode 100644 index 0000000..c071d12 --- /dev/null +++ b/tests/domaincapsschemadata/libxl-xenfv-usb.xml @@ -0,0 +1,69 @@ +<domainCapabilities> + <path>/usr/bin/qemu-system-x86_64</path> + <domain>xen</domain> + <machine>xenfv</machine> + <arch>x86_64</arch> + <vcpu max='128'/> + <os supported='yes'> + <loader supported='yes'> + <value>/usr/lib/xen/boot/hvmloader</value> + <value>/usr/lib/xen/boot/ovmf.bin</value> + <enum name='type'> + <value>rom</value> + <value>pflash</value> + </enum> + <enum name='readonly'> + <value>yes</value> + </enum> + </loader> + </os> + <devices> + <disk supported='yes'> + <enum name='diskDevice'> + <value>disk</value> + <value>cdrom</value> + </enum> + <enum name='bus'> + <value>ide</value> + <value>scsi</value> + <value>xen</value> + </enum> + </disk> + <graphics supported='yes'> + <enum name='type'> + <value>sdl</value> + <value>vnc</value> + <value>spice</value> + </enum> + </graphics> + <video supported='yes'> + <enum name='modelType'> + <value>vga</value> + <value>cirrus</value> + <value>xen</value> + </enum> + </video> + <hostdev supported='yes'> + <enum name='mode'> + <value>subsystem</value> + </enum> + <enum name='startupPolicy'> + <value>default</value> + <value>mandatory</value> + <value>requisite</value> + <value>optional</value> + </enum> + <enum name='subsysType'> + <value>usb</value> + <value>pci</value> + </enum> + <enum name='capsType'/> + <enum name='pciBackend'> + <value>xen</value> + </enum> + </hostdev> + </devices> + <features> + <gic supported='no'/> + </features> +</domainCapabilities> diff --git a/tests/domaincapsschemadata/libxl-xenpv-usb.xml b/tests/domaincapsschemadata/libxl-xenpv-usb.xml new file mode 100644 index 0000000..4dd07bd --- /dev/null +++ b/tests/domaincapsschemadata/libxl-xenpv-usb.xml @@ -0,0 +1,59 @@ +<domainCapabilities> + <path>/usr/bin/qemu-system-x86_64</path> + <domain>xen</domain> + <machine>xenpv</machine> + <arch>x86_64</arch> + <vcpu max='512'/> + <os supported='yes'> + <loader supported='no'/> + </os> + <devices> + <disk supported='yes'> + <enum name='diskDevice'> + <value>disk</value> + <value>cdrom</value> + </enum> + <enum name='bus'> + <value>ide</value> + <value>scsi</value> + <value>xen</value> + </enum> + </disk> + <graphics supported='yes'> + <enum name='type'> + <value>sdl</value> + <value>vnc</value> + <value>spice</value> + </enum> + </graphics> + <video supported='yes'> + <enum name='modelType'> + <value>vga</value> + <value>cirrus</value> + <value>xen</value> + </enum> + </video> + <hostdev supported='yes'> + <enum name='mode'> + <value>subsystem</value> + </enum> + <enum name='startupPolicy'> + <value>default</value> + <value>mandatory</value> + <value>requisite</value> + <value>optional</value> + </enum> + <enum name='subsysType'> + <value>usb</value> + <value>pci</value> + </enum> + <enum name='capsType'/> + <enum name='pciBackend'> + <value>xen</value> + </enum> + </hostdev> + </devices> + <features> + <gic supported='no'/> + </features> +</domainCapabilities> diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index 9fb2c97..ae31146 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -367,9 +367,17 @@ mymain(void) #if WITH_LIBXL - DO_TEST_LIBXL("libxl-xenpv", "/usr/bin/qemu-system-x86_64", +# ifdef LIBXL_HAVE_PVUSB +# define LIBXL_XENPV_CAPS "libxl-xenpv-usb" +# define LIBXL_XENFV_CAPS "libxl-xenfv-usb" +# else +# define LIBXL_XENPV_CAPS "libxl-xenpv" +# define LIBXL_XENFV_CAPS "libxl-xenfv" +# endif + + DO_TEST_LIBXL(LIBXL_XENPV_CAPS, "/usr/bin/qemu-system-x86_64", "xenpv", "x86_64", VIR_DOMAIN_VIRT_XEN); - DO_TEST_LIBXL("libxl-xenfv", "/usr/bin/qemu-system-x86_64", + DO_TEST_LIBXL(LIBXL_XENFV_CAPS, "/usr/bin/qemu-system-x86_64", "xenfv", "x86_64", VIR_DOMAIN_VIRT_XEN); #endif /* WITH_LIBXL */ -- 2.1.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list