Commit 3a74265c authored by Tomeu Vizoso's avatar Tomeu Vizoso Committed by Rob Herring

drm/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.
Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
Reviewed-by: default avatarSteven Price <steven.price@arm.com>
Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200611085900.49740-1-tomeu.vizoso@collabora.com
parent 77f47d23
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/iopoll.h> #include <linux/iopoll.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include "panfrost_device.h" #include "panfrost_device.h"
#include "panfrost_features.h" #include "panfrost_features.h"
...@@ -368,7 +369,16 @@ void panfrost_gpu_fini(struct panfrost_device *pfdev) ...@@ -368,7 +369,16 @@ void panfrost_gpu_fini(struct panfrost_device *pfdev)
u32 panfrost_gpu_get_latest_flush_id(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)) u32 flush_id;
return gpu_read(pfdev, GPU_LATEST_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; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment