ASAravind Sivakumaran
Theme

Theme and appearance

Appearance
Palette

Pick any colour. The displayed accent adjusts for readable contrast in light or dark mode.

← All notes

POWER · SIX SHORT SECTIONS · SYNTHETIC VALUES

Do the work.
Earn the idle.
Wake correctly.

Power management changes how a machine does work, waits, and wakes up. A CPU can be idle while a device stays busy. A successful request can arrive before the change it asked for. This guide follows those differences with small diagrams, Windows and Linux observations, and a step-by-step return from sleep to the desktop.

Synthetic teaching diagrams · No access to your hardware. A browser animation cannot detect your power state, graphics clock, firmware state or Wake-on-LAN capability. Controls edit a draft: press Apply and restart to run it, and the lesson figures then show that one run. Explore the PC and the mailbox lesson keep their own runs.

Every figure uses six words for evidence, in this order: supported (advertised or documented), requested (software asked), accepted (the interface answered; what that means is interface-specific), modeled applied (the teaching model reached a state), observed (a named source sampled it over a known interval) and conclusion (supported, contradicted or cannot be established). Missing, stale and unsupported values are never zero.

Explore the PC: change what it does, then ask it to rest

A shop at night: the till can be quiet while the delivery door is still busy. Below is one modeled desktop. Change PC activity and watch which parts stay busy. Then Request a power change and see it enter, or see the exact rule that says no. Selecting a part only shows it; buttons act. A display turned off is not sleep, a core that is idle does not make the package idle, and a link carrying traffic keeps the package awake in this declared model.

Synthetic example machine, not detected from yours. The older, longer lessons and labs are on the reference page. Controls need JavaScript; the diagram and state list below read without it.

  1. Nothing is running

Processor and memory

Graphics

Network and storage

Selected: CPU package

Shared CPU/SoC domain. Now: active.

Requested: no · Eligible: yes · Entered: no · Observed: none (no hardware)

Requested, eligible and entered are separate. Residency is not measured: this model has no clock.

Why package deep idle may be blocked

  • PASS No core has runnable work (cores idle)
  • PASS The GPU pipeline is idle (idle)
  • PASS The attached link may idle (L1 allowed)

What we can know

  • GPU clock: not sampled yet
  • Hardware residency: not applicable here
  • Verification job: not run
  1. Idle desktop: S0 working, nothing running.

Event 0 of 0, X3, S0 working: Idle desktop: S0 working, nothing running.

Predict: start a download, then request package deep idle. What blocks it, and does turning the display off help?

The download keeps the NIC receiving, so the link stays in L0, and this profile's package guard needs an idle link. Turning the display off does not touch that dependency. Stop the download and the guards pass. Cores were idle all along.

The power states, and what this machine can do with each

Power states in this example machine
StateWhat it meansWhat is keptIn this machine
S0 workingThe system runs. Cores idle and devices sleep on their own inside it.everythingsupported
S0 low-power idleThe OS quiesces and the platform idles in intervals (Windows Modern Standby, Linux s2idle). Only Modern Standby lets allowed background activity continue; s2idle freezes userspace.session in RAM, OS quiesced between wakeupssupported
S0i3 / S0ixA platform-specific hardware idle label inside S0. Not an ACPI state, not S3, and never a button: it is a residency observation.platform-specificreference-only
S1 / S2Legacy ACPI sleeping states; the context kept differs by platform.platform-specificreference-only
Suspend to RAM (S3, Linux deep, PSCI)Work stops, RAM stays powered, a wake restores devices. On ACPI x86 this is S3; on Arm it is the platform's own suspend.session in RAMsupported
S4 hibernationThe session image is written to storage; RAM power is not needed.image on storagesupported
S5 / full shutdownSoft off. The next use is a boot, not a continuation.nothing of the sessionsupported
G3 mechanical offPower removed at the machine; no software wake path.nothingreference-only
Linux s2idleFreezes userspace and idles the platform, still running the OS; no platform suspend is needed.session in RAMsupported
Linux deep (mem_sleep)The suspend-to-RAM route, where the platform exposes it: S3 on ACPI x86, PSCI system suspend on Arm.session in RAMsupported
Windows Modern Standby (PoFx, PEP)Windows S0 low-power idle on a platform that declares it.session in RAMunavailable
Windows hybrid sleepS3 plus a hibernation image, so a power loss during sleep is recoverable. No profile here declares it.RAM and storageunavailable
Windows Fast StartupLooks like a shutdown to the user, but the kernel state is hibernated; the user session is not kept.kernel image onlyunavailable
CPU idle (C states, PSCI idle)The modeled light and deep idle. x86 names (C1, C2, C3) and Arm platform idle names are not interchangeable.variessupported
Performance control (P states, CPPC, SCMI)Active performance, a separate axis from idle. Not a deeper sleep and not a voltage command.not applicablereference-only

