D3cold support что это
D3cold Capabilities of a Device
Before the driver that is the power policy owner (PPO) for a device enables the device to enter D3cold (when the computer is to remain in S0), the driver must verify that the device will be responsive and continue to operate correctly after the device enters D3cold.
For a Plug and Play (PnP) device, the operating system typically gets information about the D3cold capabilities of the device from the parent bus driver.
For example, if a device is attached to a PCI or PCI Express bus, the device’s PCI configuration space contains a Power Management Register Block that indicates the capabilities of the device. Capability flags in this block specify the device power states from which the device can signal a power management event, or PME (the PCI term for a wake event). These states might include D3hot and D3cold. For more information about PCI power management, see the PCI Bus Power Management Interface Specification.
If a device must be able to signal a wake event from any low-power Dx state that it enters, the device should not enter D3cold unless the device, parent bus controller, and hardware platform support signaling a wake event from D3cold.
The KMDF driver for a device calls the WdfDeviceAssignS0IdleSettings method to enable the device to idle in the lowest-powered device power state from which the device can signal a wake event. Starting with KMDF version 1.11, WdfDeviceAssignS0IdleSettings includes D3cold in the range of possible low-power Dx states. This method enables a device to idle in D3cold only if the device, the parent bus driver, and the ACPI system firmware support signaling wake events from D3cold.
The WDM driver for a device must decide which low-power Dx state to move the device to when the device is idle. (In contrast, WdfDeviceAssignS0IdleSettings automatically selects this Dx state so that the driver does not have to.) If the device must be able to signal a wake event from any low-power Dx state that it enters, the driver can call the GetIdleWakeInfo routine to determine the lowest-powered device power state from which the device can signal a wake event. To get this information, GetIdleWakeInfo queries the underlying bus driver and ACPI system firmware. Based on the information from GetIdleWakeInfo, the driver can call the SetD3ColdSupport routine to enable or disable the device’s transitions to D3cold.
A device might not require the ability to signal a wake event from D3cold. The device might instead be required to make the transition from D3cold to D0 only in response to software-initiated actions. For example, the driver might need to wake the device if the driver receives an I/O request for the device. With few exceptions, the driver for such a device can enable the device to enter D3cold. A possible exception is a device that requires a large amount of time to make a transition from D3cold to D0. For example, a display device might contain a large amount of memory that needs to be saved before the device enters D3cold and restored after the device exits D3cold.
For more information about ACPI support for D3cold, see Firmware Requirements for D3cold.
D3COLD_SUPPORT_INTERFACE structure (wdm.h)
The D3COLD_SUPPORT_INTERFACE interface structure contains pointers to the routines in the D3COLD Support Interface.
Syntax
Members
The size, in bytes, of this structure.
The driver-defined interface version. The current version of this interface is D3COLD_SUPPORT_INTERFACE_VERSION.
A pointer to interface-specific context information.
A pointer to an InterfaceReference routine that increments the interface’s reference count.
A pointer to an InterfaceDereference routine that decrements the interface’s reference count.
A pointer to a SetD3ColdSupport routine that enables or disables transitions to the D3cold device power state.
A pointer to a GetIdleWakeInfo routine that the device driver calls to discover the device power states from which this device can signal wake events to the processor.
A pointer to a GetD3ColdCapability routine that reports whether this device is capable of entering the D3cold device power state.
A pointer to a GetBusDriverD3ColdSupport routine that reports whether the underlying bus driver and ACPI system firmware support D3cold for this device.
A pointer to a GetLastTransitionStatus routine that reports whether this device’s most recent transition to D3hot was followed by a transition to D3cold.
Remarks
A device driver that successfully queries for the GUID_D3COLD_SUPPORT_INTERFACE interface receives a pointer to a D3COLD_SUPPORT_INTERFACE structure in which the pointers to the routines in the interface are all non-NULL and valid.
The D3COLD_SUPPORT_INTERFACE structure is an extended version of the INTERFACE structure.
Поддержка D3cold в драйвере
начиная с Windows 8 состояние питания устройства D3 делится на два отдельных подсостояния: D3hot и D3cold. D3 — это состояние энергопотребления устройства с наименьшим питанием, а D3cold — это подсостояние D3 с наименьшим питанием. Перемещение бездействующих устройств в подсостояние D3cold может снизить энергопотребление и продлить время, в течение которого Мобильная платформа может работать с зачислением аккумулятора.
В D3hot устройство в основном отключено. Однако устройство не отключается от основного источника питания, а родительский контроллер шины может обнаружить присутствие устройства на шине. В D3cold основной источник питания удаляется с устройства, а контроллер шины не может обнаружить присутствие устройства. Дополнительные сведения см. в описании D3hot и D3cold в разделе состояния Low-Power устройства.
в более ранних версиях Windows состояние энергопотребления устройства D3 неявно делится на подсостояния D3hot и D3cold, но устройство не может войти в D3cold, если компьютер не готовится к выходу из состояния электропитания системы S0 и не введет одно из спящих состояний с S1 по S4. В DX с низким энергопотреблением можно указать, что устройство может ввести, когда компьютер должен оставаться в состоянии S0, с помощью D3hot.
Windows 8 — это первая версия Windows для поддержки переходов состояния питания устройства в подсостояние D3cold, когда компьютер находится в состоянии S0 и не готовится к переходу в спящий режим. Устройство, которое поддерживает D3cold таким образом, помогает экономить электроэнергию следующим образом:
И наоборот, устройство, которое не может просто в D3cold, может препятствовать переходу других устройств в D3cold или другие состояния энергосбережения.
В следующих разделах содержатся дополнительные сведения о поддержке D3cold в драйвере устройства.
Включение переходов в D3cold
все версии Windows позволяют использовать устройство в D3cold, пока компьютер находится в спящем режиме (в одном из систем с низким энергопотреблением, S1 – S4). Прежде чем компьютер выйдет из состояния S0, драйверы функций, драйверы шины и драйверы фильтров работают вместе для перемещения устройства в D3hot. Когда компьютер переходит в состояние низкого энергопотребления (SX), этот переход оказывает побочный результат перемещения устройства из D3hot в D3cold.
начиная с Windows 8, устройство может ввести и выйти из D3cold, пока компьютер остается в состоянии S0. Драйвер, который является владельцем политики управления питанием (ППО) для устройства, может включать и отключать эти переходы в D3cold. Драйвер не должен включать устройство для ввода D3cold, если только устройство не может, при необходимости, выключать из D3cold, а затем возобновлять нормальную работу после перехода на D0.
Когда устройство входит в D3, оно изначально входит в подсостояние D3hot D3. В D3hot устройство может входить в значение D0 или D3cold. В ответ на событие пробуждения или запрос ввода-вывода устройство переходит в состояние D0 из D3hot. В противном случае устройство может остаться в D3hot или переходить от D3hot к D3cold. Дополнительные сведения об этих переходах см. в разделе Схема состояния электропитания устройства в области состояния электропитания устройства.
Драйвер не инициирует переход устройства из D3hot в D3cold. Вместо этого переход происходит, когда все другие устройства, совместно использующие общий источник питания с этим устройством, находятся в D3hot и готовы к вводу D3cold. Когда последний из этих устройств переходит в D3hot, базовые драйверы шины и встроенное по системы удаляют источник питания, а устройства вводят D3cold в одновременном.
Драйвер ППО для устройства сообщает операционной системе, следует ли включить переход устройства из D3hot в D3cold. Драйвер может предоставить эти сведения в INF-файле, который устанавливает устройство, или драйвер может вызвать подпрограмму SetD3ColdSupport во время выполнения для динамического включения или отключения переходов устройства в D3cold. Дополнительные сведения см. в разделе Использование интерфейса драйвера GUID_D3COLD_SUPPORT_INTERFACE.
При включении устройства для ввода D3cold драйвер гарантирует следующее поведение:
Устройство, которое не соответствует ни одному из требований, может быть недоступно после ввода D3cold, пока компьютер не будет перезагружен или не войдет в спящий режим. Если устройство должно иметь возможность передать событие пробуждения из любого состояния с низким энергопотреблением, которое оно вводит, запись в D3cold не должна быть включена, если драйвер не уверен в том, что сигнал пробуждения устройства будет работать в D3cold.
Размещение устройства в D3cold не обязательно означает, что все источники питания устройства были удалены. Это означает, что все источники питания, которые разрешают обмен данными с устройством через шину, исчезают. Устройство может по-прежнему иметь достаточную мощность, чтобы передать обработчику событие пробуждения процессору. Например, сетевой адаптер Ethernet, основной источник питания которого удаляется, может потребовать от кабеля Ethernet.
Современные рекомендации по PCI в режиме ожидания
В этой статье рассматриваются вопросы, касающиеся проектировщиков при внедрении PCI в современные резервные системы.
Чтобы удовлетворить требования ДРИПС, обычно рекомендуется, чтобы драйверы устройств PCI по возможности поддерживали D3Cold support. Для устройств, подключенных извне, например через молнией™, рекомендуется, чтобы драйвер поддерживал D3Cold, чтобы система наглядела как ДРИПС.
Ниже приведен обзор универсального управления питанием PCI и сведения о поддержке D3Cold. Рекомендации по D3Cold, характерные для классов устройств, см. на странице «отдельное устройство» в разделе » особенности устройства».
Общие сведения об управлении питанием PCI
Для управления питанием PCI (PCI-PM) требуется совместная работа между драйвером шины и драйвером устройства. В PCI-PM драйвер шины PCI отвечает за чтение реестров PCI-PM и определение возможностей устройства. Он также изменит регистры PCI-PM, чтобы установить устройство в состояние DX в ответ на соответствующий режим. Драйвер устройства отвечает за запрос изменения состояния электропитания устройства в качестве владельца политики управления питанием. Он также должен сохранять и восстанавливать контекст конкретного устройства во всех изменениях состояния электропитания.
Для некоторых устройств, исходящих от SoC, также требуется драйвер ACPI для участия в потоке управления питанием, так как им нужен ассемблер исходного языка ACPI (АСЛ) для полного управления устройством.
Дополнительные сведения о взаимодействии оборудования, совместимого с управлением питанием PCI (PCI-PM), с драйверами устройств в операционной системе и о том, как PCI-PM интегрируется с ACPI, см. в статье Управление питанием и драйверы устройствPCI.
Поддержка D3cold в драйвере
Рекомендуется, чтобы корневые порты поддерживали D3 (конечная точка для D3. холодный с поддержкой L2 и L3). Обычно рекомендуется, чтобы драйверы устройств D3Cold поддержку по возможности. В современной резервной системе устройство, которое не может просто перейти в D3Cold, может препятствовать переходу других устройств в состояние с низким энергопотреблением DX и, таким же, предотвратить переход системы в ДРИПС.
Драйвер устройства является владельцем политики питания устройства и отвечает за определение возможности поддержки D3Cold устройством. Перед включением D3Cold для устройства драйвер устройства должен убедиться, что его устройство по-прежнему работает правильно после ввода D3Cold. Например, если устройству требуется возможность пробуждения в D3Cold, драйвер должен убедиться, что система обладает достаточной поддержкой. Дополнительные сведения о том, как определить возможности D3Cold устройства, см. в статье возможности D3Cold устройства.
Драйвер должен использовать следующий контрольный список, чтобы проверить поддержку платформы и принять решение, следует ли включить поддержку D3cold для своего устройства:
Дополнительные сведения о драйвере родительской шины и требованиях встроенного по ACPI для поддержки пробуждения из состояний DX см. в следующем документе: требования к встроенному по для D3cold. Более подробные сведения о поддержке D3Cold в драйвере устройства см. в разделе Поддержка D3Cold в драйвере.