[Skiboot] [PATCH] init: Perform pstates-init before dt blob creation

Vaidyanathan Srinivasan svaidy at linux.ibm.com
Thu Jul 11 15:41:47 AEST 2019


* Gautham R Shenoy <ego at linux.vnet.ibm.com> [2019-07-11 10:54:58]:

> Hi Vasant,
> 
> 
> On Thu, Jul 11, 2019 at 10:40:58AM +0530, Vasant Hegde wrote:
> > On 07/10/2019 05:59 PM, Gautham R. Shenoy wrote:
> > >From: "Gautham R. Shenoy" <ego at linux.vnet.ibm.com>
> > >
> > >On FSP based systems (particularly POWER8), we perform
> > >occ_pstates_init() late in the boot to allow OCC to be loaded. Hence
> > >this was being performed in platform.exit(). occ_pstates_init() would
> > >add pstate information into the device-tree.
> > >
> > >A recent commit 9fc0c1287ada ("Move FSP specific op-panel calls to
> > >platform.exit()") moved the invocation of platform.exit() after the
> > >creation of device-tree blob. As a result, on FSP based systems, we
> > >don't have the pstate information in the device-tree, and thus the
> > >Kernel is unable to perform frequency scaling.
> > >
> > >Fix this by moving occ_pstates_init() out of ibm_fsp_exit() and call
> > >it before the creation of the device-tree blob.
> > >
> > >Fixes: commit 9fc0c1287ada ("Move FSP specific op-panel calls to
> > >platform.exit()")
> > >
> > >Signed-off-by: Gautham R. Shenoy <ego at linux.vnet.ibm.com>
> > 
> > Thanks for the fix.
> > 
> > >---
> > >  core/init.c                | 6 ++++++
> > >  platforms/ibm-fsp/common.c | 7 -------
> > >  2 files changed, 6 insertions(+), 7 deletions(-)
> > >
> > >diff --git a/core/init.c b/core/init.c
> > >index d0f28f2..8eb0729 100644
> > >--- a/core/init.c
> > >+++ b/core/init.c
> > >@@ -557,6 +557,12 @@ void __noreturn load_and_boot_kernel(bool is_reboot)
> > >  		if (!occ_sensors_init())
> > >  			dts_sensor_create_nodes(sensor_node);
> > >
> > >+		/*
> > >+		 * OCC takes few secs to boot on FSP systems. Call
> > >+		 * this as late as as possible to avoid delay.
> > >+		 */
> > >+		if (!platform.bmc)
> > >+			occ_pstates_init();
> > 
> > So you will end up calling occ_pstates_init() on simulators as well. Do you
> > really want that?
> 
> Perhaps not. You are right, I hadn't factored in the simulators. We
> should do this only for FSP based systems.

Doing this call only on FSP based system will be the right check.
However, we will return if chip->homer is not present, so functionally
we can call occ_pstates_init() on a simulator and gracefully error
out.  But it certainly adds unnecessary cycles.

Maybe we need platform callback before platform.exit where these can
fit in before DTB is rolled-up and passed to kernel.  Like a platform
dtb_exit() as a last call to pass any info to host kernel through DT.
While platform.exit means we are done with OPAL and passing control to
kernel now.

--Vaidy



More information about the Skiboot mailing list