From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34476) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF2BN-0000qr-Ed for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:18:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TF2BI-000069-7V for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:18:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55612) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF2BH-000060-VU for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:18:04 -0400 Message-ID: <505C5B3C.8050202@redhat.com> Date: Fri, 21 Sep 2012 14:19:08 +0200 From: Hans de Goede MIME-Version: 1.0 References: <3321480.8UDes0xfFC@segfault.sh0n.net> <505B3848.9070802@redhat.com> <6177450.mT8I4ey0nz@segfault.sh0n.net> <2098688.OVovPi9fnz@segfault.sh0n.net> In-Reply-To: <2098688.OVovPi9fnz@segfault.sh0n.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] EHCI USB regression in 1.2.0 - ehci_state_fetchqtd() asserting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Shawn Starr Cc: qemu-devel@nongnu.org, gerd@kraxel.org Hi, On 09/21/2012 02:04 AM, Shawn Starr wrote: > On Thursday, September 20, 2012 07:29:08 PM Shawn Starr wrote: >> On Thursday, September 20, 2012 05:37:44 PM Hans de Goede wrote: >>> Hi, >>> >>> On 09/19/2012 06:42 PM, Shawn Starr wrote: >>>> Hello QMU folks, >>>> >>>> The latest EHCI patches and or USB redirection ones have caused a >>>> regression. Using the (legacy) qemu-kvm git master repository which does >>>> not have these patches (not sure which patch is causing assert >>>> specifically yet). Using a Logitech QuickCam Pro 9000 and starting a >>>> Windows VM will crash when the device is detected. >>>> >>>> Crash in log: >>>> >>>> qemu-kvm: /builddir/build/BUILD/qemu-kvm-1.2.0/hw/usb/hcd-ehci.c:2018: >>>> ehci_state_fetchqtd: Assertion `0' failed. 2012-09-19 15:36:04.011+0000: >>>> shutting down >>>> >>>> I only came to this conclusion after noticing at least in Fedora that >>>> 1.2.0-rc1 did not have any of the EHCI and USB redirection patches >>>> added. >>>> So by using the -rc1 spec file w/o the patches I can use Qemu/KVM >>>> successfully w/ webcam and no asserts. >>>> >>>> I have also installed: usbredir-0.5-1.fc18.x86_64 >>> >>> Thanks for reporting this. This is caused by a recent change to >>> fix a memory leak inside the ehci codes interrupt ep handling, together >>> >>> with: >>> // TODO Windows does not seem to ever set the MULT field >>> >>> The above windows bug (not setting the MULT field is against the spec), >>> causes ehci_state_execute() to exit without even executing the packet >>> once, >>> which leaves the packet in an uninitialized state. And when fetchqtd then >>> later on sees there already is a packet in flight for the ep queue, it >>> barfs on it not being initialized. >>> >>> I already had looking into the windows MULT issue on my to do, so I've >>> just >>> bumped it to the top :) >>> >>> Unfortunately I cannot reproduce what you are seeing even though I do have >>> a logitech pro 9000 to test with myself. I've tried with both a 32 bits >>> windows XP as a 32 bits windows 7, what guest OS are you running? >>> >>> Besides not being able to reproduce I've written what I believe is a fix >>> for this. I'll post that to the list right after this mail. >>> >>> Can you test qemu build with the fix added? And please also set the >>> usb-redir device's debug parameter to 4 and send me the generated qemu log >>> ? This will allow me to see not only the assert is gone but that also the >>> interrupt ep is working properly... >>> >>> To set the debug to 4 use ie: >>> -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=4 >>> >>> Do this for all the usb-redir devices on your cmdline! >> >> I did and log shows: >> >> USBDEVFS_SUBMITURB: Cannot allocate memory >> Unexpected iso usb result: -3 >> >> This is flooding the log when the cam is enabled (black screen) it goes on >> but nothing shown >> >> I manually added to libvirt config for the VM to enable usb-redir device >> >> >> >> >> >> >> >> >> >> New command line: >> >> /usr/bin/qemu-kvm -name Windows -S -M pc-1.2 -cpu Penryn,+osxsave,+xsave, >> +pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss, >> +acpi,+ds,+vme -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -uuid >> 41562d70-d0a8-25bc-10ec-a3dc46b3d258 -no-user-config -nodefaults -chardev >> socket,id=charmonitor,path=/var/lib/libvirt/qemu/Windows.monitor,server,nowa >> it -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no- >> shutdown -boot order=dc,menu=on -device ich9-usb- >> ehci1,id=usb,bus=pci.0,addr=0x3.0x7 -device ich9-usb- >> uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x3 >> -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x3.0x1 >> -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x3.0x2 >> -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x8 -device virtio-serial- >> pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive >> file=/home/spstarr/VMs/Windows.img,if=none,id=drive- >> scsi0-0-0-0,format=raw,cache=none -device >> scsi-hd,bus=scsi0.0,channel=0,scsi- >> id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0 -drive >> file=/home/spstarr/Downloads/virtio-win-0.1-30.iso,if=none,id=drive- >> ide0-1-0,readonly=on,format=raw,cache=none -device ide- >> cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev >> tap,fd=22,id=hostnet0,vhost=on,vhostfd=23 -device virtio-net- >> pci,netdev=hostnet0,id=net0,mac=52:54:00:cf:06:63,bus=pci.0,addr=0x7 >> -chardev spicevmc,id=charchannel0,name=vdagent -device >> virtserialport,bus=virtio- >> serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 - >> device usb-tablet,id=input0 -spice port=5900,addr=0.0.0.0,disable-ticketing >> - vga qxl -global qxl-vga.vram_size=134217728 -device intel- >> hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0- >> codec0,bus=sound0.0,cad=0 -device usb-host,hostbus=1,hostaddr=4,id=hostdev0 >> - device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -chardev >> spicevmc,id=charredir0,name=usbredir,debug=4 -device usb- >> redir,chardev=charredir0,id=redir0,debug=4 >> Ok, so your using host redirection here, see the device usb-host > In addition, if i disable usb-redirection device the cam works as it did > before (although like before, the video image is upside down in some > applications). When you say disable the usb-redirection device, do you mean removing the host redirection, and selecting the cam for redirection in a spice client (ie remote-viewer) instead, or... ? Can you please try, disabling host-redirection, then connecting to the vm with remote-viewer and then selecting the cam from remote-viewers UI? Thanks, Hans