Reference-only rows are explained, not simulated. S0i3 and S0ix are a platform's own hardware idle labels inside S0, never a synonym for S3. Sources: Microsoft system power states, Linux sleep states, ACPI 6.6. Hibernate here assumes the example machine has hibernation set up; a real one needs swap or a hibernation file. Arm64 profiles use their own vocabulary and never inherit x86 labels: Linux Device Tree and ACPI systems use PSCI for CPU idle and optional system suspend, and Windows on Arm uses Modern Standby with platform-defined idle names. Sources: Arm PSCI, Arm SCMI, Modern Standby, Intel S0ix terminology.

Compare: the same scenario on two machines, or your run against a baseline

Two machines can answer the same request differently, and the names they report differ too. Pick a scenario, two example machines and a boundary to line them up at. A column that cannot run the scenario says why instead of quietly doing something else.

Aligned at the first fully restored wake
X1 · Traditional ACPI S3 desktopX3 · ACPI desktop with s2idle and deepDiffers
Architecture and OSx86-64 · windowsx86-64 · linuxdiffers
Firmware descriptionACPIACPIsame
SystemS0 workingS0 workingsame
CPU coresexecuting a compileexecuting a compilesame
Packageactiveactivesame
GPUD0, engines idleD0, engines idlesame
Displayononsame
NICD0, idleD0, idlesame
PCIe linkL1L1same
RAMpowered, contents retainedpowered, contents retainedsame
Storageidleidlesame
Queued worknonenonesame
Hardware residencynot applicable herenot applicable heresame
GPU clock samplenot sampled yetnot sampled yetsame
Capability examplepowercfg /a/sys/power/state and /sys/power/mem_sleepdiffers
Wake report examplepowercfg /lastwakepower/wakeup_count of the devicediffers

16 rows shown; 3 differ. These are model runs, not measurements.

Capability and wake-report rows are examples of what each OS offers, from this model run. Nothing here measured your computer, and "same machine" is only claimed where the declared capabilities match.

1 Work, power, energy and time

Think of a car trip. A faster car arrives sooner, but may burn more fuel for the same trip. Voltage is the electrical potential difference that pushes charge; current is the charge flowing; power is the rate energy is used; energy is power accumulated over time; frequency is clock cycles per second. Clock gating stops selected switching, while power gating changes a domain's supply. Neither is the same as keeping its state, which is retention. Below, three fictional points each finish the same 100 units of correct work: speed is only worth something when the work is right.

Energy is the area under the power curve Power in watts is drawn against time in seconds. It is 20 W for the first part, then 4 W at idle. The shaded area under the curve is the energy in joules. Power (W): how fast energy is used Time (s) working idle Energy (J) = area
Like speed and distance: a rate (watts) held for a time (seconds) adds up to a total (joules). 1 W for 1 s is 1 J. Shorter work and a lower idle both shrink the shaded area.
Frequency (normalized)VoltageABCTime: 10 model-timeAverage power: 4 model-powerEnergy: predict first

Selected A. Predict: which finishes first, which uses less energy?

Same 100 model work units
ABC
Frequency (normalized)0.50.751
Voltage (normalized)0.60.70.8
Time1076
Average power469
Energy = power × time………
Correct workyesyesyes
Predict: which point finishes first, and which uses the least energy?

