ssize_t QUsb::qhyccd_get_device_list(qhyccd_device ***list) { ssize_t length = 0; libusb_device **usb_devices; ssize_t usb_devices_num; ssize_t i; *list = (qhyccd_device**)malloc(sizeof(qhyccd_device*)); (*list)[length] = NULL; usb_devices_num = libusb_get_device_list(qhyusb->ctx, &usb_devices); if (usb_devices_num < 0) { return -1; } for (i = 0; i < usb_devices_num; i++) { libusb_device *device = usb_devices[i]; if (is_supported_device(device)) { libusb_ref_device(device); (*list)[length] = device; length++; *list = (qhyccd_device**) realloc(*list, sizeof(qhyccd_device*) * (length + 1)); (*list)[length] = NULL; } } libusb_free_device_list(usb_devices, 1); return length; }
/** * intel_gvt_init - initialize GVT components * @dev_priv: drm i915 private data * * This function is called at the initialization stage to create a GVT device. * * Returns: * Zero on success, negative error code if failed. * */ int intel_gvt_init(struct drm_i915_private *dev_priv) { int ret; if (!i915.enable_gvt) { DRM_DEBUG_DRIVER("GVT-g is disabled by kernel params\n"); return 0; } if (!is_supported_device(dev_priv)) { DRM_DEBUG_DRIVER("Unsupported device. GVT-g is disabled\n"); goto bail; } /* * We're not in host or fail to find a MPT module, disable GVT-g */ ret = intel_gvt_init_host(); if (ret) { DRM_DEBUG_DRIVER("Not in host or MPT modules not found\n"); goto bail; } ret = intel_gvt_init_device(dev_priv); if (ret) { DRM_DEBUG_DRIVER("Fail to init GVT device\n"); goto bail; } return 0; bail: i915.enable_gvt = 0; return 0; }
/** * intel_gvt_sanitize_options - sanitize GVT related options * @dev_priv: drm i915 private data * * This function is called at the i915 options sanitize stage. */ void intel_gvt_sanitize_options(struct drm_i915_private *dev_priv) { if (!i915_modparams.enable_gvt) return; if (intel_vgpu_active(dev_priv)) { DRM_INFO("GVT-g is disabled for guest\n"); goto bail; } if (!is_supported_device(dev_priv)) { DRM_INFO("Unsupported device. GVT-g is disabled\n"); goto bail; } return; bail: i915_modparams.enable_gvt = 0; }