Доброго времени суток! Проблема такая: мне нужно сделать поддержку многоядерных систем(в частности поддержку IO и Local APIC), уже месяц пытаюсь сделать но без результатов. Когда включен PIC и Local APIC, вроде бы все работает, но когда пытаюсь включить IO APIC, IRQ не включаются. Какой алгоритм правильного включения и конфигурации IO APIC на ICH8+ чипсетах???
подробнее что и как делаешь. прерываний нет вообще или только на загрузочном процессоре? какие именно прерывания не работают и сработывают ли они хоть раз?
APIC включаю в соответствии со спецификациями проца и чипсета Сначала читаю МП таблици извлекаю необходимую информацию(ID IOAPICов, инфа о процах, т.д.) Local APIC включаю через MSR 1Bh(бит 11-включить APIC) IO APIC включаю через OIC бит 0(root complex base address + 31FFh), затем конфигурирую - ложу ID из МП таблицы в регистр 00 соответствующего IO APIC, и ложу значения 2000h + IRQ(или просто IRQ если прерывания 0-15(там эктив-хай по идее)) IO REDIRECTION TABLE(reg offset 10-11, 12-13, т.д.) ну вот и все, но IRQ не "стреляют" ни одно...
IMCR? Нет, но это вроде только у пеньков < 4, а у меня кор 2 дуо попробовал код с IMCR - всё тоже самое
http://www.kernel.org/ здесь исходники линукса. там все понятно. http://www.intel.com/design/chipsets/datashts/290566.htm здесь документация на ioapic