2020-09-09 12:42:17

by Steven Price

[permalink] [raw]
Subject: [PATCH] drm/panfrost: Ensure GPU quirks are always initialised

The GPU 'CONFIG' registers used to work around hardware issues are
cleared on reset so need to be programmed every time the GPU is reset.
However panfrost_device_reset() failed to do this.

To avoid this in future instead move the call to
panfrost_gpu_init_quirks() to panfrost_gpu_power_on() so that the
regsiters are always programmed just before the cores are powered.

Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
Signed-off-by: Steven Price <[email protected]>
---
drivers/gpu/drm/panfrost/panfrost_gpu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
index e0f190e43813..6d17d3cbd1df 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
@@ -305,6 +305,8 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)
int ret;
u32 val;

+ panfrost_gpu_init_quirks(pfdev);
+
/* Just turn on everything for now */
gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present);
ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
@@ -356,7 +358,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
return err;
}

- panfrost_gpu_init_quirks(pfdev);
panfrost_gpu_power_on(pfdev);

return 0;
--
2.20.1


2020-09-09 15:54:15

by Alyssa Rosenzweig

[permalink] [raw]
Subject: Re: [PATCH] drm/panfrost: Ensure GPU quirks are always initialised

Reviewed-by: Alyssa Rosenzweig <[email protected]>

> diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> index e0f190e43813..6d17d3cbd1df 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> @@ -305,6 +305,8 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)
> int ret;
> u32 val;
>
> + panfrost_gpu_init_quirks(pfdev);
> +
> /* Just turn on everything for now */
> gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present);
> ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
> @@ -356,7 +358,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
> return err;
> }
>
> - panfrost_gpu_init_quirks(pfdev);
> panfrost_gpu_power_on(pfdev);
>
> return 0;
> --
> 2.20.1
>


Attachments:
(No filename) (857.00 B)
signature.asc (849.00 B)
Download all attachments

2020-09-10 21:37:17

by Steven Price

[permalink] [raw]
Subject: Re: [PATCH] drm/panfrost: Ensure GPU quirks are always initialised

On 09/09/2020 13:29, Steven Price wrote:
> The GPU 'CONFIG' registers used to work around hardware issues are
> cleared on reset so need to be programmed every time the GPU is reset.
> However panfrost_device_reset() failed to do this.
>
> To avoid this in future instead move the call to
> panfrost_gpu_init_quirks() to panfrost_gpu_power_on() so that the
> regsiters are always programmed just before the cores are powered.
>
> Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
> Signed-off-by: Steven Price <[email protected]>

Applied to drm-misc-next

Steve