Re: [PATCH] drm/panfrost: Remove core stack power management

From: Nicolas Boichat
Date: Thu Jan 09 2020 - 22:30:38 EST


On Thu, Jan 9, 2020 at 9:44 PM Alyssa Rosenzweig
<alyssa.rosenzweig@xxxxxxxxxxxxx> wrote:
>
> A-b
>
> On Thu, Jan 09, 2020 at 01:31:04PM +0000, Steven Price wrote:
> > Explict management of the GPU's core stacks is only necessary in the
> > case of a broken integration with the PDC. Since there are no known
> > platforms which have such a broken integration let's remove the explict
> > control from the driver since this apparently causes problems on other
> > platforms and will have a small performance penality.
> >
> > The out of tree mali_kbase driver contains this text regarding
> > controlling the core stack (CONFIGMALI_CORESTACK):
> >
> > Enabling this feature on supported GPUs will let the driver powering
> > on/off the GPU core stack independently without involving the Power
> > Domain Controller. This should only be enabled on platforms which
> > integration of the PDC to the Mali GPU is known to be problematic.
> > This feature is currently only supported on t-Six and t-HEx GPUs.
> >
> > If unsure, say N.
> >

Work on my G-72 Bifrost, no more errors on power on!

Reviewed-by: Nicolas Boichat <drinkcat@xxxxxxxxxxxx>
Tested-by: Nicolas Boichat <drinkcat@xxxxxxxxxxxx>

> > Signed-off-by: Steven Price <steven.price@xxxxxxx>
> > ---
> > drivers/gpu/drm/panfrost/panfrost_gpu.c | 5 -----
> > 1 file changed, 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> > index 8822ec13a0d6..460fc190de6e 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> > @@ -309,10 +309,6 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)
> > ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
> > val, val == pfdev->features.l2_present, 100, 1000);
> >
> > - gpu_write(pfdev, STACK_PWRON_LO, pfdev->features.stack_present);
> > - ret |= readl_relaxed_poll_timeout(pfdev->iomem + STACK_READY_LO,
> > - val, val == pfdev->features.stack_present, 100, 1000);
> > -
> > gpu_write(pfdev, SHADER_PWRON_LO, pfdev->features.shader_present);
> > ret |= readl_relaxed_poll_timeout(pfdev->iomem + SHADER_READY_LO,
> > val, val == pfdev->features.shader_present, 100, 1000);
> > @@ -329,7 +325,6 @@ void panfrost_gpu_power_off(struct panfrost_device *pfdev)
> > {
> > gpu_write(pfdev, TILER_PWROFF_LO, 0);
> > gpu_write(pfdev, SHADER_PWROFF_LO, 0);
> > - gpu_write(pfdev, STACK_PWROFF_LO, 0);
> > gpu_write(pfdev, L2_PWROFF_LO, 0);
> > }
> >
> > --
> > 2.20.1
> >