Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Dec 07, 2019 2:56 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 52 posts ]  Go to page 1 2 3 4 Next
Author Message
PostPosted: Thu Jul 21, 2011 11:33 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Народ, а можете потестить работу в паре со звуком ? Я столкнулся с тем, что два активных обработчика PCI IRQ на разных линиях вешают систему. По отдельности всё работает как надо. Выглядит примерно так:

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


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


Top
   
PostPosted: Thu Jul 21, 2011 12:21 pm 
Т.е. запустить на проигрывание плеер и начать активно использовать USB устройства?


Top
   
PostPosted: Thu Jul 21, 2011 12:28 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
Serge wrote:
ставится обработчик для устройства А на irq5
обрабатывается прерывание на irq5
ставится обработчик для устройства В на irq10
запрос прерывания по линии 10
???
FAIL.

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


Top
   
PostPosted: Thu Jul 21, 2011 12:45 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Проверил на edubook,плейер +мышь,вроде проблем не замечаю.


Top
   
PostPosted: Thu Jul 21, 2011 12:49 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Пример не совсем точный.
Подозреваю что всё виснет если линии подключены к одному контроллеру master или slave.


Top
   
PostPosted: Thu Jul 21, 2011 1:08 pm 
Ну, так предложи правильную методику тестирования, а то гадания на кофейной гуще.


Top
   
PostPosted: Thu Jul 21, 2011 1:15 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Какая методика ? Надо статистику собрать виснет - не виснет, какие линии используются.


Top
   
PostPosted: Thu Jul 21, 2011 1:31 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
Serge wrote:
Какая методика ? Надо статистику собрать виснет - не виснет, какие линии используются.
В смысле, скажи как проверить, чтобы
Serge wrote:
линии подключены к одному контроллеру master или slave.


Top
   
PostPosted: Thu Jul 21, 2011 2:11 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
yogev_ezra

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

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


Top
   
PostPosted: Thu Jul 21, 2011 3:52 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сделал тесты со своим драйвером

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 на ведомом имеет самый высокий приоритет и каким-то образом разблокирует систему.


Top
   
PostPosted: Fri Jul 22, 2011 5:35 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Так и не смог понять в чём дело. Поэтому запустил APIC, за что большое спасибо Илье Михайлову, забил номера irq в дрова и всё заработало. В ближайшее время сделаю бранч kolibri-acpi пригодным для продвинутого пользователя, а пока смотрю видео с выводом через блиттер, чего и вам желаю.


Top
   
PostPosted: Fri Jul 22, 2011 6:10 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Интересно, что IRQ0, приходящее 100 раз в секунду, звуку, судя по отзывам, не мешает. Когда пользователь что-то набирает на PS/2 клавиатуре с IRQ1 при работающем звуке, вообще довольно вероятно появление трёх запросов одновременно, но на зависание при этом вроде никто не жаловался. Если это проявляется только с видео, может, это какие-то тонкие эффекты с обработчиком прерывания от видео?

_________________
Сделаем мир лучше!


Top
   
PostPosted: Fri Jul 22, 2011 8:07 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
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. Посмотрю что получится.


Top
   
PostPosted: Mon Jul 25, 2011 1:26 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Если тот же Linux загрузить, добавив noapic noacpi к загрузочным опциям ядра, тоже будет виснуть при активном использовании?


Top
   
PostPosted: Mon Jul 25, 2011 2:54 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
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
Ядро замаскировало линии и перевело обработку прерываний этих устройств в режим опроса. Отсюда рывки и щелчки звука. Так что это явно "железный баг".


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 52 posts ]  Go to page 1 2 3 4 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited