[LWN Logo]
[LWN.net]
From:	 johan verrept 
To:	 user-mode-linux-devel 
Subject: [linux-usb-devel] [ANNOUNCEMENT] User Mode Linux USB HCD driver (alpha release)
Date:	 Sun, 15 Apr 2001 21:53:03 +0200
Cc:	 linux-usb-devel 


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.