C finishes first (6 units against 10 for A), and A uses the least energy (40 against 54). Lower watts alone cannot establish lower energy for a job of a different duration. Work rate is 100 divided by time, not the frequency on the axis.

Advanced: what a plot like this cannot say
  • Dynamic switching power is often explained as proportional to activity × capacitance × voltage² × frequency. That is limited intuition for one kind of loss: not whole-system power, not a safe voltage, and not an AMD interface.
  • Leakage, unmodeled domains and the workload itself change real results. Declare the measurement boundary before comparing energy.
  • Points A, B and C and their times and powers are invented teaching values, not fitted to hardware. Real systems expose operating points (voltage and frequency pairs) through abstractions such as the Linux operating performance points (OPP) library; this plot is not one.

What this is based on: Linux OPP library, TI CMOS power note. Neither supplies the fixture numbers. Evidence type: teaching model.

2 Asking for a power change is not getting it

Order a pizza. The shop says "got it", then makes it, then it arrives. Each is a separate fact, and only the last one is on your table. Power management is the same: policy or client intent → supported driver or interface → firmware or controller → domain behavior → observation. That is an explanatory relationship, not a claim that every Windows or Linux operation uses one mailbox. RSMU is used here as Remote System Management Unit, an expansion supplied by this guide's author; no public source for a specific platform is cited, so treat it as unconfirmed.

  1. Policy or client intentYou place the orderwhat software asked for
  2. Driver or interfaceThe shop says "got it"the interface answered
  3. Firmware or controllerThe kitchen makes itmay refuse or delay
  4. Domain behaviorIt leaves the kitchenthe hardware changes state
  5. ObservationIt reaches your tablea named counter or sample
One request, four separate facts
1 Request2 Accepted3 Modeled effect4 Observation
Intentrequest B
Interfaceaccepted
Modeled effectB applied
Observationsample B [fresh]
Conclusioninconclusiveinconclusiveinconclusivesupported

Event 4 of 4, Observation: A sample is taken after the change, over a known interval. Conclusion: supported. A fresh sample shows B, as requested.

These events belong to the operating-point request phase before sleep; their sample is separate from the post-wake window.

Predict: when "accepted" appears, what can we conclude?

Only what this model's response contract says. A fresh observation has not arrived. In the timeout preset the request was already sent, so the effect is unknown, not "nothing happened": resending blindly could run it twice.

Advanced: serialization, timeouts and late replies
  • Timing out before dispatch leaves the target untouched; timing out after dispatch does not. The older five-trace firmware lesson shows both, plus a late reply read as the wrong answer and an "ok" with no effect.
  • Local run IDs in this page organize the display. They do not prove correlation in a protocol that carries no request ID. Callers must serialize requests that share one interface.
  • Distinct public examples with different contracts: the community ryzen_smu project, Linux's AMD PMC driver, amd-pstate, the server-only HSMP interface and AMD-SMI. None is an official universal mailbox, and none proves how RSMU is laid out on a given Ryzen.

What this is based on: Linux AMD PMC driver, v6.12, Linux amd-pstate, Linux HSMP (server), AMD-SMI overview, Community ryzen_smu. Evidence type: teaching model, with scoped public implementations.

RSMU and the mailbox: how a request reaches firmware

A hotel front desk with a pigeonhole. You do not walk into the kitchen: you write your request on a slip, put it in the pigeonhole, ring the bell and wait for the answer slip. Firmware that manages power on a Ryzen chip is reached the same way, through a small mailbox of registers: a message register (the bell), an argument register and a response register. RSMU is used in this guide for Remote System Management Unit, a name the guide's author supplied and no cited source confirms. The pattern below is the public one; the numbers are invented.

Client (a driver)

▶ Client acts

Mailbox registers

message (the doorbell)
0x00
argument
0x00
response
0x01

Firmware (management controller)

waiting

Client: Poll the response register until it is nonzero. Zero means firmware is still working on something.

  1. Client: Wait for the last command
  2. Client: Clear the response
  3. Client: Write the argument
  4. Client: Write the command ID
  5. Firmware: Reads the mailbox and acts
  6. Firmware: Writes the response
  7. Client: Read the result

