Ich arbeite an einem Netzwerktreiber für einen FPGA-Endpunkt, der Multi-Message-MSI-Interrupts (nicht msix) auf einem PCIe-Bus unterstützt. Der Host-Prozessor ist ein x86 Intel i7 620LM, der auf CentOS mit einem 4.2 Kernel läuft.Ist Multi Message MSI unter Linux/x86 implementiert?
Der FPGA-Endpunkt macht mehrere MSI-Vektoren im MSI-Funktionsregister richtig bekannt (0x101 = 32 mögliche Vektoren insgesamt).
Von was ich sagen kann, wurde Multi-Message-Funktionalität in Kernel 4.2 hinzugefügt. Leider, wenn ich pci_enable_msi_range(pdev, 1, 32);
rufe, gibt es nur 1
zurück. Wenn ich rufe, wird 32
zurückgegeben. Ich bin in der Lage, einen irq-Handler auf dem einen Vektor anzufordern, und es funktioniert wie erwartet.
Weiß jemand, ob Multi-Message-MSI-Vektoren tatsächlich in Linux auf x86-Architekturen unterstützt werden?
UPDATE: Ich war in der Lage alle 32 MSI-Vektoren erhalten aktiviert einen anderen SBC mit einem i7-4700EQ Prozessor. Dies mit einem 4,4-rc1-Kernel.
UPDATE: Funktioniert mit 4.2 ebenso.
UPDATE: In diesem Fall war das Problem in Coreboot. Ich war in der Lage, mehrere Vektoren zu aktivieren, sobald der Board-Verkäufer ein Update zur Verfügung gestellt hat.
Natürlich ist es. Ich bin nicht sicher, warum genau Sie den Fehler erhalten. aber ich habe einige Treiber geschrieben, die mehr als 1 Vektor verwendeten. – stdcall
Welche Plattform (en) war das? Haben Sie Prozessoren, APICs usw. gefunden, die mehrere Vektoren nicht neu zuordnen können? – Tanner