Ich implementiere einen PCIe-Treiber und möchte verstehen, auf welcher Ebene die Interrupts aktiviert / deaktiviert werden können oder sollten. Ich gebe absichtlich kein Betriebssystem an, da ich davon ausgehe, dass es für jede Plattform relevant sein sollte. Mit Levels meine ich Folgendes:
- Betriebssystemspezifisches Interrupt-Handling-Framework
- Interrupts können in den PCI / PCIe-Konfigurationsraumregistern, z. B. dem COMMAND-Register, deaktiviert oder aktiviert werden
- Interrupts können auch auf Geräteebene maskiert werden. Beispielsweise können wir das Gerät so konfigurieren, dass bestimmte Interrupts für den Host nicht ausgelöst werden
Ich verstehe, dass jeder Interrupt-Typ, der auf PCIe verwendet wird (INTx-Emulation, MSI oder MSI-X), an das Host-Betriebssystem geliefert werden muss.
Meine Frage ist also: Müssen wir tatsächlich Interrupts auf jeder Ebene aktivieren oder deaktivieren, oder reicht dies nur auf der Hardware aus, die der Hardware am nächsten liegt, z. B. in relevanten PCI-Registern?