Я давно плюнул на эту помойку и сверяюсь только AMD-доками. Но они могут быть кое в чем несовместимыми с Intel.Serge wrote:Зашёл на сайт Intel поискать pdf-ы. Что они сделали с документацией ? Просто нет приличных слов.
И еще есть книжка по архитектуре PCI Express - там все железо очень понятно описано.
MSI с точки зрения шины - это самая обычная операция записи 16 бит по известному некэшируемому адресу.
С точки зрения устройства - это уже не совсем обычная запись, потому что само устройство может только инициировать "запрос номер такой-то", а про адрес и данные оно ничего не знает. Куда и что записывать, и разрешать ли эту запись вообще - это определяет драйвер.
С точки зрения драйвера - тут прорва работы.
Если не вдаваться в детали - то надо для начала назначить устройству некий диапазон векторов, узнать адрес MMIO-блока регистров MSI-запросов LAPIC, записать туда все вектора и открыть нужные маски, а потом пробежать по MSI-цепочке в конфигспейсе устройства (Capability=5) и записать туда данные мессиджа и MMIO-адреса LAPIC для каждого вектора.
MSI я свои железяки научил генерить (мессиджи пишутся в программный буфер, вроде аппаратно-генерируемых семафоров), но с LAPIC никогда не работал.