[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] latest USB code



Here's the latest USB code against the xen 3.0.0 release.  Since the
last posting this version updates the code to use the new 32 bit grant
references and the latest GNTTABOP_map_grant_ref definition.  I've also
changed the definition of the virtual USB HCD to have a single port
rather than seven ports with six unused.  Domains importing multiple USB
devices will get a HCD for each device (this feature currently
untested).  I went with this solution because it scales indefinitely.

This code passes the usual sniff test of mounting a filesystem on a USB
key.

The issues that I know about that remain with this code are as follows:

o - The USB protocol requires stalling the URB queue during error
conditions.  This isn't done correctly yet which makes the code unsafe
for write access during error recovery.

o - The resource pools are currently only allocating the minimum
resources required to avoid deadlock so performance will be resource
constrained.  This can be fixed either by implementing a larger static
resource allocation or improving the buffer_resource_provider to
implement a dynamic shared resource pool.  Either is fairly easy.

o - You no longer need to specify swiotlb=force because xen has a small
swiotlb turned on by default.  If you explicitly turn the swiotlb off,
the USB code will still be broken.

o - The USB-specific part of the interdomain protocol is using polling
for device discovery which is inefficient.  I looked into fixing this
and it won't be too hard to change the protocol so that the BE sends a
message to the FE to kick the FE into re-probing the BE.  This will make
the BE device state machine a bit more complicated.

o - Design documentation for the USB driver is required.

o - We might not want to keep the xenidc code.  API documentation for
the xenidc API is required if we are going to keep the xenidc code.

o - Isochronous URBs are untested.

o - My test machine is USB 1.2 and I've not yet tested with USB 2.0.

o - Suspend and resume is untested.  Domain migration is untested.

o - I've only ever tried to build the code for X86 and never X86_64.

o - Automated tests integrated with the xm-test framework would be good.

o - Need to run the USB part by the usb mailing list once I fix the
protocol and think it's OK.

I split the patch into two just in case anyone wants to play with the
xenidc code.

Attachment: latest-xenidc-patch.gz
Description: GNU Zip compressed data

Attachment: latest-usb-patch.gz
Description: GNU Zip compressed data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.