Administración de energía PCI y controladores de dispositivos
En este artículo se aclara cierta confusión que los proveedores han experimentado sobre cómo el hardware que cumple con PCI Power Management (PCI-PM) interactúa con los controladores de dispositivo en el sistema operativo y sobre cómo PCI-PM se integra con ACPI. Para obtener más información, consulte: https://www.uefi.org/specifications
Controladores de dispositivos y administración de energía PCI
En esta explicación se da por supuesto que está familiarizado con la forma en que los controladores de Windows Driver Model (WDM) controlan los eventos de administración de energía, como se describe en el DDK de Windows actual. En general, las responsabilidades de los controladores de dispositivos son las siguientes:
Controladores de autobús: los controladores de autobús son responsables de enumerar, configurar y controlar dispositivos. Para PCI-PM, el controlador PCI es responsable de leer los registros PCI-PM para determinar las capacidades del hardware. Cuando los IRP de POWER solicitan cambios en el estado de energía, el controlador PCI escribe en los registros de administración de energía PCI para establecer el hardware en diferentes estados dx.
Cuando un dispositivo está habilitado para reactivación, el controlador PCI escribe en registros PCI-PM para permitir que el dispositivo active PME (ACPI también realizará una acción, consulte la sección siguiente). Por último, cuando ACPI determina que el bus PCI está despertando el sistema, el controlador PCI examina el espacio de configuración pci buscando qué dispositivo está afirmando PME, deshabilita PME en ese dispositivo y notifica al controlador para ese dispositivo.
Controlador de dispositivo: el controlador específico del dispositivo es responsable de guardar y restaurar el contexto del dispositivo y solicitar cambios de estado de energía como propietario de la directiva para el dispositivo. Cuando el controlador de dispositivo recibe un POWER IRP que solicita un cambio de estado de energía del dispositivo inferior, el controlador del dispositivo es responsable de guardar cualquier contexto de dispositivo propietario necesario para activarlo más adelante. En algunos casos, puede que no haya nada que guardar.
Los registros PCI-PM son estrictamente el dominio del controlador PCI: el controlador de dispositivo de IHV no necesita acceder a ninguno de estos registros. Si lo hace, el sistema no funcionará de forma confiable. La responsabilidad del controlador del dispositivo es realizar solo acciones propietarias.
Integración de ACPI y PCI PM
Algunos dispositivos, especialmente los dispositivos de vídeo de placa base en portátiles, pueden requerir la administración de energía PCI, así como el ensamblador de lenguaje de origen ACPI (ASL) para administrar completamente el dispositivo. Los registros de PCI Power Management controlarían el estado interno de un dispositivo, como los relojes internos y los planos de alimentación. ASL controlaría el estado externo, como relojes externos y planos de alimentación, o en el caso de controladores de vídeo, ASL controlaría las luces traseras de vídeo. Tenga en cuenta que ASL y PCI-PM solo se pueden combinar en dispositivos de placa base.
La arquitectura de OnNow es una arquitectura en capas, que controla la integración del controlador de dispositivo, el controlador PCI y el controlador ACPI (y ASL) naturalmente. En los escenarios siguientes se muestra el orden en el que se llama a los controladores para controlar estos dispositivos.
Nota:
Para que los escenarios anteriores funcionen como se describe, un controlador WDM debe reenviar los IRP de POWER correctamente, tal como se describe en la versión actual de Microsoft WDK.
Escenario 1: Desactivar un dispositivo
Controlador de dispositivo: guarda el estado del dispositivo propietario.
Controlador PCI: guarda la configuración de Plug and Play, deshabilita el dispositivo (interrupciones y BAR) y coloca el dispositivo en D3 mediante registros PCI-PM.
Controlador ACPI: ejecuta código ASL (_PS3 y _OFF para los recursos de energía ya no están en uso) para controlar el estado externo al chip.
Escenario 2: Administración de energía PCI y controladores de dispositivos
Controlador ACPI: ejecuta código ASL (_PS0 y _ON para los recursos de energía necesarios de OnNow) para controlar el estado externo al chip.
Controlador PCI: coloca el dispositivo en D0 mediante registros y restaura la configuración de Plug and Play (interrupciones y BAR: pueden ser diferentes de lo que el dispositivo estaba activado anteriormente).
Controlador de dispositivo: restaura el contexto propietario en el dispositivo.
Escenario 3: Habilitación de reactivación
Controlador de dispositivo: establece registros propietarios en el chip para habilitar la reactivación. Por ejemplo, en la reactivación de red que coincide con patrones, esto es cuando los patrones se programarían en el adaptador.
Controlador PCI: establece los bits de habilitación de reactivación en los registros pm de PCI para permitir que el dispositivo aserte PME.
Controlador ACPI: habilita el GPE en el conjunto de chips asociado a PME (como se describe en el objeto _PRW enumerado bajo el bus PCI raíz).
Escenario 4: Reactivación
Controlador ACPI: activa y examina los bits de estado de GPE para eventos de reactivación, deshabilita los GPE para establecer bits de estado GPE y ejecuta cualquier método de _Lxx o _Exx asociado con los bits GPE establecidos. En respuesta a una notificación de reactivación en el bus PCI, el controlador ACPI completará la WAIT_WAKE IRP del controlador PCI para notificar al controlador PCI que está despertando el sistema.
Controlador PCI: examina el espacio de configuración que busca cualquier dispositivo con un bit de estado PME establecido. Para cada dispositivo, deshabilita PME y completa la WAIT_WAKE IRP para ese dispositivo para informar al controlador de que está afirmando la reactivación. El controlador PCI detiene el examen de los dispositivos de reactivación cuando ha realizado un paso completo a través de todos los dispositivos PCI que no han encontrado ninguna aserción de PME y cuando PME deja de ser aserción.
Controlador de dispositivo: solicita que el dispositivo se coloque en D0 (consulte el escenario 2) y establece los registros propietarios en el chip necesario para controlar el evento de reactivación.
Llamada a la acción en la administración de energía PCI y controladores de dispositivos
Integre las funcionalidades ACPI y PCI-PM en los dispositivos, tal y como se describe en este artículo.
La especificación PCI Power Management está disponible en el sitio web de PCI-SIG.
Especificación ACPI disponible en https://www.uefi.org/specifications. Este vínculo deja el sitio Microsoft.com.
El compilador de arquitectura de componentes ACPI (ACPICA) se puede encontrar en https://acpica.org/downloads/binary-tools.