Черная магия
2009-10-09 23:52Заметки на манжетах: PCI-роутинг вручную.
Знаете ли вы, что FreeBSD позволяет пользователю вручную задавать PCI-устройствам номера IRQ? Это доступно начиная с версии 6.0, тогда был введен синтаксис для /boot/loader.conf:
hw.pci0.11.INTD.irq=10
Здесь 0 - bus, 11 - slot, INTD - intpin.
Начиная с версии 7.0, синтаксис расширен:
hw.pci1.0.11.INTD.irq=10
Здесь 1 - domain, 0 - bus, 11 - slot, INTD - intpin.
Источник: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/pci/pci.c?annotate=1.355
Разумеется, никто не обещает, что устройство после этого заработает. Это скорее "последнее средство" для тех случаев, когда нормальными средствами не удается завести железку с очень кривым ACPI BIOS, что не редкость. Узнать нужные параметры устройства можно, например, добавив boot_verbose="YES"
в тот же loader.conf
, перезагрузившить и заглянув в /var/run/dmesg.boot
. Поискать устройство там можно по его PCI Id, которые, в свою очередь, посмотреть в выводе pciconf -lv
.
Несколько устаревшая (на пару лет) статья PCI Interrupts for x86 Machines under FreeBSD от jhb@ из Yahoo!. Но MSI/MSI-X там уже есть.