Как стать автором
Обновить

Прерывания от внешних устройств в системе x86. Часть 3. Настройка роутинга прерываний в чипсете на примере coreboot

Время на прочтение12 мин
Количество просмотров7.4K
Всего голосов 36: ↑36 и ↓0+36
Комментарии5

Комментарии 5

Сразу небольшое предупреждение — это описание подходит для использования связки coreboot+intel cpu. Для amd будут отличия.
Какие отличия вы имеете в виду? Всё, что описано в разделе «Теория» вроде справедливо и для Intel, и для AMD, а пример настройки из раздела «Практика» специфичен не то, что для Intel, а для конкретного чипсета LynxPoint-LP.
С теорией да, она справедлива полностью, я именно про практику, т.к. она будет различаться весьма серьёзно, а заголовок практической части об этом не говорит открытым текстом
>>Картинка получилась немного запутанной, но смысл в том, что мы тут просто соединяем линии INTx# с PIRQy по round-robin (PIRQA

Тут неявно предполагается, что PIRQA получает только единственный IRQ16 на обслуживание, для всех подключенных к PIRQA PCI устройств?
Если рассматривать простейшую систему, для неё оно может и так, но PCI шина потенциально поддерживает до нескольких сотен устройств. И я имел «счастье» работать с 140-160ю устройствами на борту. И там уже далеко не ясно как их настроить.
Вешать все 160 на IRQ16-19?
Делить на каждый PIRQх по группам т.е. IRQ16-18, IRQ19-21, IRQ22-24, IRQ25-27?
Или каждый PIRQх получит полный набор IRQ16-27?

Или «рисовать» конфигурацию по велению левой пятки, а беспокоиться только когда чтото не будет откликаться или конкретно тормозить.

Об этом обычно в книжках увы не пришут, а очень интересно.
Тут надо смотреть документацию на конкретный чипсет. Ну а в случая OVER9000 источников прерываний лучше вообще уходить на MSI, т.к. тут и APIC-у станет плохо (про PIC в таком режиме лучше вообще не упоминать, в реалиях современности в PIC режиме на весь PCI приходится 2-3 прерывания, в лучших случаях 4). Как правило каждому IOAPIC задаются свои прерывания(специфично для каждого чипсета), ну а дальше опять из документации на чипсет разруливаются встроенные в чипсет устройства и всё, что идёт до мостов, после мостов идёт стандартный round-robin. И в реалиях — каждая функция получает по одному прерыванию.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации