From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KTh3s-0005Ib-TC for qemu-devel@nongnu.org; Thu, 14 Aug 2008 13:56:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KTh3r-0005IN-DQ for qemu-devel@nongnu.org; Thu, 14 Aug 2008 13:56:36 -0400 Received: from [199.232.76.173] (port=35406 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KTh3r-0005II-8a for qemu-devel@nongnu.org; Thu, 14 Aug 2008 13:56:35 -0400 Received: from wr-out-0506.google.com ([64.233.184.236]:15885) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KTh3q-0003lh-Ab for qemu-devel@nongnu.org; Thu, 14 Aug 2008 13:56:35 -0400 Received: by wr-out-0506.google.com with SMTP id c46so731293wra.18 for ; Thu, 14 Aug 2008 10:56:33 -0700 (PDT) Message-ID: <48A471AA.2010001@codemonkey.ws> Date: Thu, 14 Aug 2008 12:55:54 -0500 From: Anthony Liguori MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 0/5] Various USB fixes and improvements Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Krasnyansky Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org Max Krasnyansky wrote: > This patch series started when I tried to share USB ports between > four instances of Windows XP running on the same Linux box (under KVM). > I quickly realized that current USB support is not very flexible. We do > not handle devices disconnects, there is not way to assign certain USB > ports to VM instance, etc. > > Once I fixed that I discovered that USB devices that I absolutely need > in the VMs (Xilinx and Altera USB dongles) do not really work with > QEMU. VMs were getting stuck, applications unhappy, etc. > So I endded up rewriting UHCI and Linux host USB layers to make them > fully async and to support multiple outstanding transactions. > > The result is quite nice. We can now assign USB buses to VM instances > and devices are automatically connected to the VMs. Just do > usb_add host:N.* > in the console or -usbdevice command line option (N is the bus number). > Also when device is disconnected from the host it's automatically removed > from the guest. > > Host USB devices operate in fully async mode (except the control transfers). > All the stalls and jerkiness due to long synchronous transactions is gone. > I can easily hook up four different USB devices (mouse, CF card reader, > phone, Xilinx dongle) and everything is working perfectly. Mouse movements > are silky smooth :). > > I did some profiling with OProfile and we seems to be doing ok while XP is > pumping ~10 MBytes over USB (reported by one of the apps I'm using). UHCI > stuff is well below VNC for example. > > There is more work to be done (async control transfers for example). But I > think this is way better than what we have now and is ready for more testing > by wider audience. > > Most of the testing so far was done with KVM flavor of QEMU. I did test > generic i386-softmmu target a bit, it's too slow for any serious testing > with XP. I did full compile (all targets) too and it went fine. > Altogether this patch series looks very promising. The current USB pass through code is pretty fickle so some clean-up is definitely needed. I don't understand USB well enough to do a thorough review. I hope others can look through it and provide more detailed feedback. I'll do some testing of it tonight. Regards, Anthony Liguori