Step 1 of 7. Client: Wait for the last command. Poll the response register until it is nonzero. Zero means firmware is still working on something.

Predict: the response says OK for a power-limit request. Was the limit changed?

The firmware took the command; that is all OK says. The effect is a separate fact that needs its own read, which is the request lesson in section 2, shown on a mailbox. Turn on "A second client, no lock" to see OK come back for a value you did not ask for.

Predict: no response ever arrives. Is it safe to send the command again?

No. The doorbell was already rung, so the command may have run. Sending it again could run it twice. Linux reports this as a timeout, not as "nothing happened".

The response codes

Response codes, as the community ryzen_smu project documents them
ValueMeaningLinux amd_pmc maps it to
0x01OKsuccess
0xFCREJECTED, BUSYEBUSY
0xFDREJECTED, PREREQUISITE UNMETEIO
0xFEUNKNOWN COMMANDEINVAL
0xFFFAILEDEIO
0x00WAITING (no answer yet)no mapping: the poll times out (ETIMEDOUT)
Advanced: what is public, and what is not
  • The steps follow the Linux amd_pmc driver's amd_pmc_send_cmd() (v6.12): lock, poll the response register until nonzero, write 0 to it, write the argument, write the message ID, poll the response again, then map the code (busy to EBUSY, unknown to EINVAL, prerequisite or failure to EIO) and read the argument register for returned data. That driver talks to the platform's PMFW mailbox, which is not necessarily the same mailbox as RSMU.
  • The result table is the community ryzen_smu project's. It also separates RSMU from MP1 mailboxes and exposes rsmu_cmd, smu_args and an SMN read and write file. It is community work, not an AMD specification.
  • Not established here: any Ryzen's real register addresses, command IDs, argument layout or timing. Command IDs 0x02, 0x14 and 0x7F, the 15000 and 25000 limits and the firmware version are invented for teaching.
  • The page never touches a mailbox. Writing unknown commands to real management firmware can hang or misconfigure a machine.

What this is based on: Linux AMD PMC driver, v6.12, Community ryzen_smu. Evidence type: public driver source and community documentation, with an invented teaching model.

3 Which part is asleep? Power states by layer

A house has a "away" mode, a light in each room and a pump in the basement. Saying "it is off" is meaningless until you say what. A computer is the same: S states describe the system, C states a processor idling, P states active performance (modern CPPC, Collaborative Processor Performance Control, uses an abstract scale instead), D states one device and L states a PCIe link. Residency is time actually spent in a state, from a named source. Z is vendor terminology. They are scopes, not rungs of one "deeper sleep" ladder, and they coexist: a running S0 system can have an idle CPU and an active NIC.

  • SThe whole housesystem: powercfg /a, /sys/power/mem_sleep
  • COne room's lightprocessor idle: cpuidle residency
  • PHow hard a worker worksactive performance: cpufreq, CPPC
  • DOne appliancea device: runtime_status
  • LThe pipe to ita PCIe link: ASPM
  • System · ACPI S states
    Plain meaning
    S0 is the working state; a supported low-power idle system can spend time in very low-power conditions and still be in S0. S3 is a separate sleep path where the platform supports it.
    Example evidence
    Windows powercfg /a; Linux /sys/power/mem_sleep.
    Does not prove
    That any state was reached.
  • CPU activity · P states and CPPC
    Plain meaning
    Performance while the CPU is working. Modern CPPC interfaces use an abstract performance scale and may not expose a simple ladder of P states.
    Example evidence
    Linux cpufreq policy and scaling driver (for example amd-pstate).
    Does not prove
    A voltage, or an exact delivered frequency: a performance request is not a voltage command.
  • CPU idle · C states
    Plain meaning
    Processor idle states. Core and package observations are labeled separately.
    Example evidence
    Linux cpuidle counters; turbostat hardware columns.
    Does not prove
    That an OS idle-state name is a directly measured hardware residency.
  • CPU package · residency
    Plain meaning
    How long the whole package spent in a package idle state: observed separately from any one core.
    Example evidence
    A named counter with its units and interval.
    Does not prove
    That the GPU, NIC or system were also idle.
  • GPU and NIC · device D states
    Plain meaning
    Each device has its own power state. D3hot (power kept) and D3cold (power removed) differ and matter only in advanced reading.
    Example evidence
    Linux power/runtime_status (runtime PM status, not a direct reading of the hardware D state); Windows traces.
    Does not prove
    The state of the whole system.
  • PCIe connection · link states
    Plain meaning
    The state of the link between two ends: a separate fact from either end.
    Example evidence
    Link power-state reports where exposed.
    Does not prove
    That the endpoint, package or system is asleep.
  • Vendor platform · Z terminology
    Plain meaning
    Platform-specific. The one sourced example is the Ryzen 7040 public Z8 overview: AMD's public presentation names Z8 a deep low-power state.
    Example evidence
    That presentation, page 15.
    Does not prove
    A universal Z0 to Zn ladder, a control interface, or equivalence with S0i3. Other families and numbers are unknown until sourced.
