[Skiboot] [PATCHv2 0/6] Enable stop4 idle state
Akshay Adiga
akshay.adiga at linux.vnet.ibm.com
Wed Jul 5 20:38:35 AEST 2017
The following patch series enabled the infrastructure to support deeper
idle states like STOP4 on POWER9 platform.
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 header file which provides glibc style endianness check
Patch 3: Enable opal_slw_set_reg() for power9
Patch 4: Configure HRMOR restore using stop api
Patch 5: Allow deeper states (like stop4) if homer address is set
Patch 6: Adds stop4 as the deepest idle state in device tree for dd1
Changes from v1 :
* Added patch6, which adds stop4 to device-tree
Akshay Adiga (6):
SLW: Add support for p9_stop_api
libpore: Add GLIBC style endianness detection
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: Set stop4 as deepest idle state
Akshay Adiga (6):
SLW: Add support for p9_stop_api
libpore: Add GLIBC style endianness detection
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: Set stop4 as deepest idle state
hw/slw.c | 116 +++-
include/p9_stop_api.H | 163 +++++
libpore/Makefile.inc | 2 +-
libpore/endian.h | 29 +
libpore/p9_cpu_reg_restore_instruction.H | 76 +++
libpore/p9_hcd_header_defs.H | 152 +++++
libpore/p9_hcd_memmap_base.H | 516 +++++++++++++++
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 | 143 +++++
12 files changed, 2693 insertions(+), 31 deletions(-)
create mode 100644 include/p9_stop_api.H
create mode 100644 libpore/endian.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