driver para tarjeta PCIexpress

Imagen de Ha-Din
0 puntos

Hola,
estoy intentando programar un driver para una tarjeta PCIexpress.

El problema con el que me he encontrado y con el que llevo casi un mes luchando (tras buscar y buscar informacion en internet que no me ha solucionado nada) es que no consigo que funcionen las interrupciones. Estube buscando, y el puerto PCIexpress funciona con un tipo de interrupciones llamadas MSI (Message Signaled Interrpts), y ví que tras habilitar el dispositivo PCi (con pci_enable_device) hay que activar este modo de interrupcion, llamando a pci_enable_msi. Esta llamada rellena un campo de la estructura de pci_device con el numero de interrupcion a instalar, luego llamo a request_irq con ese número de interrupcion y la interrpcion se instala correctamente (al hacer un cat de /proc/interrupts sale todo bien), pero cuando produzco una interrupcion en el dispositivo nunca salta el manejador de interrupciones que instalo (ni siquiera se incrementan los contadores de interrupciones del sistema (los de /proc/interrupts) ).

¿Hay que hacer algo más? Según he encontrado en muchos sitios, no, pero no me funciona, así que no sé qué más probar...

Gracias por adelantado.