Predict: if one CPU enters idle, must the GPU, NIC and whole package follow?

No. Each scope has its own state; they share some dependencies (a package cannot idle while a core is busy) but there is no universal dependency graph. A chosen idle state is also not a measured residency.

State of what? Name the scope first; then ask what evidence belongs to it.

S0 low-power idle, zoomed in

Three names are often blurred. Windows S0 low-power idle (Modern Standby) and Linux suspend-to-idle (s2idle) are operating-system paths. A platform hardware low-power state (sometimes called S0i3) is a hardware result in that platform's own terms. S0i3 is not an ACPI system state. Entering the OS path does not prove the hardware got there.

ACPI system state: S0
Active desktopLow-power idle periods

Windows route: Modern Standby / S0 low-power idle
Linux route: suspend-to-idle (s2idle)

Hardware result: measured residency, if exposed
Platform term: S0i3 or another scoped label

Separate alternative: S3, only on systems that support it. It is a sibling of S0 low-power idle, never the next stage.

Four evidence examples: capability, OS path and residency
Capability, OS path and residency are three separate facts
ExampleCapabilityOS pathResidencyWhat you may say
Capability onlysupportednot shownunavailableThe platform offers it.
OS transition recordedsupportedenteredunavailableThe OS took that path. The hardware result is unknown.
Valid residency deltasupportedenteredobserved over a known intervalThe hardware spent that time in low power, in that source's terms.
Nothing exposedunknownunknownunavailableNothing yet.
Predict: does seeing s2idle selected prove S0i3 was reached?

No. It identifies the OS mechanism; achieved platform residency needs its own evidence. On Windows, a capability listing does not show that a particular session spent time in deepest idle.

Advanced: naming and platform limits
  • Screen off, CPU idle, system suspended and hardware reaching its target are four different claims.
  • ACPI names system, processor and device states; vendor names such as Z or S0i3 map to them only per platform and source. This guide gives no universal translation table.
  • OS version, firmware and platform change what is supported and reported; Windows and Linux lifecycles and reports are not interchangeable.

What this is based on: ACPI 6.6 concepts, Linux system sleep states, Linux CPUIdle, Linux CPU performance scaling, Microsoft Modern Standby, Modern Standby SleepStudy, AMD Ryzen 7040 Hot Chips 2023, page 15. Evidence type: public specification and documentation; the diagrams are teaching drawings.

4 Watching a workload: what the evidence can show

A doctor does not diagnose from one number. Pick the claim, then pick the measurement that can settle it, over the same time window for every lane. Idle may include short background wakeups. Video can keep a media engine busy while the 3D engine rests. Graphics work raises demand on its engines. Bursty work alternates activity and idle. These are possible patterns, not guaranteed transitions or fixed frequencies, and CPU use alone does not decide a P, C or Z state. A failed wake means no post-wake window. After a successful wake, this example's NIC guard can withhold the selected job's CPU and engine fixture while an independent clock sample remains; idle background activity is not a completed job.

