From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vdx4d-0002A7-KS for qemu-devel@nongnu.org; Wed, 06 Nov 2013 01:58:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vdx4W-0004PV-B0 for qemu-devel@nongnu.org; Wed, 06 Nov 2013 01:58:43 -0500 Received: from david.siemens.de ([192.35.17.14]:31301) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vdx4V-0004PK-W4 for qemu-devel@nongnu.org; Wed, 06 Nov 2013 01:58:36 -0500 Message-ID: <5279E893.6070805@siemens.com> Date: Wed, 06 Nov 2013 07:58:27 +0100 From: Jan Kiszka MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] USB Passthrough not working for Windows 7 guest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jens Frederich , qemu-devel@nongnu.org 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//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