From 33618ea5e0e2ccd00331fa169145894b9c5dcffe Mon Sep 17 00:00:00 2001 From: Ben Widawsky Date: Thu, 12 Sep 2013 22:28:29 -0700 Subject: [PATCH] drm/i915: Fix l3 parity user buffer offset MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The buf pointer used during l3_write is just char *, therefore it does not require the silly any addition of offset. v2: Also fix i915_l3_read with a suggested logic from Ville Cc: Ville Syrjälä Signed-off-by: Ben Widawsky Reviewed-by: Ville Syrjälä Signed-off-by: Daniel Vetter --- drivers/gpu/drm/i915/i915_sysfs.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c index 9070f50..d572435 100644 --- a/drivers/gpu/drm/i915/i915_sysfs.c +++ b/drivers/gpu/drm/i915/i915_sysfs.c @@ -127,6 +127,8 @@ i915_l3_read(struct file *filp, struct kobject *kobj, if (ret) return ret; + count = min_t(int, GEN7_L3LOG_SIZE-offset, count); + ret = i915_mutex_lock_interruptible(drm_dev); if (ret) return ret; @@ -134,14 +136,14 @@ i915_l3_read(struct file *filp, struct kobject *kobj, misccpctl = I915_READ(GEN7_MISCCPCTL); I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); - for (i = offset; count >= 4 && i < GEN7_L3LOG_SIZE; i += 4, count -= 4) - *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + i); + for (i = 0; i < count; i += 4) + *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + offset + i); I915_WRITE(GEN7_MISCCPCTL, misccpctl); mutex_unlock(&drm_dev->struct_mutex); - return i - offset; + return i; } static ssize_t @@ -186,9 +188,7 @@ i915_l3_write(struct file *filp, struct kobject *kobj, if (temp) dev_priv->l3_parity.remap_info = temp; - memcpy(dev_priv->l3_parity.remap_info + (offset/4), - buf + (offset/4), - count); + memcpy(dev_priv->l3_parity.remap_info + (offset/4), buf, count); i915_gem_l3_remap(drm_dev); -- 2.7.4