Estoy implementando un controlador PCIe, y me gustaría entender en qué nivel las interrupciones pueden o deben estar habilitadas / deshabilitadas. No especifico el sistema operativo intencionalmente, ya que supongo que debería ser relevante para cualquier plataforma. Por niveles me refiero a lo siguiente:
- Marco de manejo de interrupciones específicas del sistema operativo
- Las interrupciones se pueden deshabilitar o habilitar en los registros de espacio de configuración PCI / PCIe, por ejemplo, el registro de COMANDO
- Las interrupciones también se pueden enmascarar a nivel de dispositivo, por ejemplo, podemos configurar el dispositivo para que no active ciertas interrupciones al host
Entiendo que cualquier tipo de interrupción que se esté utilizando en PCIe (emulación INTx, MSI o MSI-X), debe entregarse al sistema operativo host.
Entonces mi pregunta es: ¿realmente tenemos que habilitar o deshabilitar las interrupciones en cada capa, o es suficiente solo en el hardware más cercano, por ejemplo, en los registros PCI relevantes?