2020-06-11 09:02:11

by Tomeu Vizoso

[permalink] [raw]
Subject: [PATCH 1/2] panfrost: Make sure GPU is powered on when reading GPU_LATEST_FLUSH_ID

Bifrost devices do support the flush reduction feature, so on first job
submit we were trying to read the register while still powered off.

If the GPU is powered off, the feature doesn't bring any benefit, so
don't try to read.

Signed-off-by: Tomeu Vizoso <[email protected]>
---
drivers/gpu/drm/panfrost/panfrost_gpu.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
index f2c1ddc41a9b..e0f190e43813 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
@@ -10,6 +10,7 @@
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>

#include "panfrost_device.h"
#include "panfrost_features.h"
@@ -368,7 +369,16 @@ void panfrost_gpu_fini(struct panfrost_device *pfdev)

u32 panfrost_gpu_get_latest_flush_id(struct panfrost_device *pfdev)
{
- if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION))
- return gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
+ u32 flush_id;
+
+ if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) {
+ /* Flush reduction only makes sense when the GPU is kept powered on between jobs */
+ if (pm_runtime_get_if_in_use(pfdev->dev)) {
+ flush_id = gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
+ pm_runtime_put(pfdev->dev);
+ return flush_id;
+ }
+ }
+
return 0;
}
--
2.21.0


2020-06-11 09:04:49

by Tomeu Vizoso

[permalink] [raw]
Subject: [PATCH 2/2] panfrost: Add compatible string for bifrost

Mesa now supports some Bifrost devices, so enable it.

Signed-off-by: Tomeu Vizoso <[email protected]>
---
drivers/gpu/drm/panfrost/panfrost_drv.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 882fecc33fdb..8ff8e140f91e 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -677,6 +677,7 @@ static const struct of_device_id dt_match[] = {
{ .compatible = "arm,mali-t830", .data = &default_data, },
{ .compatible = "arm,mali-t860", .data = &default_data, },
{ .compatible = "arm,mali-t880", .data = &default_data, },
+ { .compatible = "arm,mali-bifrost", .data = &default_data, },
{}
};
MODULE_DEVICE_TABLE(of, dt_match);
--
2.21.0

2020-06-11 09:09:48

by Heiko Stübner

[permalink] [raw]
Subject: Re: [PATCH 1/2] panfrost: Make sure GPU is powered on when reading GPU_LATEST_FLUSH_ID

Am Donnerstag, 11. Juni 2020, 10:58:43 CEST schrieb Tomeu Vizoso:
> Bifrost devices do support the flush reduction feature, so on first job
> submit we were trying to read the register while still powered off.
>
> If the GPU is powered off, the feature doesn't bring any benefit, so
> don't try to read.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>

on a PX30-board (sibling of rk3326) with a 720x1280 panel and
glmark2 running all tests

Tested-by: Heiko Stuebner <[email protected]>


2020-06-11 09:10:06

by Heiko Stübner

[permalink] [raw]
Subject: Re: [PATCH 2/2] panfrost: Add compatible string for bifrost

Am Donnerstag, 11. Juni 2020, 10:58:44 CEST schrieb Tomeu Vizoso:
> Mesa now supports some Bifrost devices, so enable it.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>
> ---
> drivers/gpu/drm/panfrost/panfrost_drv.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 882fecc33fdb..8ff8e140f91e 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -677,6 +677,7 @@ static const struct of_device_id dt_match[] = {
> { .compatible = "arm,mali-t830", .data = &default_data, },
> { .compatible = "arm,mali-t860", .data = &default_data, },
> { .compatible = "arm,mali-t880", .data = &default_data, },
> + { .compatible = "arm,mali-bifrost", .data = &default_data, },
> {}
> };
> MODULE_DEVICE_TABLE(of, dt_match);

on a PX30-board (sibling of rk3326) with a 720x1280 panel and
glmark2 running all tests

Tested-by: Heiko Stuebner <[email protected]>

and as this is the generic compatible from the binding:

Reviewed-by: Heiko Stuebner <[email protected]>


2020-06-11 14:14:19

by Alyssa Rosenzweig