One observation window, six kinds of evidence
EvidenceWhat a real source would giveStatus
CPU workutilization over the windowvalid
CPU idleOS idle-state accounting delta (not hardware residency)valid
GPU / media enginemedia engine activity, provider-defined metricvalid
GPU clocka reported value with its domain and sample agevalid
System / device idlesession report or runtime status; not derived from CPU usesupported
Resultwork completed + elapsed time (+ energy only with a valid boundary)supported

A media engine can be busy while the CPU and 3D engine stay light.

Linux: /sys/power/mem_sleep, cpuidle counters, runtime_status, suspend_stats.

A read-only checklist (six steps)
  1. Name the workload and the observation interval.
  2. Check which sleep and device capabilities this machine exposes.
  3. Keep policy and selected OS paths apart from achieved residency.
  4. Compare activity and counter deltas over the same interval, with elapsed time.
  5. Check that work completed correctly after wake, and note which devices you actually tested.
  6. Write "unknown" instead of a plausible number.
Predict: which observation would settle each claim?
"The package reached a low-power idle state."
A residency delta from a named counter over the same interval. CPU use does not decide it.
"The GPU ran at the requested clock."
A fresh clock sample with its domain and sample age. A busy engine is not a frequency, and a clock drop without a named limiter does not prove thermal throttling.
"The video played correctly."
The work's completion result and elapsed time, not an idle counter.
Advanced: Windows, read-only

Record OS version, hardware scope, provider, time window and unavailable fields. Needing elevation or a missing interface is a normal outcome, not an error to hide.

  • powercfg /a lists available sleep states and why others are unavailable. It does not show what a session reached.
  • powercfg /requests shows active power requests: clues about activity, not a full list of what blocks sleep.
  • powercfg /lastwake and powercfg /devicequery wake_armed are different evidence: the reported last wake, and which devices are armed. Neither proves every Wake-on-LAN packet would wake the machine.
  • SleepStudy and the system sleep diagnostics write a local report on supported systems; they do not change the power plan. Keep each report's labels and intervals as they are, and check the elevation and platform notes in the current documentation.
  • Task Manager's CPU, GPU and per-engine views are a starting point. Utilization, nominal speed or one clock sample is not residency, instantaneous frequency or voltage, and media, 3D and compute engines are different measures.
  • For timelines, the optional WPR Power profile and WPA align CPU idle states, device D states and platform idle states. Collecting starts instrumentation, writes a trace, adds overhead and needs elevation. A short trace is not a battery-life claim.
  • For an AMD graphics example, the ADLX interface offers TimeStamp, GPUClockSpeed and GPUVRAMClockSpeed; check IsSupportedGPUClockSpeed first. It is one vendor API, not a Windows built-in or a voltage readout.
Advanced: Linux, read-only

Nothing here suspends the machine or writes a control. Some reads need root; do not mount debugfs, install modules or change permissions to get them.

  • /sys/power/state and /sys/power/mem_sleep show exposed mechanisms and the selected mem variant. Brackets mark the selection, not residency.
  • cpuidle's per-CPU state names, usage and time are the driver's exported counters and OS accounting. Compare valid before and after deltas; they are not measured package residency.
  • cpufreq policy names the scaling driver. amd-pstate uses CPPC abstractions: there is no universal conversion from its performance values to a voltage or an exact delivered frequency.
  • A device's power/runtime_status, where exposed, is runtime PM. Runtime suspend is not system suspend and does not show a physical rail state.
  • Kernel logs around a sleep show OS lifecycle events and some errors. A clean log does not show deepest residency or working devices.
  • On supported systems /sys/power/suspend_stats/last_hw_sleep reports achieved hardware sleep time for the last cycle; use that kernel's documented units.
  • turbostat --list shows available columns. Its software C1% and C2% are not the hardware CPU%c* and Pkg%pc* counters, and Bzy_MHz and Avg_MHz mean different things. Sampling adds overhead, so state it.
  • GPU metrics depend on provider and device. On supported AMDGPU devices find the right DRM device and hwmon node: freq1_input is graphics frequency in Hz and freq2_input memory frequency in Hz, where exposed. gpu_metrics is a versioned binary snapshot that needs a matching decoder. Keep device, scope and sample age; do not borrow another vendor's fields.
  • User-space sampling can stop during suspend and heavy polling disturbs idle. Do not draw a "live" clock through sleep without a real source.

