From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KV9vj-0001i8-FS for qemu-devel@nongnu.org; Mon, 18 Aug 2008 14:58:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KV9vh-0001ho-7U for qemu-devel@nongnu.org; Mon, 18 Aug 2008 14:58:14 -0400 Received: from [199.232.76.173] (port=42336 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KV9vh-0001hl-2K for qemu-devel@nongnu.org; Mon, 18 Aug 2008 14:58:13 -0400 Received: from hera.kernel.org ([140.211.167.34]:52016) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KV9vg-0002K1-7y for qemu-devel@nongnu.org; Mon, 18 Aug 2008 14:58:12 -0400 Message-ID: <48A9C630.30108@kernel.org> Date: Mon, 18 Aug 2008 11:57:52 -0700 From: Max Krasnyansky MIME-Version: 1.0 References: <48A98102.10904@codemonkey.ws> In-Reply-To: <48A98102.10904@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 0/8] Various USB fixes and improvements (update 2) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, Paul Brook Anthony Liguori wrote: > Any objections to applying this series? It seems like the consensus is > that OHCI support is better long term but this series seems pretty sane > and self-contained. I'm actually having seconds thought on the OHCI vs UHCI. You probably saw my reply to Paul. New UHCI code is fairly clean and simple, and is working well. But I definitely think that we should fix OHCI too, and at some point we need to add EHCI (ie USB 2.0 stuff). I have more patches coming. I made isoc transactions work on Friday which made MS VX-3000 USB camera totally usable (will send a patch in a couple of hours). And I'm working on making control transactions async too which should shave off last bits of bad latency (2-3milliseconds) from the USB code. Initially I thought control stuff is not very frequent but this stupid USB webcam drivers does one very often. So yeah, it be nice if this stuff is merged soonish :). btw If you're using git as a front end to the SVN I can push my git tree somewhere to kernel.org so that you can just pull the whole thing. Max > > Regards, > > Anthony Liguori > > Max Krasnyansky wrote: >> This is an updated version of the USB patches I sent out yesterday. >> It includes changes and fixes suggested by Anthony. >> >> This time I also did more testing with XP running on top of QEMU/KQEMU >> (used to be QEMU/KVM). >> >> Max Krasnyansky (8): >> husb: support for USB host device auto disconnect. >> husb: support for USB host device auto connect. >> usb: generic packet handler cleanup and documentation >> uhci: rewrite UHCI emulator, fully async operation with multiple >> outstanding transactions >> husb: rewrite Linux host USB layer, fully async operation >> husb: remove disconnect detection timer >> husb: fixup printfs and stuff based on the review comments >> uhci: fixes for save/load-vm >> >> hw/usb-uhci.c | 905 >> ++++++++++++++++++++++++++++++++++----------------------- >> hw/usb.c | 265 +++++++++-------- >> hw/usb.h | 37 +++- >> usb-linux.c | 645 +++++++++++++++++++++++----------------- >> vl.c | 83 +++--- >> 5 files changed, 1138 insertions(+), 797 deletions(-) >> >> ---- >> Here is the original description. >> >> 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. >> >