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

Stewart Smith stewart at linux.vnet.ibm.com
Tue Sep 19 20:14:49 AEST 2017


Akshay Adiga <akshay.adiga at linux.vnet.ibm.com> writes:
> 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()
>
> Changes from v4 :
>  * Changes in commit message as suggested by Vaidy in Patch 1.
>
> 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

Thansk for this, especially adding documentation at the end - that's
*fantastic* and even closes out
https://github.com/open-power/skiboot/issues/129

Merged to master as of b7f41322c61ea903f298544463d386a8a9cc6de5

-- 
Stewart Smith
OPAL Architect, IBM.



More information about the Skiboot mailing list