1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-15 04:42:02 +00:00
openmptcprouter/root/target/linux/brcm2708/patches-4.19/0591-drm-v3d-Skip-MMU-flush-if-the-device-is-currently-of.patch
Ycarus (Yannick Chabanois) 5f08b288eb Add RPI4 beta support
2019-06-24 19:52:48 +02:00

57 lines
1.6 KiB
Diff

From 1b9ad8d7052a12794d34e49ec9e63e1693498256 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 14 Jan 2019 12:35:43 -0800
Subject: [PATCH 591/678] drm/v3d: Skip MMU flush if the device is currently
off.
If it's off, we know it will be reset on poweron, so the MMU won't
have any TLB cached from before this point. Avoids failed waits for
MMU flush to reply.
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 3ee4e2e0a9e9587eacbb69b067bbc72ab2cdc47b)
---
drivers/gpu/drm/v3d/v3d_mmu.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/gpu/drm/v3d/v3d_mmu.c b/drivers/gpu/drm/v3d/v3d_mmu.c
index b00f97c31b70..796eed177fd9 100644
--- a/drivers/gpu/drm/v3d/v3d_mmu.c
+++ b/drivers/gpu/drm/v3d/v3d_mmu.c
@@ -18,6 +18,8 @@
* each client. This is not yet implemented.
*/
+#include <linux/pm_runtime.h>
+
#include "v3d_drv.h"
#include "v3d_regs.h"
@@ -34,6 +36,14 @@ static int v3d_mmu_flush_all(struct v3d_dev *v3d)
{
int ret;
+ /* Keep power on the device on until we're done with this
+ * call, but skip the flush if the device is off and will be
+ * reset when powered back on.
+ */
+ ret = pm_runtime_get_if_in_use(v3d->dev);
+ if (ret == 0)
+ return 0;
+
/* Make sure that another flush isn't already running when we
* start this one.
*/
@@ -61,6 +71,9 @@ static int v3d_mmu_flush_all(struct v3d_dev *v3d)
if (ret)
dev_err(v3d->dev, "MMUC flush wait idle failed\n");
+ pm_runtime_mark_last_busy(v3d->dev);
+ pm_runtime_put_autosuspend(v3d->dev);
+
return ret;
}
--
2.19.1