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

Commit cb8ba171 authored by Zhao Yan's avatar Zhao Yan Committed by Zhi Wang
Browse files

drm/i915/gvt: let force_to_nonpriv cmd handler only valid for LRI cmd



the cmd_reg_handler() is called by cmds LRM, PIPE_CTRL, SRM...
for LRM, SRM, we cannot get write data in a simple way.
On other side,  the force_to_nonpriv reigsters will only be written in LRI
in current drivers. so we don't want to bother the handler to handle those
memory access cmds, just leave a print message here.

Signed-off-by: default avatarZhao Yan <yan.y.zhao@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent 0438a105
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -813,14 +813,22 @@ static inline bool is_force_nonpriv_mmio(unsigned int offset)
}

static int force_nonpriv_reg_handler(struct parser_exec_state *s,
				     unsigned int offset, unsigned int index)
		unsigned int offset, unsigned int index, char *cmd)
{
	struct intel_gvt *gvt = s->vgpu->gvt;
	unsigned int data = cmd_val(s, index + 1);
	unsigned int data;
	u32 ring_base;
	u32 nopid;
	struct drm_i915_private *dev_priv = s->vgpu->gvt->dev_priv;

	if (!strcmp(cmd, "lri"))
		data = cmd_val(s, index + 1);
	else {
		gvt_err("Unexpected forcenonpriv 0x%x write from cmd %s\n",
			offset, cmd);
		return -EINVAL;
	}

	ring_base = dev_priv->engine[s->ring_id]->mmio_base;
	nopid = i915_mmio_reg_offset(RING_NOPID(ring_base));

@@ -877,7 +885,7 @@ static int cmd_reg_handler(struct parser_exec_state *s,
		return -EINVAL;

	if (is_force_nonpriv_mmio(offset) &&
		force_nonpriv_reg_handler(s, offset, index))
		force_nonpriv_reg_handler(s, offset, index, cmd))
		return -EPERM;

	if (offset == i915_mmio_reg_offset(DERRMR) ||