USB host controller driver ########################## Allows access to USB devices via the 'Usb' session interface. Configuration snippet: ! ! ! ! ! ! ! The optional 'devices' report lists the connected devices and gets updated when devices are added or removed. Example report: ! ! ! ! For every device a unique identifier is generated that is used to access the USB device. Only devices that have a valid policy configured at the USB driver can be accessed by a client. The following configuration allows 'comp1' to access the device 'usb-1-6': ! ! ! ! ! ! ! ! ! ! In addition to the mandatory 'label' attribute the policy node also contains optional attribute tuples of which at least one has to be present. The 'vendor_id' and 'product_id' tuple selects a device regardless of its location on the USB bus and is mostly used in static configurations. The 'bus' and 'dev' tuple selects a specific device via its bus locations and device address. It is mostly used in dynamic configurations because the device address is not fixed and may change every time the same device is plugged in. If the class attribute is defined only, the usb host controller driver allows access to all devives of that class. In that case the actual device is chosen by the last label given when a session gets opened. BIOS Handoff ~~~~~~~~~~~~ Per default the USB driver performs a hand off of the USB controller from the BIOS, since it still may access the controller when booting, for example, from a USB device. The BIOS hand off induces the execution of BIOS/SMM USB driver code and potentially DMA operations. Unfortunately, some ACPI tables report wrong RMRR information, which implicates IOMMU faults on illegal DMA operations and consequently the hand off may fail after noticeably long timeouts. Therefore, the hand off can be disabled in the USB driver configuration like follows. !