Estoy implementando un controlador PCIe, y me gustaría entender a qué nivel se pueden o deberían habilitar / deshabilitar las interrupciones. Intencionalmente no especifico el SO, ya que asumo que debería ser relevante para cualquier plataforma. Por niveles me refiero a lo siguiente:
- Marco de manejo de interrupciones específico del SO
- Las interrupciones se pueden deshabilitar o habilitar en los registros de espacio de configuración PCI / PCIe, por ejemplo. Registro COMMAND
- Las interrupciones también se pueden enmascarar a nivel de dispositivo, por ejemplo, podemos configurar el dispositivo para que no active ciertas interrupciones en el host
Comprendo que cualquier tipo de interrupción que se esté utilizando en PCIe (emulación INTx, MSI o MSI-X), debe enviarse al sistema operativo host.
Entonces, mi pregunta es: ¿tenemos que habilitar o deshabilitar las interrupciones en cada capa, o es suficiente solo lo más cerca posible del hardware, por ejemplo? en los registros PCI pertinentes?