[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