Тайм аута нет. Устройство не снимет запрос, пока он не обработан.
Но я не думаю что это будет большой проблемой на APIC. БИОС расшаривает однотипные устройства типа USB. Если остаётся небработанное прерывание надо замаскировать линию. Конечно устройство перестанет работать но система не упадёт.
IRQ's unmasking problem
это все прекрасно.. но когда данная проблема решится? Serge, в твоей сборке это будет (или уже) сделано?..
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Не знаю когда решится. Моя сборка будет не скоро. Для себя каждый может решить проблему сам.
Найти в kernel.asm
и поставить необходимую маску.
Проблема в том что одинакового для всех набора устройств уже нет. COM LPT FDC могут отсутствовать или быть отключены и BIOS назначит их линии другми устройствам. Поэтому чтобы сделать маску прерываний надо определить все занятые линии и кем они заняты.
Найти в 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 назначит их линии другми устройствам. Поэтому чтобы сделать маску прерываний надо определить все занятые линии и кем они заняты.
В интернете видел описание 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 это просто. Его только инициализировать вернее и инициализировать не надо биос настраивает только включить нужный режим и все а это не трудно. Учесть только что прерывания имеют другой порядок.
ISA и PCI прерывания не могут быть смешанны. ISA прерывания стандартны. Но часть могут и отсутствовать.
Собственно предлогаю добавить строчку которая закидывает PCI линии на свободные места 9 10 11 . На одном два не денишься.
Выяснить ISA прерывания можно через PnP BIOS.
А вообще APIC это просто. Его только инициализировать вернее и инициализировать не надо биос настраивает только включить нужный режим и все а это не трудно. Учесть только что прерывания имеют другой порядок.
А как пронумеровать устройства в системе ?
Пересмотрел свои записи. Можно поступить проще и правельнее. Используя PCI BIOS(руки не дошли до перевода) или через структуру
PCI IRQ Routing Table Specification(ее я перевел) можно найти все IRQ которые отведены под PCI. Вот их и замаскировать, а драйвера устройств пусть размаскируют. Вернее этим должен заниматься мэнеджер PCI, но по требованию драйвера.
В любом случии я склонен к идеии того что надо писать драйвер под чипсет и один универсальный. Распозновать чипсет и биос.
Тут три источника для нумирации PCI пройтись по всем устройствам и PnP BIOS(это для ISA устройств) еще в довесок ACPI.
Понимаю что ACPI не первостипенная задача его можно опустить.
PCI IRQ Routing Table Specification(ее я перевел) можно найти все IRQ которые отведены под PCI. Вот их и замаскировать, а драйвера устройств пусть размаскируют. Вернее этим должен заниматься мэнеджер PCI, но по требованию драйвера.
Все чтоли?А как пронумеровать устройства в системе ?
В любом случии я склонен к идеии того что надо писать драйвер под чипсет и один универсальный. Распозновать чипсет и биос.
Тут три источника для нумирации PCI пройтись по всем устройствам и PnP BIOS(это для ISA устройств) еще в довесок ACPI.
Понимаю что ACPI не первостипенная задача его можно опустить.
А как нумеровать через PnP BIOS ?
Мне нравится идея замаскировать всё. Для com и ps/2 мышей есть нормальные драйверы. FDC наверное определяется через порты. Таймер, клава, IDE известны. Остальное нафиг.
Но сделать определитель всего оборудования полезно.
Мне нравится идея замаскировать всё. Для com и ps/2 мышей есть нормальные драйверы. FDC наверное определяется через порты. Таймер, клава, IDE известны. Остальное нафиг.
Но сделать определитель всего оборудования полезно.
Вот пример перечесления всех 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
Нужна две спецификации PnP BIOS и PnP ISA. В архиве также мои записи по программированию железа:
PnP, DMI, PCI, SMBus, HDD, PIC и APIC(Local и I/O).
http://homepage0.icehard.net/files/hard ... helezo.zip
Пишет "Not found"
У меня качает. Попробуй ещё раз).
Из хаоса в космос
Только что перезалил. Критика приветствуется.
Спасибо.
Who is online
Users browsing this forum: No registered users and 12 guests