[libvirt] [PATCH] libxl: add USB to hostdev domcapabilities

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. Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+) 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); -- 2.1.4

On 06/16/2016 10:59 PM, Jim Fehlig wrote:
Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of ^ hotplug USB hostdevs. Advertise support for USB hostdevs in the domcapabilities.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+)
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 + Hm, this also requires changes on domaincapstest otherwise the test will fail for Xen = 4.7. Probably to cover also < Xen 4.7 we would end up having two sets of caps to test and have libxl_capabilities.h advertise whether it was built with PVUSB support or not?
Joao

On 06/16/2016 11:30 PM, Joao Martins wrote:
On 06/16/2016 10:59 PM, Jim Fehlig wrote:
Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of ^ hotplug USB hostdevs. Advertise support for USB hostdevs in the domcapabilities.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+)
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 + Hm, this also requires changes on domaincapstest otherwise the test will fail for Xen = 4.7. Probably to cover also < Xen 4.7 we would end up having two sets of caps to test and have libxl_capabilities.h advertise whether it was built with PVUSB support or not?
Since I was the one suggesting to add usb to the domain caps I went ahead and attempted the suggested fix above. With the diff below ammend to this patch, domaincapstest can now pass. Thanks! Joao 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..e988f38 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", +# if 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 */

On 06/17/2016 11:11 AM, Joao Martins wrote:
On 06/16/2016 11:30 PM, Joao Martins wrote:
On 06/16/2016 10:59 PM, Jim Fehlig wrote:
Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of ^ hotplug USB hostdevs. Advertise support for USB hostdevs in the domcapabilities.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+)
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 + Hm, this also requires changes on domaincapstest otherwise the test will fail for Xen = 4.7. Probably to cover also < Xen 4.7 we would end up having two sets of caps to test and have libxl_capabilities.h advertise whether it was built with PVUSB support or not?
Since I was the one suggesting to add usb to the domain caps I went ahead and attempted the suggested fix above. With the diff below ammend to this patch, domaincapstest can now pass.
Diff contained a mistake see below.
Thanks! Joao
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..e988f38 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", +# if LIBXL_HAVE_PVUSB There's a mistake here that would complain on non Xen 4.7 versions. It should be "# ifdef" and not just "# if"
+# 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 */

On 06/17/2016 04:11 AM, Joao Martins wrote:
On 06/16/2016 11:30 PM, Joao Martins wrote:
On 06/16/2016 10:59 PM, Jim Fehlig wrote:
Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of ^ hotplug USB hostdevs. Advertise support for USB hostdevs in the domcapabilities.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+)
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 + Hm, this also requires changes on domaincapstest otherwise the test will fail for Xen = 4.7. Probably to cover also < Xen 4.7 we would end up having two sets of caps to test and have libxl_capabilities.h advertise whether it was built with PVUSB support or not? Since I was the one suggesting to add usb to the domain caps I went ahead and attempted the suggested fix above. With the diff below ammend to this patch, domaincapstest can now pass.
Thanks Joao! Can you send a V2 with all your changes squashed together? Regards, Jim

On 06/17/2016 04:24 PM, Jim Fehlig wrote:
On 06/17/2016 04:11 AM, Joao Martins wrote:
On 06/16/2016 11:30 PM, Joao Martins wrote:
On 06/16/2016 10:59 PM, Jim Fehlig wrote:
Commit 2a58ed0b added support for creating guests with USB hostdevs. Commit fc21d10 later added support for hotplut of ^ hotplug USB hostdevs. Advertise support for USB hostdevs in the domcapabilities.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 5 +++++ 1 file changed, 5 insertions(+)
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 + Hm, this also requires changes on domaincapstest otherwise the test will fail for Xen = 4.7. Probably to cover also < Xen 4.7 we would end up having two sets of caps to test and have libxl_capabilities.h advertise whether it was built with PVUSB support or not? Since I was the one suggesting to add usb to the domain caps I went ahead and attempted the suggested fix above. With the diff below ammend to this patch, domaincapstest can now pass.
Thanks Joao! Can you send a V2 with all your changes squashed together?
Just sent a v2 a bit ago :) Message-Id: <1466178454-19024-1-git-send-email-joao.m.martins@oracle.com> https://www.redhat.com/archives/libvir-list/2016-June/msg01185.html Joao
participants (2)
-
Jim Fehlig
-
Joao Martins