[Skiboot] [PATCH 1/3] init, occ: Initialise OCC earlier on POWER9

Andrew Donnellan andrew.donnellan at au1.ibm.com
Tue Jun 19 16:49:21 AEST 2018

We need to use the OCC to obtain presence data for the SXM2 slots on
Witherspoon systems. This is needed to determine device type for NVLink
GPUs and OpenCAPI devices which can be plugged into the same slot. Support
for this will be implemented in a future patch.

Currently, OCC initialisation is done just before handing over to Linux,
which is well after NPU probe. On POWER8, OCC boot starts very late, so we
wait until the last possible moment to initialise the skiboot side in order
to give it the maximum time to boot. On POWER9, OCC boot starts earlier, so
there aren't any issues in moving it earlier in the skiboot init sequence.

When running on a POWER9 machine, call occ_pstates_init() as early as
possible in the init sequence. On POWER8, continue to call it from its
current location.

Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
 core/init.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/core/init.c b/core/init.c
index 1ad747e77e4a..4104e483e134 100644
--- a/core/init.c
+++ b/core/init.c
@@ -505,7 +505,8 @@ void __noreturn load_and_boot_kernel(bool is_reboot)
-	occ_pstates_init();
+	if (proc_gen <= proc_gen_p8)
+		occ_pstates_init();
 	if (!is_reboot) {
 		/* We wait for the nvram read to complete here so we can
@@ -1079,6 +1080,16 @@ void __noreturn __nomcount main_cpu_entry(const void *fdt)
 	op_display(OP_LOG, OP_MOD_INIT, 0x0002);
+	/*
+	 * On POWER9, we need to initialise the OCC before the NPU to
+	 * facilitate NVLink/OpenCAPI presence detection, so we set it
+	 * up as early as possible. On POWER8, Hostboot starts booting
+	 * the OCC later, so we delay OCC initialisation as late as
+	 * possible to give it the maximum time to boot up.
+	 */
+	if (proc_gen >= proc_gen_p9)
+		occ_pstates_init();
git-series 0.9.1

More information about the Skiboot mailing list