The page never runs a command, reads your devices or sends diagnostics. Creating a report or trace on your own machine is a different step from reading a value, and you decide whether to do it.

What this is based on: Powercfg reference, Modern Standby SleepStudy, WPA Modern Standby analysis, ADLX GPU metrics, Linux system sleep states, Linux CPUIdle, Linux AMD debugging, turbostat v6.12 manual, AMDGPU monitoring. Evidence type: public documentation. The traces on this page are invented.

5 Waking from sleep to the desktop, step by step

Waking a hotel at dawn: the lobby lights come on, the kitchen starts, and the guests' doors unlock, but not all at once and not in a fixed order. Here the lanes are the system, the CPU, the GPU and display, the GPU's clock reading and the NIC. Pick an example and press Next step, reading across: each lane keeps its own known state. A visible desktop shows a working display path, not that every engine or every device is validated.

This example makes the NIC a prerequisite for the workload. Readiness allows submission; a checked result shows completion.

Linux · suspend-to-idle (s2idle) · woken by: local button press. Teaching order: lanes may overlap, and no timing between unrelated devices is implied.

Sleep to desktop, one lane per component
LanePrepareQuietWake eventRestoreDesktop (now)
SystemRequest sleepStays in S0, low-power idleLocal button pressResumingInteractive
CPUFinish workIdleRuns wake and OS workResumesRuns the workload
GPU / displayPause activityRetained or low power (varies)Waits for the OSRestore what this path lost; driver readies displayPresents the desktop
GPU clockLast valid sampleNo valid sampleNo valid sampleNew sample, if the source reports oneFresh value when demand returns
NICNo wake arming neededWake-capable state, if armedNot the wake sourceRestore device stateReady for traffic
Work gateOpenClosedClosedClosed until the readiness guardOpen
EvidenceIntent recordedResidency observed? (own evidence)Wake-source report, if anyPer-device readinessCorrect work, checked

Linux names, scoped: the system-sleep device PM phases (suspend, resume) are a separate path from runtime PM (runtime_suspend, runtime_resume, power/runtime_status).

Step 5 of 5, Desktop. System: Interactive. NIC: Ready for traffic. Work gate: Open. Evidence: Correct work, checked.

Predict: the OS is awake. Can we reopen this device's work queue?

Not yet. Pick "Workload device not ready (NIC)": the work gate stays closed until the device's readiness guard is met. A missing observation never becomes a guess that lets work through.

Advanced: graphics, ordering and OS names
  • The GPU may be quiescent, clock-gated, in a device low-power state or retained, depending on platform and path. Clocks during low power are often unavailable to an observer, so the lane says "unavailable", never 0 MHz. After resume the driver restores what that path lost, and demand-based clocks can change again as the desktop draws.
  • This is a teaching partial order, not a cycle-accurate resume protocol. Steps can overlap, and a retained domain needs no restoration. No fixed order between unrelated devices is implied.
  • Windows names, scoped: system and device power states, driver power management, and for KMDF/UMDF drivers EvtDeviceD0Exit and EvtDeviceD0Entry. Those two concern one device leaving or entering D0, not a universal GPU or system wake sequence.
  • Linux names, scoped: the system-sleep device PM phases (suspend, resume) are a separate path from runtime PM (runtime_suspend, runtime_resume, power/runtime_status).
A small Wake-on-LAN branch

Eligibility is a chain of separate questions. The first one not answered "yes" stops what you can conclude. Nothing here sends a packet, enables Wake-on-LAN or touches a NIC.

  1. Did a packet reach the NIC? yes
  2. Is wake supported for this NIC, platform and sleep path? yes
  3. Is wake configured and armed, with the power it needs retained? yes
  4. Was a wake observed? yes
  5. Does the wake report name the source? yes

