J'implémente un pilote PCIe et j'aimerais comprendre à quel niveau les interruptions peuvent ou doivent être activées / désactivées. Je ne précise pas intentionnellement le système d'exploitation, car je suppose qu'il devrait être pertinent pour n'importe quelle plate-forme. Par niveaux, j'entends ce qui suit:
- Cadre de gestion des interruptions spécifiques au système d'exploitation
- Les interruptions peuvent être désactivées ou activées dans les registres d'espace de configuration PCI / PCIe, par exemple le registre COMMAND
- Les interruptions peuvent également être masquées au niveau du périphérique, par exemple, nous pouvons configurer le périphérique pour ne pas déclencher certaines interruptions vers l'hôte
Je comprends que quel que soit le type d'interruption utilisé sur PCIe (émulation INTx, MSI ou MSI-X), il doit être livré au système d'exploitation hôte.
Ma question est donc la suivante: devons-nous réellement activer ou désactiver les interruptions sur chaque couche, ou est-ce suffisant uniquement au plus proche du matériel, par exemple dans les registres PCI pertinents?