[permalink] [raw]
Subject: Re: [PATCH 1/2] panfrost: Make sure GPU is powered on when reading GPU_LATEST_FLUSH_ID

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

On Thu, Jun 11, 2020 at 10:58:43AM +0200, Tomeu Vizoso wrote:
> Bifrost devices do support the flush reduction feature, so on first job
> submit we were trying to read the register while still powered off.
>
> If the GPU is powered off, the feature doesn't bring any benefit, so
> don't try to read.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>
> ---
> drivers/gpu/drm/panfrost/panfrost_gpu.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> index f2c1ddc41a9b..e0f190e43813 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> @@ -10,6 +10,7 @@
> #include <linux/io.h>
> #include <linux/iopoll.h>
> #include <linux/platform_device.h>
> +#include <linux/pm_runtime.h>
>
> #include "panfrost_device.h"
> #include "panfrost_features.h"
> @@ -368,7 +369,16 @@ void panfrost_gpu_fini(struct panfrost_device *pfdev)
>
> u32 panfrost_gpu_get_latest_flush_id(struct panfrost_device *pfdev)
> {
> - if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION))
> - return gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
> + u32 flush_id;
> +
> + if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) {
> + /* Flush reduction only makes sense when the GPU is kept powered on between jobs */
> + if (pm_runtime_get_if_in_use(pfdev->dev)) {
> + flush_id = gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
> + pm_runtime_put(pfdev->dev);
> + return flush_id;
> + }
> + }
> +
> return 0;
> }
> --
> 2.21.0
>


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

2020-06-19 09:11:14

by Steven Price

[permalink] [raw]
Subject: Re: [PATCH 1/2] panfrost: Make sure GPU is powered on when reading GPU_LATEST_FLUSH_ID

On 11/06/2020 09:58, Tomeu Vizoso wrote:
> Bifrost devices do support the flush reduction feature, so on first job
> submit we were trying to read the register while still powered off.
>
> If the GPU is powered off, the feature doesn't bring any benefit, so
> don't try to read.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>

Reviewed-by: Steven Price <[email protected]>

> ---
> drivers/gpu/drm/panfrost/panfrost_gpu.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> index f2c1ddc41a9b..e0f190e43813 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> @@ -10,6 +10,7 @@
> #include <linux/io.h>
> #include <linux/iopoll.h>
> #include <linux/platform_device.h>
> +#include <linux/pm_runtime.h>
>
> #include "panfrost_device.h"
> #include "panfrost_features.h"
> @@ -368,7 +369,16 @@ void panfrost_gpu_fini(struct panfrost_device *pfdev)
>
> u32 panfrost_gpu_get_latest_flush_id(struct panfrost_device *pfdev)
> {
> - if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION))
> - return gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
> + u32 flush_id;
> +
> + if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) {
> + /* Flush reduction only makes sense when the GPU is kept powered on between jobs */
> + if (pm_runtime_get_if_in_use(pfdev->dev)) {
> + flush_id = gpu_read(pfdev, GPU_LATEST_FLUSH_ID);
> + pm_runtime_put(pfdev->dev);
> + return flush_id;
> + }
> + }
> +
> return 0;
> }
>

2020-06-19 17:15:30

by Steven Price

[permalink] [raw]
Subject: Re: [PATCH 2/2] panfrost: Add compatible string for bifrost

On 11/06/2020 09:58, Tomeu Vizoso wrote:
> Mesa now supports some Bifrost devices, so enable it.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>

Reviewed-by: Steven Price <[email protected]>

I've also dug out my Hikey960 (from the box it's been in since lock down
started), so I'll see if I can get things running on there, at the
moment I'm seeing some DATA_INVALID_FAULT regressions running my hacked
DDK :(

Steve

> ---
> drivers/gpu/drm/panfrost/panfrost_drv.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 882fecc33fdb..8ff8e140f91e 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -677,6 +677,7 @@ static const struct of_device_id dt_match[] = {
> { .compatible = "arm,mali-t830", .data = &default_data, },
> { .compatible = "arm,mali-t860", .data = &default_data, },
> { .compatible = "arm,mali-t880", .data = &default_data, },
> + { .compatible = "arm,mali-bifrost", .data = &default_data, },
> {}
> };
> MODULE_DEVICE_TABLE(of, dt_match);
>

2020-08-07 19:49:03

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH 1/2] panfrost: Make sure GPU is powered on when reading GPU_LATEST_FLUSH_ID

