Sto lavorando su un driver di rete per un endpoint FPGA che supporta interrupt MSI multi-messaggio (non msix) su un bus PCIe. Il processore host è un Intel i7 620LM x86 in esecuzione su CentOS con un kernel 4.2.Multi Message MSI implementato su Linux/x86?
L'endpoint FPGA annuncia correttamente più vettori msi nel suo registro delle capacità MSI (0x101 = 32 vettori possibili totali).
Da quello che posso dire, la funzionalità multi-messaggio è stata aggiunta nel kernel 4.2. Sfortunatamente quando chiamo pci_enable_msi_range(pdev, 1, 32);
restituisce solo 1
. Quando chiamo pci_msi_vec_count(pdev);
restituisce 32
. Sono in grado di richiedere un gestore di irq su un vettore e funziona come previsto.
Qualcuno sa se i vettori MSI multi-messaggio sono effettivamente supportati in Linux su architetture x86?
UPDATE: ho potuto ottenere tutti i 32 vettori MSI attivate utilizzando un diverso SBC con processore i7-4700EQ. Questo con un kernel 4.4-rc1.
UPDATE: Funziona anche con 4.2.
UPDATE: In questo caso, il problema era in coreboot. Sono riuscito a far funzionare più vettori una volta che il distributore di schede ha fornito un aggiornamento.
Certo che lo è. Non sono sicuro del motivo per cui ottieni l'errore. ma ho scritto pochi driver che utilizzavano più di 1 vettore. – stdcall
Che piattaforme erano su questo. Hai trovato processori, APIC, ecc. Combo che non riescono a rimappare più vettori? – Tanner