Jiri Slaby 9cb590
From: "sagar.a.kamble@intel.com" <sagar.a.kamble@intel.com>
Jiri Slaby 9cb590
Date: Tue, 27 Jun 2017 23:09:41 +0530
Jiri Slaby 9cb590
Subject: [PATCH] drm/i915: Hold RPM wakelock while initializing OA buffer
Jiri Slaby 9cb590
References: bnc#1060662
Thomas Zimmermann 1d81d2
Patch-mainline: v4.12.4
Jiri Slaby 9cb590
Git-commit: 04941829b0049d2446c7042ab9686dd057d809a6
Jiri Slaby 9cb590
Git-commit: 987f8c444aa2c33d98e7030d0c5f0a5325cc84ea
Jiri Slaby 9cb590
Jiri Slaby 9cb590
commit 04941829b0049d2446c7042ab9686dd057d809a6 upstream.
Jiri Slaby 9cb590
Jiri Slaby 9cb590
OA buffer initialization involves access to HW registers to set
Jiri Slaby 9cb590
the OA base, head and tail. Ensure device is awake while setting
Jiri Slaby 9cb590
these. With this, all oa.ops are covered under RPM and forcewake
Jiri Slaby 9cb590
wakelock.
Jiri Slaby 9cb590
Jiri Slaby 9cb590
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Jiri Slaby 9cb590
Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Jiri Slaby 9cb590
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Jiri Slaby 9cb590
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Jiri Slaby 9cb590
Link: http://patchwork.freedesktop.org/patch/msgid/1498585181-23048-1-git-send-email-sagar.a.kamble@intel.com
Jiri Slaby 9cb590
Fixes: d79651522e89c ("drm/i915: Enable i915 perf stream for Haswell OA unit")
Jiri Slaby 9cb590
(cherry picked from commit 987f8c444aa2c33d98e7030d0c5f0a5325cc84ea)
Jiri Slaby 9cb590
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Jiri Slaby 9cb590
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Jiri Slaby 9cb590
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby 9cb590
---
Jiri Slaby 9cb590
 drivers/gpu/drm/i915/i915_perf.c | 12 ++++++------
Jiri Slaby 9cb590
 1 file changed, 6 insertions(+), 6 deletions(-)
Jiri Slaby 9cb590
Jiri Slaby 9cb590
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
Jiri Slaby 9cb590
index 060b171480d5..aac84dda532c 100644
Jiri Slaby 9cb590
--- a/drivers/gpu/drm/i915/i915_perf.c
Jiri Slaby 9cb590
+++ b/drivers/gpu/drm/i915/i915_perf.c
Jiri Slaby 9cb590
@@ -1210,10 +1210,6 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
Jiri Slaby 9cb590
 			return ret;
Jiri Slaby 9cb590
 	}
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
-	ret = alloc_oa_buffer(dev_priv);
Jiri Slaby 9cb590
-	if (ret)
Jiri Slaby 9cb590
-		goto err_oa_buf_alloc;
Jiri Slaby 9cb590
-
Jiri Slaby 9cb590
 	/* PRM - observability performance counters:
Jiri Slaby 9cb590
 	 *
Jiri Slaby 9cb590
 	 *   OACONTROL, performance counter enable, note:
Jiri Slaby 9cb590
@@ -1229,6 +1225,10 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
Jiri Slaby 9cb590
 	intel_runtime_pm_get(dev_priv);
Jiri Slaby 9cb590
 	intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
+	ret = alloc_oa_buffer(dev_priv);
Jiri Slaby 9cb590
+	if (ret)
Jiri Slaby 9cb590
+		goto err_oa_buf_alloc;
Jiri Slaby 9cb590
+
Jiri Slaby 9cb590
 	ret = dev_priv->perf.oa.ops.enable_metric_set(dev_priv);
Jiri Slaby 9cb590
 	if (ret)
Jiri Slaby 9cb590
 		goto err_enable;
Jiri Slaby 9cb590
@@ -1240,11 +1240,11 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
Jiri Slaby 9cb590
 	return 0;
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
 err_enable:
Jiri Slaby 9cb590
-	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
Jiri Slaby 9cb590
-	intel_runtime_pm_put(dev_priv);
Jiri Slaby 9cb590
 	free_oa_buffer(dev_priv);
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
 err_oa_buf_alloc:
Jiri Slaby 9cb590
+	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
Jiri Slaby 9cb590
+	intel_runtime_pm_put(dev_priv);
Jiri Slaby 9cb590
 	if (stream->ctx)
Jiri Slaby 9cb590
 		oa_put_render_ctx_id(stream);
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
-- 
Jiri Slaby 9cb590
2.14.2
Jiri Slaby 9cb590