A wake was observed and the report names a match. The NIC still has to be ready before ordinary traffic.

Predict: does "wake armed" prove this packet woke the machine?

No. Arming is configuration evidence. The observed wake and its reported source are separate, and the system can wake before its NIC is ready for ordinary traffic. A Modern Standby background wake can leave the display off.

  • Microsoft's Wake-on-LAN notes cover wake from S3 or hibernate, and say hybrid shutdown (fast startup) disarms the NIC. Whether wake works from low-power S0 depends on platform, OS and driver. None is promised, and this guide observes support; it does not configure it.
  • Read-only on Linux: ethtool followed by the interface name shows supported and current wake settings. It does not show that a packet woke anything. Do not use its set options, and never publish a SecureOn password from its output.

What this is based on: Linux device power management, Linux runtime PM, Power management framework, Modern Standby versus S3, Windows Wake-on-LAN notes, Linux ethtool WoL interface. Evidence type: public documentation; this timeline is a teaching model.

6 What can we conclude from the evidence?

A courtroom does not convict on "he said he would". Here the claim is the target was achieved and useful work resumed. The run is the one you set in sections 2 to 5: its request, wake and readiness choices carry over, so a blocked wake can never read as resumed work. Predict, press Compare, and read the strongest statement the evidence allows. A contrary sample stays visible, a stale one stays inconclusive, and a check nobody ran stays unresolved.

Claim: The target was achieved, and useful work resumed

Before, after and what can be claimed
BeforeAfterConclusion
capability listedresponse acceptedinsufficient alone
request for B sentmodeled applied Bmodel-only statement
request-phase sample before sleepfresh sample Bobservation supports B
workload not run yet100 of 100 model units correct in 1000 msthis work resumed
no network-card or DMA checkcheck unavailablebroader claim unresolved

supported: B was observed and this work resumed. Nothing broader is established.

Predict: an OS wake, a visible desktop and a working device operation: same evidence?

No. Each answers a different question. The after-wake lesson shows why a repair acknowledgement and a real, valid operation differ.

Advanced: after the wake, and the source index
  • The after-wake lesson keeps the Linux DMA and NIC positive-probe case: a control or translation acknowledgement and a valid post-wake operation answer different questions, and the denied request must still be denied. It is a browser fixture, not a Linux driver test. Background: PCIe DMA and the DMA journey.
  • The evidence packet, idle policy comparison and counter exercise are optional detail on the reference page.
  • Missing, stale and contradictory data are first-class results. A model pass is not hardware validation or standards compliance.

Evidence type: teaching model. The record you can download is synthetic, its events are model ticks and its run IDs are local.

Sources

Public sources establish concepts and behavior within their own scope. None supplies this page's invented values or shows the state of your hardware. A generic source cannot establish a particular Ryzen platform's RSMU layout, its complete Z mapping, achieved S0i3 residency, an exact GPU clock or Wake-on-LAN support.

Glossary

Voltage
Electrical potential difference.
Current
Charge flow.
Power, energy
Power is the rate of energy use; energy is power over time.
Frequency
Clock cycles per second.
Clock gating, power gating, retention
Stop selected switching; change a domain's supply; keep its state.
RSMU
Remote System Management Unit, as supplied for this guide; unconfirmed for any named platform.
S, C, P, D states
System, processor idle, performance and device states: different scopes.
CPPC
Collaborative Processor Performance Control: an abstract performance scale.
Z state
Vendor and platform terminology; only the Ryzen 7040 Z8 overview is sourced here.
Modern Standby, s2idle, S0i3
Windows low-power idle in S0; Linux suspend-to-idle; a platform hardware low-power term.
Residency
Time actually spent in a state, from a named source over a known interval.
Wake-on-LAN
A NIC asking the system to wake on a matching packet, if supported and armed.

Power reference and original labs: the earlier, longer page (PM-01 to PM-07, the twelve-chapter article, evidence lessons, C++ lab). Optional depth; nothing above depends on it.