1 of 5

Xen Power Management

Support for Xilinx Zynq Ultrascale+ MPSoC

Presented to Xen ARM community on 8/2/2017

2 of 5

Power Management Design Overview

  • Device management (EEMI)
    • Device power states
    • Resets
    • MMIO access
  • System management (PSCI/EEMI)
    • Suspend
    • Shutdown
    • Restart
  • CPU management (PSCI/EEMI)
    • CPU hotplug
    • CPU idle

3 of 5

System Suspend Support

  • Basic suspend scenario
    • Each guest suspends on its own
    • Linux/Dom0 suspends the last
    • Xen suspends after all guests suspend
  • Suspend consists of
    • Suspending devices,
    • Secondary cores using PSCI CPU_OFF and
    • System using PSCI SYSTEM_SUSPEND
  • Resume
    • Always Dom0 + DomU depending on the wake source

4 of 5

System Management Coordination

How to enable Dom0 to trigger system wide suspend, shutdown, restart:

  • Coordination needed to notify DomUs about desired operation
    • EEMI interface includes callbacks for this purpose
    • Xen paravirtualized callback interface for guest suspend and CPU hotplug
    • Xenstore protocol (xlshutdown, etc)
  • E.g. coordinated suspend scenario:
    • System suspend initiated by Linux/Dom0
    • Request DomUs to suspend (EEMI)
      • Trigger init-suspend callbacks to DomUs (EEMI)
    • After DomUs suspend Linux/Dom0 + Xen suspend as well

5 of 5

CPU Idle Support

  • ACPI-based solution for x86 exists
  • Existing ARM solution:
    • Only standby (WFI) state is supported
    • vPSCI CPU_SUSPEND is implemented (partially)
  • Proposed ARM solution (PSCI-based):
    • Goal is to support power-down of physical cores
    • Required support for:
      • CPU idle governor
      • PSCI CPU_SUSPEND
      • Suppressing ticks
      • etc.