Старая тема разрослась на 46 страниц с большим количеством более неактуальных логов и исправленных багов, ориентироваться в ней сложно, поэтому я закрыла её и открываю новую тему.
Код наконец-то почти готов к заливанию на 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Известные общие проблемы, о которых можно не сообщать:
1. На навороченных мышах не работает скроллинг.2. На USB-накопителях поддерживаются только FAT16 и FAT32.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 обходят проблему путём "если никто из зарегистрированных обработчиков не подтвердил прерывание, давайте опросим все другие обработчики, которые ещё ничего не подтвердили".