[Skiboot] [PATCH v4 0/8] Enable stop4 idle state

Akshay Adiga akshay.adiga at linux.vnet.ibm.com
Fri Sep 15 17:34:28 AEST 2017


When cpu enters stop4 or deeper state it losses few critical hypervisor
sprs. In the POWER9 platform stop-api provides interface for opal to call
into low level platform firmware/microcode to configure and setup various
actions on wakeup from deep idle state.

Some SPRs that have implicit value like HRMOR are directly set from
OPAL, while other are left to be configured from Linux using opal
calls.

p9 stop api is used to restore these hypervisor sprs with
correct values. Sprs like HRMOR is configured from skiboot,
where as LPCR, HID and MSR are configured by kernel. Kernel
uses opal_slw_set_reg() to configure these sprs.

Patch 1: p9_stop_api from hostboot code.
Patch 2: Add glibc style endianness check in CCAN endian.h
Patch 3: Fixes build erros caused due to mixed code and declaration
Patch 4: Enable opal_slw_set_reg() for power9
Patch 5: Configure HRMOR restore using stop api
Patch 6: Allows deeper stop states (like stop4) if homer address is set
Patch 7: Fix stop4 related flags that are exposed in device-tree for DD2
Patch 8: Add Documentaion for opal_slw_set_reg

Changes from v1 :
 * Added patch6, which adds stop4 to device-tree

Changes from v2 :
 * Updated latest p9_stop_api code base from hostboot
 * Removed "code under development" from commit log for p9_stop_api
 * added Patch 2 , for a p9_stop_api build fix
 * Remove stop4 support for power9 DD1, stop1 is the deepest stop
        state in DD1.
 * Modify stop4 related flags (for DD2 and further rev's)

Changes form v3 :
 * Added glib style endianess check to ccan.
 * Added documentation
 * Added explicit check for power8 in opal_slw_set_reg()


Akshay Adiga (8):
  SLW: Add support for p9_stop_api
  Add glibc style endianess check in CCAN
  libpore: Build fix for p9_stop_api
  SLW: Add opal_slw_set_reg support for power9
  SLW: Configure self-restore for HRMOR
  SLW: Allow deep states if homer address is known
  SLW: Removing timebase related flags for stop4
  Add Documenation for opal_slw_set_reg

 ccan/endian/endian.h                     |    9 +
 doc/opal-api/opal-slw-set-reg-100.rst    |   46 ++
 hw/slw.c                                 |  116 +++-
 include/p9_stop_api.H                    |  163 +++++
 libpore/Makefile.inc                     |    2 +-
 libpore/p9_cpu_reg_restore_instruction.H |   76 +++
 libpore/p9_hcd_header_defs.H             |  152 +++++
 libpore/p9_hcd_memmap_base.H             |  522 +++++++++++++++
 libpore/p9_stop_api.C                    | 1028 ++++++++++++++++++++++++++++++
 libpore/p9_stop_api.H                    |  163 +++++
 libpore/p9_stop_data_struct.H            |  149 +++++
 libpore/p9_stop_util.C                   |  187 ++++++
 libpore/p9_stop_util.H                   |  145 +++++
 13 files changed, 2729 insertions(+), 29 deletions(-)
 create mode 100644 doc/opal-api/opal-slw-set-reg-100.rst
 create mode 100644 include/p9_stop_api.H
 create mode 100644 libpore/p9_cpu_reg_restore_instruction.H
 create mode 100644 libpore/p9_hcd_header_defs.H
 create mode 100644 libpore/p9_hcd_memmap_base.H
 create mode 100644 libpore/p9_stop_api.C
 create mode 100644 libpore/p9_stop_api.H
 create mode 100644 libpore/p9_stop_data_struct.H
 create mode 100644 libpore/p9_stop_util.C
 create mode 100644 libpore/p9_stop_util.H

-- 
2.5.5



More information about the Skiboot mailing list