Код наконец-то почти готов к заливанию на svn, но в ходе приведения его в готовность я могла допустить какие-нибудь ошибки, поэтому я прошу проверить текущую версию ещё раз.
Ядро: http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt
Драйвера: http://ftp.kolibrios.org/users/CleverMo ... sbstor.obj и http://ftp.kolibrios.org/users/CleverMo ... usbhid.obj
Известные общие проблемы, о которых можно не сообщать:
3. Код поддержки USB-накопителей не обрабатывает ситуации смены карты внутри накопителя без переподключения самого накопителя.
4. Код поддержки USB-накопителей останавливает всю работу с устройством, увидев фатальную ошибку. Если USB-накопитель поддерживает два логических устройства, но с одним из них работать не получается, то со вторым могут быть проблемы.
5. Отладочный вывод чересчур интенсивный. Не следует пугаться "TD failed" от движений мыши и "Command 03 failed" при подключении флешки, это нормальные явления.
Известные проблемы конкретных конфигураций:
6. В VirtualBox с установленной поддержкой USB2 устройства, подключённые до загрузки к виртуальному USB2-контроллеру, не будут видны. Это баг VirtualBox.
7. eBox некорректно обрабатывает короткие входные пакеты в расщеплённых транзакциях типа прерываний, что приводит к тому, что там навороченные мыши через USB2-хаб работать не будут.
NB: исправление проблемы 1 приведёт к тому, что условия проявления проблемы 5 перестанут выполняться (конкретно - короткие пакеты), в результате проблема 7 перестанет проявляться, но починена (будучи аппаратной проблемой) не будет.
8. В этой конфигурации один из UHCI-контроллеров упорно генерирует не то прерывание, которое прописала BIOS в PCI-пространстве. Причём BIOS не виновата, ибо Interrupt Pin тоже не соответствует истине: Interrupt Pin у UHCI-контроллера совпадает с Interrupt Pin у EHCI-контроллера на том же самом PCI-устройстве, назначенные IRQ у них тоже совпадают = 03, но EHCI-контроллер действительно генерирует IRQ 03, а UHCI - почему-то IRQ 0B. Я запрашивала у yogev_ezra в личке полные дампы PCI-пространства USB-контроллеров, там нет ничего подозрительного. Как это чинить правильно, я не знаю, r3505+r3506 обходят проблему путём "если никто из зарегистрированных обработчиков не подтвердил прерывание, давайте опросим все другие обработчики, которые ещё ничего не подтвердили".