summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2013-09-17 21:12:42 -0700
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-09-19 20:36:35 +0200
commit1c966dd26b2e46a9d089fcb7e36f649000670e64 (patch)
treec0bd82cdae2f168b0d186a31dc030c2ea745efd1
parent644db711d3af6f7b91ce4b7e1a056a84bf34d349 (diff)
downloadlinux-1c966dd26b2e46a9d089fcb7e36f649000670e64.tar.gz
linux-1c966dd26b2e46a9d089fcb7e36f649000670e64.tar.bz2
linux-1c966dd26b2e46a9d089fcb7e36f649000670e64.zip
drm/i915: Fix HSW parity test
Haswell changed the log registers to be WO, so we can no longer read them to determine the programming (which sucks, see later note). For now, simply use the cached value, and hope HW doesn't screw us over. v2: Simplify the logic to avoid an extra !, remove last, and fix the buffer offset which broke along the rebase (Ville) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57441 CC: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_sysfs.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index d572435cfbe7..71f6de24444e 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -133,6 +133,17 @@ i915_l3_read(struct file *filp, struct kobject *kobj,
if (ret)
return ret;
+ if (IS_HASWELL(drm_dev)) {
+ if (dev_priv->l3_parity.remap_info)
+ memcpy(buf,
+ dev_priv->l3_parity.remap_info + (offset/4),
+ count);
+ else
+ memset(buf, 0, count);
+
+ goto out;
+ }
+
misccpctl = I915_READ(GEN7_MISCCPCTL);
I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
@@ -141,9 +152,10 @@ i915_l3_read(struct file *filp, struct kobject *kobj,
I915_WRITE(GEN7_MISCCPCTL, misccpctl);
+out:
mutex_unlock(&drm_dev->struct_mutex);
- return i;
+ return count;
}
static ssize_t