aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-05-11 09:52:07 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2018-05-11 12:17:46 -0400
commite896d29a548d04371ce746f7d02a8488ff93d812 (patch)
tree010f34f1b4a7c421da576eb6d0caa450e5b9dd87
parente71a82d8c1fa28ab048227df929e4f07d98f1656 (diff)
drm/i915/oa: Check that OA is disabled before unpinning
Before we unpin the buffer used for OA reports and return it to the system, we need to be sure that the HW has finished writing into it. For lack of a better idea, poll OACONTROL to check it is switched off. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106379 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Tested-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180511135207.12880-1-chris@chris-wilson.co.uk
-rw-r--r--drivers/gpu/drm/i915/i915_perf.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index d9341415df40..019bd2d073ad 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1960,11 +1960,19 @@ static void i915_oa_stream_enable(struct i915_perf_stream *stream)
1960static void gen7_oa_disable(struct drm_i915_private *dev_priv) 1960static void gen7_oa_disable(struct drm_i915_private *dev_priv)
1961{ 1961{
1962 I915_WRITE(GEN7_OACONTROL, 0); 1962 I915_WRITE(GEN7_OACONTROL, 0);
1963 if (intel_wait_for_register(dev_priv,
1964 GEN7_OACONTROL, GEN7_OACONTROL_ENABLE, 0,
1965 50))
1966 DRM_ERROR("wait for OA to be disabled timed out\n");
1963} 1967}
1964 1968
1965static void gen8_oa_disable(struct drm_i915_private *dev_priv) 1969static void gen8_oa_disable(struct drm_i915_private *dev_priv)
1966{ 1970{
1967 I915_WRITE(GEN8_OACONTROL, 0); 1971 I915_WRITE(GEN8_OACONTROL, 0);
1972 if (intel_wait_for_register(dev_priv,
1973 GEN8_OACONTROL, GEN8_OA_COUNTER_ENABLE, 0,
1974 50))
1975 DRM_ERROR("wait for OA to be disabled timed out\n");
1968} 1976}
1969 1977
1970/** 1978/**