Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33618ea5 authored by Ben Widawsky's avatar Ben Widawsky Committed by Daniel Vetter
Browse files

drm/i915: Fix l3 parity user buffer offset



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ä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 1c3dcd1c
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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);