[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