This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Re: USB virt 2.6 status

> The 2.6 USB virt driver can now mount a filesystem in a 2.6 FE domain
> from my USB key driven by a 2.6 USB BE driver domain.  Have successfully
> done a small amount of I/O with miscompare checking.

That's fantastic news!  Great work!

> I spent some time implementing USB protocol emulation in the back-end to
> handle the USB control requests that were failing (starting with the
> get-descriptor request) but then discarded the emulation code when I
> discovered that the problem was due to a bug in the FE
> (usb_pipein( urb->pipe ) returns 0x00 or 0x80 and was being assigned to
> a single bit bit-field). I'm not sure why this didn't cause a problem
> for the 2.4 driver.

The definition of usb_pipein on 2.4 and returns 1 or 0 for true or false, so 
this bug would only apply in 2.6.

Some of the protocol emulation stuff might be useful if we encounter awkward 
devices, so it's good that you at least had a chance to look at it.

> The 2.4 back-end also doesn't seem to correctly map 
> all of the FE buffer if a transfer is > 4k but doesn't start at a 4k
> boundary.

It's not clear to me why that particular case should break but I can see a 
couple of fixes needed in the logic for unaligned buffers, anyhow.  I'll go 
through and tweak bits of the code later, watch this space...  I might test 
domain suspend / resume with USB devices while I'm at it.

> ***Finish porting remaining 2.4 code for back and front-ends for
> interrupt and isochronous transfers.

Interrupts are fairly close to control / bulk transfers.  Isochronous requires 
a little more logic but the 2.4 implementation is reasonably straightforward.  
You might like to consider updating the code to use a slab cache for the iso 
schedule buffers in the frontend driver.

> Support for USB devices with multiple interfaces. The 2.4 code is broken
> in this area.  The 2.6 code refuses to drive devices with multiple
> interfaces. Need to claim and release all of the interfaces of a
> multiple interface device in one go.

How is it broken?  I think the 2.4 backend claims all interfaces attached to a 
port (with the probe function being called for each interface by the USB 
core), although I haven't tried driving other other interfaces from the 

> Grant table support.

Should be relatively similar to the usage in the block device code, since we 
never transfer page ownership.


Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>