On Thu, Jun 11, 2020 at 2:59 AM Tomeu Vizoso <[email protected]> wrote:
>
> Bifrost devices do support the flush reduction feature, so on first job
> submit we were trying to read the register while still powered off.
>
> If the GPU is powered off, the feature doesn't bring any benefit, so
> don't try to read.
>
> Signed-off-by: Tomeu Vizoso <[email protected]>
> ---
> drivers/gpu/drm/panfrost/panfrost_gpu.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)

Both patches applied.

2020-10-05 06:46:13

by Tomeu Vizoso

[permalink] [raw]
Subject: Re: [PATCH 2/2] panfrost: Add compatible string for bifrost

On Fri, 19 Jun 2020 at 11:00, Steven Price <[email protected]> wrote:
>
> On 11/06/2020 09:58, Tomeu Vizoso wrote:
> > Mesa now supports some Bifrost devices, so enable it.
> >
> > Signed-off-by: Tomeu Vizoso <[email protected]>
>
> Reviewed-by: Steven Price <[email protected]>
>
> I've also dug out my Hikey960 (from the box it's been in since lock down
> started), so I'll see if I can get things running on there, at the
> moment I'm seeing some DATA_INVALID_FAULT regressions running my hacked
> DDK :(

Hi!

Has this one fallen through the cracks?

Thanks,

Tomeu

>
> Steve
>
> > ---
> > drivers/gpu/drm/panfrost/panfrost_drv.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > index 882fecc33fdb..8ff8e140f91e 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > @@ -677,6 +677,7 @@ static const struct of_device_id dt_match[] = {
> > { .compatible = "arm,mali-t830", .data = &default_data, },
> > { .compatible = "arm,mali-t860", .data = &default_data, },
> > { .compatible = "arm,mali-t880", .data = &default_data, },
> > + { .compatible = "arm,mali-bifrost", .data = &default_data, },
> > {}
> > };
> > MODULE_DEVICE_TABLE(of, dt_match);
> >
>
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

2020-10-05 07:10:48

by Tomeu Vizoso

[permalink] [raw]
Subject: Re: [PATCH 2/2] panfrost: Add compatible string for bifrost

On Mon, 5 Oct 2020 at 08:44, Tomeu Vizoso <[email protected]> wrote:
>
> On Fri, 19 Jun 2020 at 11:00, Steven Price <[email protected]> wrote:
> >
> > On 11/06/2020 09:58, Tomeu Vizoso wrote:
> > > Mesa now supports some Bifrost devices, so enable it.
> > >
> > > Signed-off-by: Tomeu Vizoso <[email protected]>
> >
> > Reviewed-by: Steven Price <[email protected]>
> >
> > I've also dug out my Hikey960 (from the box it's been in since lock down
> > started), so I'll see if I can get things running on there, at the
> > moment I'm seeing some DATA_INVALID_FAULT regressions running my hacked
> > DDK :(
>
> Hi!
>
> Has this one fallen through the cracks?

Oops, sorry about the noise, I had an old checkout.

Cheers,

Tomeu

> Thanks,
>
> Tomeu
>
> >
> > Steve
> >
> > > ---
> > > drivers/gpu/drm/panfrost/panfrost_drv.c | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > > index 882fecc33fdb..8ff8e140f91e 100644
> > > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> > > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> > > @@ -677,6 +677,7 @@ static const struct of_device_id dt_match[] = {
> > > { .compatible = "arm,mali-t830", .data = &default_data, },
> > > { .compatible = "arm,mali-t860", .data = &default_data, },
> > > { .compatible = "arm,mali-t880", .data = &default_data, },
> > > + { .compatible = "arm,mali-bifrost", .data = &default_data, },
> > > {}
> > > };
> > > MODULE_DEVICE_TABLE(of, dt_match);
> > >
> >
> > _______________________________________________
> > dri-devel mailing list
> > [email protected]
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel