hello,

        I would like to announce the existance of a UML USB Host Controller. This HC 
allows the usage of
usb devices in uml. This would give uml direct access to keyboards, mice, serial 
ports, modems,
ethernet dongles, SCSI hardware, camera's, printers and everything else the usb 
subsystem can
support without adding specific support in either the uml or host kernel (except for 
the HC).

For the USB subsystem, this HC allows debugging of the USB core and drivers in a 
user-mode kernel.
This means no more time-consuming reboots and cryptic ksymoops messages, corrupted 
file systems, and
so on. It means using debuggers like gdb on a 'normal' process.

The code is in a very early alpha stage. At the moment, when uml boots all present 
devices on the
available busses are detected and enumerated by the usb device system. Plugging and 
unplugging of
devices should work, but has not been tested.
There is support available for control (obviously), bulk and interrupt tranfers. The 
last two have
seen very little testing. Also, the code is still rather dirty. It contains unused 
code, lots of
warnings and a huge amount of tracing. Apparantly there is also a bug when shutting 
the system down.

The attached patch is against 2.4.3 with uml-patch-2.4.3.bz2
(For those who do not have experience with uml, see 
http://user-mode-linux.sourceforge.net/ )
If you want to try a driver in uml, make sure this drivers are not loaded in the host 
kernel and the
other way around (Except the HC drivers and the hub driver).

Major issues to be solved:
- Add a ghost driver to lock all devices which are in use by the host kernel.
- Solve issue of hub race. (see umusb_kern.c)
- Add isochronous transfers
- Make return values consistent with existing HCD's.
- export the events flag of the irq_user.c poll() patch and use it to do asynchronous 
usb completion
iso timer based polling. (the poll() patch is integrated in this patch)
- code clean up

enjoy,

        J.

uml-hcd-2.4.3.patch.bz2

Reply via email to