On 2013-11-05 21:20, Jens Frederich wrote: >> On 2013-11-05 17:01, Frederich, Jens wrote: >>> Hi all, >>> >>> we're currently evaluating different RTOS systems (Windows CE, Intime, RTX, >>> etc.). >>> One system is Linux RT + KVM/QEMU with a Windows 7 guest. Up to now all >>> works fine, Linux RT has good latency and KVM/Qemu setup was easy. But one >>> QEMU bug >>> breaks my measurement setup and evaluation. >>> >>> I've some usb devices for the Windows 7 guest. I configure them as USB >>> passthrough. >>> The devices appears in the device manager of Windows 7, but with >>> "Error code 10": device cannot start". The Windows driver fails on USB set >>> configuration. >>> The driver creates a IRP and send it via IOCTRL to lower layer. The IOCTRL >>> fails with >>> invalid parameter. >>> >>> driver log: >>> 00000009 0.65470564 vnCDrvUsbControlRequestSetConfiguration, >>> WdfUsbTargetDeviceSelectConfig single interface failed 0xc000000d >>> 00000010 0.65472370 vnCDrvUsbIFPrepareHardwareState, >>> vnCDrvUsbControlRequestSetConfiguration failed: 0xc000000d >>> 00000011 0.65473646 vnCDrvDevConPrepareHardware, >>> vnCDrvUsbIFPrepareHardwareState failed 0xc000000d >>> 00000012 0.65474838 vnCDrvEvtDevicePrepareHardware, >>> vnCDrvDevConPrepareHardware failed 0xc0000001 >>> 00000013 0.6547 >>> >>> This bug breaks my latency measurement setup and Linux RT is out of the >>> evaluationg >>> race. Windows CE should not win :-), it there anyway workaround or hack to >>> fix the issue? >> >> Workaround: Pass-through one of the (typically) many USB host >> controllers to the Windows guest (vfio or classic pci-assign). I did >> this back then when *HCI emulation was still pretty immature. >> >> But USB device pass-through should also work. Do you happen to pass a >> USB 2.0 device via an emulated UHCI? Or are you already using the EHCI >> emulation? > > I'm not sure which mode it has been. I've used the virt-manager to configure > the device. A usb controller is already configured in mode 'default'. > My steps on virt-manager: > > 1. add hardware > 2. select usb host device > 3. I can see my usb device, I select it > 4. start guest and open Windows device manager
Unfortunately, I do not know what virt-manager is configuring by default. It likely also depends on its version, so you should share this information as well. Maybe other folks here can comment on this. > > I don't know is this UHCI or EHCI? On the usb host device list are > some controller listed e.q. xhci, ehci and so on. Should I map these > controller to Windows 7 as well? Pick the host controller to which the USB device you want to give to the guest is attached to (lsusb and the bus number reported via /sys/bus/pci/devices/<id>/usbX can tell this - or trial and error). When doing this, you no longer need to pass through the USB device itself, it is implicitely passed. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SES-DE Corporate Competence Center Embedded Linux