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

Commit 01d928e9 authored by Lionel Landwerlin's avatar Lionel Landwerlin
Browse files

drm/i915/perf: fix flex eu registers programming



We were reserving fewer dwords in the ring than necessary. Indeed
we're always writing all registers once, so discard the actual number
of registers given by the user and just program the whitelisted ones
once.

Fixes: 19f81df2 ("drm/i915/perf: Add OA unit support for Gen 8+")
Reported-by: default avatarMatthew Auld <matthew.william.auld@gmail.com>
Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Cc: <stable@vger.kernel.org> # v4.12+
Link: https://patchwork.freedesktop.org/patch/msgid/20170803165812.2373-6-lionel.g.landwerlin@intel.com
parent 59f3da1e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1601,11 +1601,11 @@ static int gen8_emit_oa_config(struct drm_i915_gem_request *req)
	u32 *cs;
	int i;

	cs = intel_ring_begin(req, n_flex_regs * 2 + 4);
	cs = intel_ring_begin(req, ARRAY_SIZE(flex_mmio) * 2 + 4);
	if (IS_ERR(cs))
		return PTR_ERR(cs);

	*cs++ = MI_LOAD_REGISTER_IMM(n_flex_regs + 1);
	*cs++ = MI_LOAD_REGISTER_IMM(ARRAY_SIZE(flex_mmio) + 1);

	*cs++ = i915_mmio_reg_offset(GEN8_OACTXCONTROL);
	*cs++ = (dev_priv->perf.oa.period_exponent << GEN8_OA_TIMER_PERIOD_SHIFT) |