Estou implementando um driver PCIe e gostaria de entender em que nível as interrupções podem ser ou devem ser ativadas / desativadas. Intencionalmente, não especifiquei o SO, pois estou assumindo que ele deve ser relevante para qualquer plataforma. Por níveis, quero dizer o seguinte:
- Estrutura de manipulação de interrupções específicas do SO
- As interrupções podem ser desabilitadas ou habilitadas nos registros do espaço de configuração PCI / PCIe, por exemplo, registro COMMAND
- As interrupções também podem ser mascaradas no nível do dispositivo, por exemplo, podemos configurar o dispositivo para não acionar certas interrupções no host
Entendo que seja qual for o tipo de interrupção que está sendo usado no PCIe (emulação INTx, MSI ou MSI-X), ele deve ser entregue ao sistema operacional host.
Portanto, minha pergunta é: precisamos realmente ativar ou desativar as interrupções em todas as camadas, ou é suficiente apenas no hardware mais próximo, por exemplo, nos registros PCI relevantes?