Gestion de l’alimentation PCI et pilotes de périphérique
Cet article précise certaines confusions que les fournisseurs ont expérimenté sur la façon dont le matériel conforme à PCI Power Management (PCI-PM) interagit avec les pilotes de périphérique dans le système d’exploitation et sur la façon dont PCI-PM s’intègre à ACPI. Pour plus d’informations, consultez https://www.uefi.org/specifications
Pilotes de périphérique et gestion de l’alimentation PCI
Cette discussion suppose que vous êtes familiarisé avec la façon dont les pilotes windows Driver Model (WDM) gèrent les événements de gestion de l’alimentation, comme décrit dans le DDK Windows actuel. En général, les responsabilités pour les pilotes de périphérique sont les suivantes :
Pilotes de bus : les pilotes bus sont responsables de l’énumération, de la configuration et du contrôle des appareils. Pour PCI-PM, le pilote PCI est chargé de lire les registres PCI-PM pour déterminer les fonctionnalités du matériel. Lorsque les fournisseurs d’intégration powerps demandent des modifications d’état d’alimentation, le pilote PCI écrit dans les registres de gestion de l’alimentation PCI pour définir le matériel sur différents états Dx.
Lorsqu’un appareil est activé pour le réveil, le pilote PCI écrit dans les registres PCI-PM pour permettre à l’appareil de déclencher pme (ACPI prendra également une action, consultez la section suivante). Enfin, lorsque l’ACPI détermine que le bus PCI réveille le système, le pilote PCI analyse l’espace de configuration PCI à la recherche de l’appareil qui affirme PME, désactive PME dans cet appareil et avertit le pilote de ce périphérique.
Pilote de périphérique : le pilote spécifique de l’appareil est chargé d’enregistrer et de restaurer le contexte de l’appareil et de demander des modifications d’état d’alimentation en tant que propriétaire de la stratégie pour l’appareil. Lorsque le pilote de périphérique reçoit un IRP POWER demandant un changement d’état d’alimentation de l’appareil inférieur, le pilote de périphérique est chargé d’enregistrer tout contexte d’appareil propriétaire nécessaire pour activer ultérieurement l’appareil. Dans certains cas, il n’y a peut-être rien à enregistrer.
Les registres PCI-PM sont strictement le domaine du pilote PCI- le pilote de périphérique IHV n’a pas besoin d’accéder à ces registres. Cela permettrait au système de ne pas fonctionner de manière fiable. La responsabilité du pilote de périphérique est d’effectuer uniquement des actions propriétaires.
Intégration d’ACPI et PCI PM
Certains appareils, en particulier les appareils vidéo de carte mère dans les portables, peuvent nécessiter la gestion de l’alimentation PCI ainsi que l’assembleur de langage source ACPI (ASL) pour gérer complètement l’appareil. Les registres PCI Power Management contrôlent l’état interne d’un appareil, comme les horloges internes et les plans d’alimentation. ASL contrôlerait l’état externe, tel que les horloges externes et les plans d’alimentation, ou dans le cas de contrôleurs vidéo, ASL contrôlerait les rétro-éclairages vidéo. Notez que ASL et PCI-PM ne peuvent être combinés que sur les appareils de carte mère.
L’architecture OnNow est une architecture en couches, qui gère naturellement l’intégration du pilote de périphérique, du pilote PCI et du pilote ACPI (et ASL). Les scénarios suivants montrent l’ordre dans lequel les pilotes sont appelés pour gérer ces appareils.
Remarque
Pour que les scénarios ci-dessus fonctionnent comme décrit, un pilote WDM doit transférer correctement les runtimes d’intégration POWER, comme décrit dans la version actuelle de Microsoft WDK.
Scénario 1 : Désactivation d’un appareil
Pilote de périphérique : enregistre l’état de l’appareil propriétaire.
Pilote PCI : enregistre Plug-and-Play configuration, désactive l’appareil (interruptions et bars) et place l’appareil dans D3 à l’aide de registres PCI-PM.
Pilote ACPI : exécute le code ASL (_PS3 et _OFF pour les ressources d’alimentation qui ne sont plus utilisées) pour contrôler l’état externe à la puce.
Scénario 2 : Gestion de l’alimentation PCI et pilotes de périphérique
Pilote ACPI : exécute le code ASL (_PS0 et _ON pour toutes les ressources d’alimentation requises par OnNow) pour contrôler l’état externe à la puce.
Pilote PCI : place l’appareil dans D0 à l’aide des registres PCI-PM et restaure la configuration Plug-and-Play (interruptions et RBA- ces derniers peuvent être différents de ce que l’appareil était précédemment activé).
Pilote de périphérique : restaure le contexte propriétaire dans l’appareil.
Scénario 3 : Activation du réveil
Pilote de périphérique : définit des registres propriétaires dans la puce pour activer le réveil. Par exemple, dans la mise en éveil réseau correspondante, il s’agit du moment où les modèles seraient programmés dans la carte.
Pilote PCI : définit les bits d’activation du réveil dans les registres PCI PM pour permettre à l’appareil d’affirmer pme.
Pilote ACPI : active le GPE dans le jeu de puces associé à PME (comme décrit par l’objet _PRW répertorié sous le bus PCI racine).
Scénario 4 : Réveil
Pilote ACPI : éveille et analyse les bits d’état GPE pour les événements de mise en éveil, la désactivation des GPU pour définir les bits d’état GPE et l’exécution de toutes les méthodes _Lxx ou _Exx associées à des bits GPE définis. En réponse à une notification de réveil sur le bus PCI, le pilote ACPI termine le WAIT_WAKE IRP du pilote PCI pour informer le pilote PCI qu’il réveille le système.
Pilote PCI : analyse l’espace de configuration à la recherche d’appareils avec un bit d’état PME défini. Pour chaque appareil, il désactive PME et termine le WAIT_WAKE IRP pour cet appareil afin d’informer le pilote qu’il affirme le réveil. Le pilote PCI arrête l’analyse des périphériques de mise en éveil lorsqu’il a effectué un passage complet par tous les appareils PCI n’ayant pas trouvé d’assertion pme et quand PME cesse d’être déclaré.
Pilote de périphérique : demande que l’appareil soit placé dans D0 (voir le scénario 2) et définit les registres propriétaires dans la puce requise pour gérer l’événement de mise en éveil.
Appel à l’action sur la gestion de l’alimentation PCI et les pilotes de périphérique
Intégrez les fonctionnalités ACPI et PCI-PM à vos appareils, comme décrit dans cet article.
La spécification PCI Power Management est disponible sur le site web PCI-SIG.
Spécification ACPI disponible à l’adresse https://www.uefi.org/specifications. Ce lien laisse le site Microsoft.com.
Le compilateur ACPI Component Architecture (ACPICA) se trouve à l’adresse https://acpica.org/downloads/binary-tools.