Board.KolibriOS.org
http://board.kolibrios.org/

2 акт. обработчика PCI IRQ на разных линиях вешают систему
http://board.kolibrios.org/viewtopic.php?f=1&t=1808
Page 1 of 4

Author:  Serge [ Thu Jul 21, 2011 11:33 am ]
Post subject:  2 акт. обработчика PCI IRQ на разных линиях вешают систему

Народ, а можете потестить работу в паре со звуком ? Я столкнулся с тем, что два активных обработчика PCI IRQ на разных линиях вешают систему. По отдельности всё работает как надо. Выглядит примерно так:

ставится обработчик для устройства А на irq5
обрабатывается прерывание на irq5
ставится обработчик для устройства В на irq10
запрос прерывания по линии 10
???
FAIL.


Тема выделена из Тестируем USB OHCI controller

Author:  Mario [ Thu Jul 21, 2011 12:21 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Т.е. запустить на проигрывание плеер и начать активно использовать USB устройства?

Author:  art_zh [ Thu Jul 21, 2011 12:28 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Serge wrote:
ставится обработчик для устройства А на irq5
обрабатывается прерывание на irq5
ставится обработчик для устройства В на irq10
запрос прерывания по линии 10
???
FAIL.

[Вопрос снят - как-то сразу не въехал о чем речь :oops: ]

Author:  SoUrcerer [ Thu Jul 21, 2011 12:45 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Проверил на edubook,плейер +мышь,вроде проблем не замечаю.

Author:  Serge [ Thu Jul 21, 2011 12:49 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Пример не совсем точный.
Подозреваю что всё виснет если линии подключены к одному контроллеру master или slave.

Author:  Mario [ Thu Jul 21, 2011 1:08 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Ну, так предложи правильную методику тестирования, а то гадания на кофейной гуще.

Author:  Serge [ Thu Jul 21, 2011 1:15 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Какая методика ? Надо статистику собрать виснет - не виснет, какие линии используются.

Author:  yogev_ezra [ Thu Jul 21, 2011 1:31 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Serge wrote:
Какая методика ? Надо статистику собрать виснет - не виснет, какие линии используются.
В смысле, скажи как проверить, чтобы
Serge wrote:
линии подключены к одному контроллеру master или slave.

Author:  Serge [ Thu Jul 21, 2011 2:11 pm ]
Post subject:  Re: Тестируем USB OHCI controller

yogev_ezra

Не важно, это только предположение.

Предлагаемый метод научного тыка:
Взять таблицу PCIDEV с dev_id контроллеров и номерами irq.
Подключить как можно больше usв мышек и клавиатур, так чтобы на каждой линии было по устройству. Если два контроллера делят одну линию достаточно занять только один. Какие линии заняты можно посмотреть в диспетчере устройств.
Загрузить Колибри и посмотреть как всё это работает.

Author:  Serge [ Thu Jul 21, 2011 3:52 pm ]
Post subject:  Re: Тестируем USB OHCI controller

Сделал тесты со своим драйвером

Code:
контроллер устройство   IRQ
24D5     нет              5
24D2     мышь Genius      5
2dD4     клавиатура       4
24D7     мышь LS1         11
AC97     звук             3

Условия для теста идеальные. Четыре контроллера занимают три линии и не делят их с другими устройствами.
Загружаю драйвер, все работает, курсор ползает клавиатура печатает.
Запускаю mp3 плеер, двигаю мышь 24D2_irq5, система останавливается. Реально встаёт на паузу, даже звук останавливается. Клавиатура никак не влияет на состояние системы. Двигаю мышь 24D7_irq11 система продолжает работу. WTF ???
Предполагаю что глухо виснет master (может теряется EOI ?) если одновременно есть два активных сигнала irq3 и irq5. С работающим звуком на это больше шансов. Сигнал irq11 на ведомом имеет самый высокий приоритет и каким-то образом разблокирует систему.

Author:  Serge [ Fri Jul 22, 2011 5:35 pm ]
Post subject:  Re: 2 акт. обработчика PCI IRQ на разных линиях вешают систе

Так и не смог понять в чём дело. Поэтому запустил APIC, за что большое спасибо Илье Михайлову, забил номера irq в дрова и всё заработало. В ближайшее время сделаю бранч kolibri-acpi пригодным для продвинутого пользователя, а пока смотрю видео с выводом через блиттер, чего и вам желаю.

Author:  CleverMouse [ Fri Jul 22, 2011 6:10 pm ]
Post subject:  Re: 2 акт. обработчика PCI IRQ на разных линиях вешают систе

Интересно, что IRQ0, приходящее 100 раз в секунду, звуку, судя по отзывам, не мешает. Когда пользователь что-то набирает на PS/2 клавиатуре с IRQ1 при работающем звуке, вообще довольно вероятно появление трёх запросов одновременно, но на зависание при этом вроде никто не жаловался. Если это проявляется только с видео, может, это какие-то тонкие эффекты с обработчиком прерывания от видео?

Author:  Serge [ Fri Jul 22, 2011 8:07 pm ]
Post subject:  Re: 2 акт. обработчика PCI IRQ на разных линиях вешают систе

CleverMouse

IRQ0 и 1 прерывания ISA. А проблема с PCI. На 8259 они заводятся через роутер который преобразует сигнал PCI из "активный низкий" в "активный высокий", а два регистра ELCR (порты 0x4D0-0x4D1) кодируют тип сигнала - по уровню(PCI) или по фронту (ISA). Может это персональный баг чипсета, я не знаю, но видео здесь точно не причем, потому что я столкнулся с этой проблемой ещё зимой когда делал usb клавиатуру. Звук не работал вместе с UHCI если один из обработчиков стоял на Irq7. Тогда я посчитал что эта проблема как-то связана со spurious interrupt на 8259 и обошёлся тем, что перераспределил прерывания. (Я провёл кучу тестов, заменил наш код для 8259 на "железобетонный" линуксовый код. Маскировал все линии на входе в обработчик и восстанавливал необходимые на выходе. Всё без толку). Звуковой драйвер я тоже проверял, специально отключив вызов Infinity из обработчика. Сам обработчик там простейший места для таких тонких ошибок нет.

Сейчас в режиме APIC звук и видео работают без изменения драйверов (я только записал свои фиксированные номера Irq). Вызов обработчиков в ядре тоже не менялся, кроме завершающего EOI. Получается то, что не работает через PIC, работает на ура через APIC c минимальной модификацией кода.
Завтра добавлю свои uhci, подключу PS/2, нагружу usb контроллеры и проведу acid test. Посмотрю что получится.

Author:  CleverMouse [ Mon Jul 25, 2011 1:26 pm ]
Post subject:  Re: 2 акт. обработчика PCI IRQ на разных линиях вешают систе

Если тот же Linux загрузить, добавив noapic noacpi к загрузочным опциям ядра, тоже будет виснуть при активном использовании?

Author:  Serge [ Mon Jul 25, 2011 2:54 pm ]
Post subject:  Re: 2 акт. обработчика PCI IRQ на разных линиях вешают систе

CleverMouse

Спасибо за совет. Проверил
noapic noacpi - чёрный экран. Система зависла намертво.
noacpi - аналогично.
noapic - система загрузилась, но работала с тормозами. Звук проигрывался со щелчками. Посмотрел лог ядра
irq 3: nobody cared (try booting with the irqpoll option) это звук
irq 5: nobody cared (try booting with the irqpoll option) это usb
Ядро замаскировало линии и перевело обработку прерываний этих устройств в режим опроса. Отсюда рывки и щелчки звука. Так что это явно "железный баг".

Page 1 of 4 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/