Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:Update
libvirt.6841
e01d300b-libxl-usb-vendor.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File e01d300b-libxl-usb-vendor.patch of Package libvirt.6841
From e01d300bb1b2185536c81858e4e707e1f16a4c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= <cbosdonnat@suse.com> Date: Wed, 10 Aug 2016 18:39:12 -0600 Subject: [PATCH 2/2] libxl: allow vendor/product addressing for USB hostdevs libxl only has API to address the host USB devices by bus/device. Find the bus/device if the user only provided the vendor/product of the USB device. Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_conf.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) Index: libvirt-2.0.0/src/libxl/libxl_conf.c =================================================================== --- libvirt-2.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-2.0.0/src/libxl/libxl_conf.c @@ -1519,23 +1519,36 @@ int libxlMakeUSB(virDomainHostdevDefPtr hostdev, libxl_device_usbdev *usbdev) { virDomainHostdevSubsysUSBPtr usbsrc = &hostdev->source.subsys.u.usb; + virUSBDevicePtr usb = NULL; + int ret = -1; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) - return -1; + return ret; if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) - return -1; + return ret; - if (usbsrc->bus <= 0 || usbsrc->device <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("libxenlight supports only USB device " - "specified by busnum:devnum")); - return -1; + if (usbsrc->bus > 0 && usbsrc->device > 0) { + usbdev->u.hostdev.hostbus = usbsrc->bus; + usbdev->u.hostdev.hostaddr = usbsrc->device; + } else { + if (virHostdevFindUSBDevice(hostdev, true, &usb) < 0) { + virReportError(VIR_ERR_OPERATION_FAILED, + _("failed to find USB device busnum:devnum " + "for %x:%x"), + usbsrc->vendor, usbsrc->product); + goto cleanup; + } + + usbdev->u.hostdev.hostbus = virUSBDeviceGetBus(usb); + usbdev->u.hostdev.hostaddr = virUSBDeviceGetDevno(usb); } - usbdev->u.hostdev.hostbus = usbsrc->bus; - usbdev->u.hostdev.hostaddr = usbsrc->device; + ret = 0; + + cleanup: + virUSBDeviceFree(usb); - return 0; + return ret; } static int
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor