Page 2 of 2
Re: IRQ's unmasking problem
Posted: Fri Aug 08, 2008 11:56 am
by Serge
Тайм аута нет. Устройство не снимет запрос, пока он не обработан.
Но я не думаю что это будет большой проблемой на APIC. БИОС расшаривает однотипные устройства типа USB. Если остаётся небработанное прерывание надо замаскировать линию. Конечно устройство перестанет работать но система не упадёт.
Re: IRQ's unmasking problem
Posted: Sun Oct 12, 2008 1:48 pm
by Gluk
это все прекрасно.. но когда данная проблема решится? Serge, в твоей сборке это будет (или уже) сделано?..
Re: IRQ's unmasking problem
Posted: Sun Oct 12, 2008 3:32 pm
by Serge
Не знаю когда решится. Моя сборка будет не скоро. Для себя каждый может решить проблему сам.
Найти в kernel.asm
Code: Select all
cli ;guarantee forbidance of interrupts.
mov al,0 ; unmask all irq's
out 0xA1,al
out 0x21,al
и поставить необходимую маску.
Проблема в том что одинакового для всех набора устройств уже нет. COM LPT FDC могут отсутствовать или быть отключены и BIOS назначит их линии другми устройствам. Поэтому чтобы сделать маску прерываний надо определить все занятые линии и кем они заняты.
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 1:24 am
by Pavia
В интернете видел описание PCI в линуксе. Там написанно что идет маскирование по тайм ауту в случии непрерывных прерываний. Есть два типа прерываний ISA и PCI. C PCI все просто 4 линии определить/назначить не сложно через PCI BIOS это для PIC. Для APIC они фиксированны 16-19, а 20-23 - резерв или дополнительные 4 линии. Часть PCI Устройств поддерживают переназначение прерывания через MSI.
ISA и PCI прерывания не могут быть смешанны. ISA прерывания стандартны. Но часть могут и отсутствовать.
Собственно предлогаю добавить строчку которая закидывает PCI линии на свободные места 9 10 11 . На одном два не денишься.
Выяснить ISA прерывания можно через PnP BIOS.
А вообще APIC это просто. Его только инициализировать вернее и инициализировать не надо биос настраивает только включить нужный режим и все а это не трудно. Учесть только что прерывания имеют другой порядок.

Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 2:46 am
by Serge
А как пронумеровать устройства в системе ?
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 9:36 am
by Pavia
Пересмотрел свои записи. Можно поступить проще и правельнее. Используя PCI BIOS(руки не дошли до перевода) или через структуру
PCI IRQ Routing Table Specification(ее я перевел) можно найти все IRQ которые отведены под PCI. Вот их и замаскировать, а драйвера устройств пусть размаскируют. Вернее этим должен заниматься мэнеджер PCI, но по требованию драйвера.
А как пронумеровать устройства в системе ?
Все чтоли?
В любом случии я склонен к идеии того что надо писать драйвер под чипсет и один универсальный. Распозновать чипсет и биос.
Тут три источника для нумирации PCI пройтись по всем устройствам и PnP BIOS(это для ISA устройств) еще в довесок ACPI.
Понимаю что ACPI не первостипенная задача его можно опустить.
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 3:13 pm
by Serge
А как нумеровать через PnP BIOS ?
Мне нравится идея замаскировать всё. Для com и ps/2 мышей есть нормальные драйверы. FDC наверное определяется через порты. Таймер, клава, IDE известны. Остальное нафиг.
Но сделать определитель всего оборудования полезно.
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 8:26 pm
by Pavia
Вот пример перечесления всех PnP устройств. Вывод рессурсов я не делал руки не дошли.Расшифровка PnP кодов в файле devids.txt
Нужна две спецификации PnP BIOS и PnP ISA. В архиве также мои записи по программированию железа:
PnP, DMI, PCI, SMBus, HDD, PIC и APIC(Local и I/O).
http://homepage0.icehard.net/files/hard ... helezo.zip
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 8:32 pm
by Serge
Пишет "Not found"
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 8:38 pm
by Leency
У меня качает. Попробуй ещё раз).
Re: IRQ's unmasking problem
Posted: Thu Oct 16, 2008 8:39 pm
by Pavia
Только что перезалил. Критика приветствуется.
Re: IRQ's unmasking problem
Posted: Fri Oct 17, 2008 3:49 pm
by Serge
Спасибо.