[Hardware] USB и прерывания
Olvin
olvin на rambler.ru
Пт Май 19 19:54:00 MSD 2006
Начал выходить из строя набортный USB, так я его отключил и купил
внешний, на PCI. Но вот проблема: невозможно одновременно активно
использовать видео и USB (например, смотреть фильм с USB-IDE или
копировать с USB и играть в 3D) - машина виснет намертво. Не помогает ни
кнопка питания (по ней у меня ОС переходит в runlevel 0), ни
Alt+SysRQ+... В логи даже ничего доложить не может - пусто в них.
Подробности:
Soft:
ALM2.4+updates2006.04.21
lsmod|grep usb:
usb-uhci 21708 0 (unused)
usbcore 58528 1 [usb-uhci]
lsmod|grep hci:
usb-uhci 21708 0 (unused)
usbcore 58528 1 [usb-uhci]
Hard:
MB на чипсете Via K7VTA3/KT333 V5.0 (пишу то, что на материнской плате
мануала нет).
Видео NV GF4 MX440 AGP 8x 64Mb 128bit TV-out марки Palit
драйвера из мастера или его апдейтов.
PCI-USB, купленный мною, на чипе Via VT6212L, видимо, noname,
четырёхпортовый контроллер.
Теперь самое вкусное, собственно, по сути вопроса.
cat /proc/interrupts:
работает только встроенный USB, всё в норме, проблем особых нет:
CPU0
0: 14057 IO-APIC-edge timer
1: 179 IO-APIC-edge keyboard
4: 440 IO-APIC-edge serial
8: 2 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 489 IO-APIC-edge PS/2 Mouse
14: 10549 IO-APIC-edge ide0
15: 6 IO-APIC-edge ide1
16: 12970 IO-APIC-level nvidia
17: 0 IO-APIC-level CMI8738-MC6
19: 388 IO-APIC-level eth0
21: 0 IO-APIC-level usb-uhci, usb-uhci, usb-uhci, ehci_hcd
NMI: 0
LOC: 14010
ERR: 0
MIS: 0
работает встроенный USB и внешний, вышеозначенная проблема присутствует
во всей красе:
CPU0
0: 16472 IO-APIC-edge timer
1: 325 IO-APIC-edge keyboard
4: 503 IO-APIC-edge serial
8: 2 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 625 IO-APIC-edge PS/2 Mouse
14: 14685 IO-APIC-edge ide0
15: 6 IO-APIC-edge ide1
16: 15270 IO-APIC-level ehci_hcd, nvidia
17: 0 IO-APIC-level CMI8738-MC6
18: 0 IO-APIC-level usb-uhci
19: 448 IO-APIC-level usb-uhci, eth0
21: 0 IO-APIC-level usb-uhci, usb-uhci, usb-uhci, ehci_hcd
NMI: 0
LOC: 16426
ERR: 0
MIS: 0
Делаем rmmod ehci_hcd:
CPU0
0: 18268 IO-APIC-edge timer
1: 536 IO-APIC-edge keyboard
4: 566 IO-APIC-edge serial
6: 5 IO-APIC-edge floppy
8: 2 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 625 IO-APIC-edge PS/2 Mouse
14: 14782 IO-APIC-edge ide0
15: 63 IO-APIC-edge ide1
16: 17705 IO-APIC-level nvidia
17: 0 IO-APIC-level CMI8738-MC6
18: 0 IO-APIC-level usb-uhci
19: 543 IO-APIC-level usb-uhci, eth0
21: 0 IO-APIC-level usb-uhci, usb-uhci, usb-uhci
NMI: 0
LOC: 18221
ERR: 0
MIS: 0
Зависаний нет, но и USB2.0 - тоже, т.е. скорость передачи данных
800-900Kbyte/sec
Получается как бы конфликт по прерываниям. Отсюда вопрос: как в linux
разнести разные (заранее известные) устройства на разные прерывания?
Или по-другому: как не меняя оборудования решить проблему?
Подробная информация о списке рассылки Hardware