[Skiboot] [PATCH 1/3] init, occ: Initialise OCC earlier on POWER9
Shilpasri G Bhat
shilpa.bhat at linux.vnet.ibm.com
Wed Jun 20 03:50:09 AEST 2018
Hi,
On 06/19/2018 12:19 PM, Andrew Donnellan wrote:
> 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)
>
> ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
>
> - occ_pstates_init();
> + if (proc_gen <= proc_gen_p8)
> + occ_pstates_init();
Should this check be based on if we have FSP or not?
Even in P9, OCC is not started until OPAL acknowledges a dummy OCC load request
sent by FSP. I tested your patch on a ZZ where OCC init took 11700 ms
[ 165.184882884,6] OCC: Got OCC Load message, scope=0x2 dbob=0x0 seq=0x1c
[ 178.266409596,7] OCC: Chip 00 Data (0000203ffd8e2000) = 01900160361e0000
[ 178.266410866,7] OCC: Chip 08 Data (0000203ffdce2000) = 01900060361e0000
[ 178.266412093,5] OCC: All Chip Rdy after 11700 ms
On both P8 and P9,
OpenPOWER : OCC is up before OPAL boots
FSP : OCC is started after OPAL boots.
Not sure if this check works for you..
Thanks and Regards,
Shilpa
>
> 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();
> +
> pci_nvram_init();
>
> preload_io_vpd();
>
More information about the Skiboot
mailing list