[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] USB 2.0 EHCI emulation
From: |
Arnon Gilboa |
Subject: |
[Qemu-devel] [PATCH] USB 2.0 EHCI emulation |
Date: |
Mon, 7 Jan 2008 09:41:38 -0800 |
Hi,
Attached is a preliminary patch implementing USB 2.0 EHCI emulation.
The current status is as following:
-The patch was tested on WinXP guest with both qemu-head & kvm.
-It was tried on FC7 guest as well, but in this case there are still
some control transfers problems.
-Tested on USB 2.0 DoK, USB 1.1 multi-function DoK, USB 2.0 HP DeskJet
multi-function printer/scanner.
-Performance is almost similar to UHCI emulation. There are still many
possible performance improvements.
-Asynchronous schedule is supported, which means Bulk and Control
transfers are working.
-Periodic schedule is currently NOT supported, so Interrupt and
Isochronous transfers are NOT working (no webcam or audio devices
support).
-Currently async transfers are serialized for simplicity, so at each
moment only a single pending transfer is allowed. This is similar to the
UHCI & OHCI emulations.
-The host kernel was configured with dynamic tick & hi-res timers, to
allow the desired timer resolution. USB 2.0 microframe is 125usec.
-In usb-linux.c, usb_host_handle_data() was rewritten for EHCI with the
option of async i/o. See the defines USE_ASYNCIO & USE_EHCI.
-There are possible end-of-micro-frame drifts when
usb_host_handle_control()'s synchronous ioctls take too long.
TODOs:
-Support periodic schedule
-Support linux guest
-Parallelize async transfers - support several pending QHs
-Implement async control transfers, prevent microframe drifts
-Move EHCIState state machine members into ehci_qh_state_machine()
(async_qh_addr; async_qh; usb_packet; usb_buf)
Waiting for your comments,
Arnon
usb-ehci.patch
Description: usb-ehci.patch
- [Qemu-devel] [PATCH] USB 2.0 EHCI emulation,
Arnon Gilboa <=