Modern Standby firmware notifications

In line with the Modern Standby system states outlined, Microsoft provides notifications to indicate when the system transitions into and out of these states. It is important to note that these are firmware notifications rather than OS-level notifications.

These notifications are a set of Device Specific Method (_DSM) functions that can be used by the operating system to interact with system firmware for power and functionality optimizations around key system state transitions. When designing a Modern Standby-capable system, engineers must consider how and under what circumstances certain system behaviors should be implemented. One important factor in these decisions is the system’s power state—the designer may want to take certain action when the display turns off, when the system enters sleep, etc. This section seeks to provide an overview of the notifications exposed for power state transitions on Modern Standby systems. Microsoft exposes notifications for three main transitions upon entry and exit. These transitions and corresponding notifications are shown in the following diagram:

figure 1: A diagram showcasing the use of Modern Standby state transition notifications

This section assumes that the reader is familiar with interfaces defined by the ACPI specification. Please refer to this page for information regarding the latest ACPI specification. Note that the following _DSM is platform agnostic, and should not be confused with the Intel-specific _DSM described here. For this _DSM, identified by its UUID, Functions 0, 3-6 are supported starting with Windows 10 version 1903, and Functions 7 & 8 have been added in Windows 10 version 2004.

Enumerate Functions (Function 0)

In order for the operating system to interact with the platform, an ACPI device must be exposed through the Namespace. This Device must include a _CID object containing EISAID(“PNP0D80”). This device’s scope must contain the following _DSM definition indicating which _DSMs the device supports.

figure 2: A table outlining the _DSM functions to enumerate

In order to indicate support for functions 3 through 8 listed above, the Enumerate Functions function (function 0) should return Buffer(){0xFF, 0x01} . Please refer to section 9.1.1 of the ACPI spec for more information.

Display Off Notification (Function 3)

This _DSM Function will be invoked when the operating system has entered a state where all displays—local and remote, if any—have been turned off. This could occur based on some user action, e.g. a button press or lid close event, or expiration of some display power down timer. If the OS supports Display Off Notifications by invocation of this function, it must also invoke the Display On Notifications described in the next section.

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 3
  • Arg3: Unused

Return:

  • None

Display On Notification (Function 4)

This _DSM Function must be invoked if a Display Off Notification has occurred and any display—local or remote—is returned to an active state. If the OS supports Display On Notifications by invocation of this function, it must also invoke the Display Off Notifications described in the previous section.

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 4
  • Arg3: Unused

Return:

  • None

Lowest Power State Entry Notification (Function 5)

This _DSM function is invoked when all software activity has ceased (no activators are held) allowing the system to enter its lowest power state. The system may enter and exit this state several times during a Modern Standby session to service explicitly allowed, user-desired behaviors. For more information about how this is defined and differentiated from Modern Standby Sleep entry (Function 7), please see the diagram above. If the OS supports this Lowest Platform Power State Entry Notification, it must also invoke the corresponding exit notification described in the next section (Function 6).

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 5
  • Arg3: Unused

Return:

  • None

Lowest Power State Exit Notification (Function 6)

This _DSM function may be invoked whenever the system wakes from its lowest power state to run software activity (an activator is taken). The system may enter and exit this several times during a Modern Standby session to service explicitly allowed, user-desired behaviors. For more information about how this is defined and differentiated from Modern Standby Sleep entry (Function 7), please see the diagram above. If the OS supports Lowest Power State Exit Notifications by invocation of this function, it must also invoke the Lowest Power State Entry Notifications described in the previous section.

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 6
  • Arg3: Unused

Return:

  • None

Sleep Entry Notification (Function 7)

This _DSM function is invoked when the system enters the Sleep state of a modern standby session. This is defined as entry into the low power phase, when all ancillary system quiescing behavior has completed, and only explicitly allowed, user-desired, value-adding software activity can run. Microsoft recommends keyboard backlight, power button LED and fan turn off at this notification, as it indicates that larger workloads should be completed and the system has officially entered its long-term Sleep state. If the OS supports Modern Sleep entry notifications by invocation of this function, it must also invoke the Modern Sleep exit notifications described in the next section.

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 7
  • Arg3: Unused

Return:

  • None

Sleep Exit Notification (Function 8)

This _DSM function is invoked when the system exits from the Sleep state of a modern standby session. This is defined as exit from the low power phase, where the system is no longer in the explicit sleep state and may now allow larger workloads to run. Microsoft recommends keyboard backlight, power button LED and fan behavior can restore at this notification, as it indicates that larger workloads can now run as the system has officially exited its long-term Sleep state. If the OS supports Modern Sleep exit notifications by invocation of this function, it must also invoke the Modern Sleep entry notifications described in the previous section.

Arguments:

  • Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
  • Arg1: Revision ID: 0
  • Arg2: Function Index: 8
  • Arg3: Unused

Return:

  • None