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