From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEint-0001e3-DC for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:36:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEins-0001tr-CF for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:36:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:7598) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEins-0001tk-3q for qemu-devel@nongnu.org; Thu, 20 Sep 2012 11:36:36 -0400 Message-ID: <505B3848.9070802@redhat.com> Date: Thu, 20 Sep 2012 17:37:44 +0200 From: Hans de Goede MIME-Version: 1.0 References: <3321480.8UDes0xfFC@segfault.sh0n.net> In-Reply-To: <3321480.8UDes0xfFC@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/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! Regards, Hans