Doc: Update system power management doc

Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
This commit is contained in:
Yin Fengwei 2019-10-15 17:58:37 +08:00 committed by deb-intel
parent 3a4af4b096
commit 98fa9a81cd
3 changed files with 74 additions and 60 deletions

View File

@ -13,8 +13,8 @@ CPU P-state/C-state are controlled by the guest OS. The ACPI
P/C-state driver relies on some P/C-state-related ACPI data in the guest
ACPI table.
SOS could run ACPI driver with no problem because it can access native
the ACPI table. For UOS though, we need to prepare the corresponding ACPI data
Service VM could run ACPI driver with no problem because it can access native
the ACPI table. For User VM though, we need to prepare the corresponding ACPI data
for Device Model to build virtual ACPI table.
The Px/Cx data includes four
@ -59,7 +59,7 @@ Virtual ACPI table build flow
=============================
:numref:`vACPItable` shows how to build virtual ACPI table with
Px/Cx data for UOS P/C-state management:
Px/Cx data for User VM P/C-state management:
.. figure:: images/hld-pm-image28.png
:align: center
@ -68,16 +68,16 @@ Px/Cx data for UOS P/C-state management:
System block for building vACPI table with Px/Cx data
Some ioctl APIs are defined for Device model to query Px/Cx data from
SOS VHM. The Hypervisor needs to provide hypercall APIs to transit Px/Cx
data from CPU state table to SOS VHM.
Service VM VHM. The Hypervisor needs to provide hypercall APIs to transit
Px/Cx data from CPU state table to Service VM VHM.
The build flow is:
1) Use offline tool (e.g. **iasl**) to parse the Px/Cx data and hard-code to
CPU state table in Hypervisor. Hypervisor loads the data after
system boot up.
2) Before UOS launching, Device mode queries the Px/Cx data from SOS VHM
via ioctl interface.
2) Before User VM launching, Device mode queries the Px/Cx data from Service
VM VHM via ioctl interface.
3) VHM transmits the query request to Hypervisor by hypercall.
4) Hypervisor returns the Px/Cx data.
5) Device model builds the virtual ACPI table with these Px/Cx data
@ -103,77 +103,91 @@ impact both power and performance.
S3/S5
*****
ACRN is designed to support the system level S3/S5 with following
assumptions:
1) Guest has complete S3/S5 power state management.
2) Guest follows the ACPI standard to implement S3/S5.
3) Guest is responsible for saving its contents before entering S3/S5.
4) Highest severity guest's power state is promoted to system power state.
5) Guest has lifecycle manager running to handle power state transaction
requirement and initialize guest power state transaction.
6) S3 is only available on configurations which has no DM launched RTVM.
7) S3 is only supported at platform level - not VM level.
ACRN has a common implementation for notification between lifecycle manager
in different guest. Which is vUART based cross-vm notification. But user
could customize it according to their hardware/software requirements.
:numref:`systempmdiag` shows the basic system level S3/S5 diagram
.. figure:: images/hld-pm-image62.png
:align: center
:name: systempmdiag
ACRN System S3/S5 diagram
ACRN assumes guest has complete S3/S5 power state management and follows
the ACPI standard exactly. System S3/S5 needs to follow well-defined
enter/exit paths and cooperate among different components.
System low power state enter process
====================================
Each time, when OSPM of UOS starts power state transition, it will
finally write the ACPI register per ACPI spec requirement.
With help of ACRN I/O emulation framework, the UOS ACPI
register writing will be dispatched to Device Model and Device Model
will emulate the UOS power state (pause UOS VM for S3 and power off UOS
VM for S5)
Each time, when lifecycle manager of User VM starts power state transition,
it will finally write the ACPI register per ACPI spec requirement. With
help of ACRN I/O emulation framework, the User VM ACPI register writing
will be dispatched to Device Model and Device Model will emulate the User VM
power state (pause User VM for S3 and power off User VM for S5)
The VM Manager monitors all UOS. If all active UOSes are in required power
state, VM Manager will notify OSPM of SOS to start SOS power state
transition. OSPM of SOS follows a very similar process as UOS for power
state transition. The difference is SOS ACPI register writing is trapped
to ACRN HV. And ACRN HV will emulate SOS power state (pause SOS VM for
S3 and no special action for S5)
The VM Manager monitors all User VMs. If all active User VMs are in required
power state, VM Manager will notify lifecyle manager of Service VM to start
Service VM power state transition. lifecycle manager of Service VM follows
a very similar process as User VM for power state transition. The difference
is Service VM ACPI register writing is trapped to ACRN HV. And ACRN HV will
emulate Service VM power state (pause Service VM for S3 and no special
action for S5)
Once SOS low power state is done, ACRN HV will go through its own low
Once Service VM low power state is done, ACRN HV will go through its own low
power state enter path.
The whole system is finally put into low power state.
:numref:`pmworkflow` shows the flow of low power S5 enter process
with typical ISD configuration(S3 follows very similar process)
.. figure:: images/hld-pm-image63.png
:align: center
:name: pmworkflow
ACRN system S5 enter workflow
For system power state entry:
1. Service VM received S5 request.
2. Lifecycle manager in Service VM notify User VM1 and RTVM through
vUART for S5 request.
3. Guest lifecycle manager initliaze S5 action. And guest enter S5.
4. RTOS cleanup rt task, send response of S5 request back to Service
VM and RTVM enter S5.
5. After get response from RTVM and all User VM are shutdown, Sevice VM
enter S5.
6. OSPM in ACRN hypervisor check all guest in S5 state and shutdown
whole system.
System low power state exit process
===================================
The low power state exit process is in reverse order. The ACRN
hypervisor is woken up at first. It will go through its own low power
state exit path. Then ACRN hypervisor will resume the SOS to let SOS go
through SOS low power state exit path. After that, the DM is resumed and
let UOS go through UOS low power state exit path. The system is resumed
to running state after at least one UOS is resumed to running state.
state exit path. Then ACRN hypervisor will resume the Service VM to let
Service VM go through Service VM low power state exit path. After that,
the DM is resumed and let User VM go through User VM low power state exit
path. The system is resumed to running state after at least one User VM
is resumed to running state.
:numref:`pmworkflow` shows the flow of low power S3 enter/exit process (S5 follows
very similar process)
.. figure:: images/hld-pm-image62.png
:align: center
:name: pmworkflow
ACRN system power management workflow
For system power state entry:
1. UOS OSPM start UOS S3 entry
2. The UOS S3 entering request is trapped ACPI PM Device of DM
3. DM pauses UOS VM to emulate UOS S3 and notifies VM Manager that the UOS
dedicated to it is in S3
4. If all UOSes are in S3, VM Manager will notify OSPM of SOS
5. SOS OSPM starts SOS S3 enter
6. SOS S3 entering request is trapped to Sx Agency in ACRN HV
7. ACRN HV pauses SOS VM to emulate SOS S3 and starts ACRN HV S3 entry.
For system power state exit:
1. When system is resumed from S3, native bootloader will jump to wake
up vector of HV
2. HV resumes S3 and jumps to wake up vector to emulate SOS resume from S3
3. OSPM of SOS is running
4. OSPM of SOS notifies VM Manager that it's ready to wake up UOS
5. VM Manager will notify DM to resume the UOS
6. DM resets the UOS VM to emulate UOS resume from S3
According to ACPI standard, S3 is mapped to suspend to RAM and S5 is
mapped to shutdown. So the S5 process is a little different:
- UOS enters S3 -> UOS powers off
- System enters S3 -> System powers off
- System resumes From S3 -> System fresh start
- UOS resumes from S3 -> UOS fresh startup
- User VM enters S5 -> User VM powers off
- System enters S5 -> System powers off
- System resumes From S5 -> System fresh start
- User VM resumes from S5 -> User VM fresh startup

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB