Status of USB drivers development (2012/summer)
TITLE: Status of USB drivers development (2012/summer)
DATE: 2012-07-19 14:51:09
AUTHOR: Lars Erdmann
|Вам нужен переводчик|
Перейдите на сайт http://translate.google.com
и запросите перевод http://en.ecomstation./showarticle.php?id=272
на свой язык
USB 2.0 drivers
Status USB HC drivers: I am still working on them.
Recently I have concentrated myself on USBEHCD.SYS to make it MP safe.
David Azarewicz (the ACPI developer) was kind enough to run stress tests on a 3 GHz dual-core Intel machine:
the current version has about twice the performance of the 10.162 IBM driver (when /S:1 is specified on the command line) and permanently bombarding the driver with transmission requests from 4 different concurrent processes have not led to a hang.
This was not all that easy as I currently only have a single-core system where the specific concurrency problems that you have with multi-core systems will of course not show up.
As a positive side effect of what I did the drivers no longer completely disable interrupts for extended periods of time as they used to do (which was the initial intention by the way). That means, less hiccups on audio output, smoother ethernet traffic etc.
Still in the pipe: make USB 2.0 isochronous device support work, change USBD.SYS to support configuration descriptors >= 1024 bytes (this is the dreaded USBD.SYS trap that happens when you plug in some webcams) and also update USBMSD.ADD (somebody voluneering?).
Also: check that USBEHCD.SYS works with most recent USB 2.0 HW (see below in the USB 3.0 section). I have never tested the relevant code paths in USBEHCD.SYS as I don't have such modern USB 2.0 HW (but some new laptops have it).
For USBUHCD.SYS and USBOHCD.SYS I have already started to change the drivers accordingly. I already removed the disabling of interrupts for extended periods of time. I still need to fine-tune them the way I now did with USBEHCD.SYS to get less "collisions" on transmission requests (and therefore a better throughput if the driver is hammered with requests).
Download current version
USB 3.0 support
As to USB 3.0: it's possible that we will need a driver for it even if we only intend to support USB 2.0 devices for the time being. I would need to check the XHCI documentation (the Intel spec for a USB 3.0 compliant HC) but I think the USB 3.0 HW works the same way as some most recent USB 2.0 hardware: USB 2.0 devices are handled transparently by the USB 3.0 HW but the USB 3.0 HW will need to be programmed to support that.
Most recent USB 2.0 hardware is about the same: USB 1.x devices are supported by the USB 2.0 HW but it needs some programming so that the USB 2.0 HW will do the necessary things to allow the "transition" from the USB 2.0 timing to the USB 1.x timing on the USB bus when a USB 1.x device is attached (much like an USB 2.0 external hub does). These systems no longer have UHCI / OHCI companion controllers (the PCI output for your system will only show 1 or more EHCI controllers).
The positive side effect of it all: you need to load less drivers. Eventually you will only load one driver: the driver for USB 3.0 HC (with USB 1.x dying along the way because USB 3.0 does not support USB 1.x devices).
How can we help out/get involved with the testing of the MP safe drivers?
I have a 4-core configuration here and am very willing to run whatever multitude of tests are requried.
Thanks for the great work, it's ALWAYS been appreciated here!
Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).