Funcionalidades D3cold de un dispositivo

Antes de que el controlador que sea el propietario de la directiva de energía (PPO) para un dispositivo permita que el dispositivo entre D3cold (cuando el equipo permanece en S0), el controlador debe comprobar que el dispositivo estará respondiendo y seguirá funcionando correctamente después de que el dispositivo entre en D3cold.

En el caso de un dispositivo Plug and Play (PnP), el sistema operativo normalmente obtiene información sobre las funcionalidades D3cold del dispositivo del controlador de bus primario.

Por ejemplo, si un dispositivo está conectado a un bus PCI o PCI Express, el espacio de configuración pci del dispositivo contiene un bloque de registro de administración de energía que indica las funcionalidades del dispositivo. Las marcas de funcionalidad de este bloque especifican los estados de energía del dispositivo desde los que el dispositivo puede indicar un evento de administración de energía o PME (el término PCI para un evento de reactivación). Estos estados pueden incluir D3hot y D3cold. Para obtener más información sobre la administración de energía PCI, consulte especificación de la interfaz de administración de energía de PCI Bus.

Si un dispositivo debe poder señalar un evento de reactivación desde cualquier estado dx de baja potencia que entre, el dispositivo no debe escribir D3cold a menos que el dispositivo, el controlador de bus primario y la plataforma de hardware admitan la señalización de un evento de reactivación desde D3cold.

El controlador KMDF de un dispositivo llama al método WdfDeviceAssignS0IdleSettings para permitir que el dispositivo esté inactivo en el estado de alimentación del dispositivo con tecnología más baja desde el que el dispositivo puede señalar un evento de reactivación. A partir de la versión 1.11 de KMDF, WdfDeviceAssignS0IdleSettings incluye D3cold en el rango de posibles estados Dx de bajo consumo. Este método permite que un dispositivo esté inactivo en D3cold solo si el dispositivo, el controlador de bus primario y el firmware del sistema ACPI admiten eventos de reactivación de señalización de D3cold.

El controlador WDM para un dispositivo debe decidir a qué estado Dx de baja potencia mover el dispositivo a cuando el dispositivo está inactivo. (En cambio, WdfDeviceAssignS0IdleSettings selecciona automáticamente este estado Dx para que el controlador no tenga que hacerlo). Si el dispositivo debe poder señalizar un evento de reactivación desde cualquier estado dx de baja potencia que entre, el controlador puede llamar a la rutina GetIdleWakeInfo para determinar el estado de energía del dispositivo con menor potencia desde el que el dispositivo puede señalar un evento de reactivación. Para obtener esta información, GetIdleWakeInfo consulta el firmware del sistema ACPI y el controlador de bus subyacente. En función de la información de GetIdleWakeInfo, el controlador puede llamar a la rutina SetD3ColdSupport para habilitar o deshabilitar las transiciones del dispositivo a D3cold.

Es posible que un dispositivo no requiera la capacidad de indicar un evento de reactivación de D3cold. En su lugar, el dispositivo podría ser necesario para realizar la transición de D3cold a D0 solo en respuesta a las acciones iniciadas por software. Por ejemplo, es posible que el controlador necesite reactivar el dispositivo si el controlador recibe una solicitud de E/S para el dispositivo. Con pocas excepciones, el controlador de este tipo de dispositivo puede permitir que el dispositivo escriba D3cold. Una posible excepción es un dispositivo que requiere una gran cantidad de tiempo para realizar una transición de D3cold a D0. Por ejemplo, un dispositivo de pantalla puede contener una gran cantidad de memoria que debe guardarse antes de que el dispositivo entre D3cold y se restaure después de que el dispositivo salga de D3cold.

Para obtener más información sobre la compatibilidad ACPI con D3cold, consulte Requisitos de firmware para D3cold.