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

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
...@@ -813,14 +813,22 @@ static inline bool is_force_nonpriv_mmio(unsigned int offset) ...@@ -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, 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; struct intel_gvt *gvt = s->vgpu->gvt;
unsigned int data = cmd_val(s, index + 1); unsigned int data;
u32 ring_base; u32 ring_base;
u32 nopid; u32 nopid;
struct drm_i915_private *dev_priv = s->vgpu->gvt->dev_priv; 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; ring_base = dev_priv->engine[s->ring_id]->mmio_base;
nopid = i915_mmio_reg_offset(RING_NOPID(ring_base)); nopid = i915_mmio_reg_offset(RING_NOPID(ring_base));
...@@ -877,7 +885,7 @@ static int cmd_reg_handler(struct parser_exec_state *s, ...@@ -877,7 +885,7 @@ static int cmd_reg_handler(struct parser_exec_state *s,
return -EINVAL; return -EINVAL;
if (is_force_nonpriv_mmio(offset) && if (is_force_nonpriv_mmio(offset) &&
force_nonpriv_reg_handler(s, offset, index)) force_nonpriv_reg_handler(s, offset, index, cmd))
return -EPERM; return -EPERM;
if (offset == i915_mmio_reg_offset(DERRMR) || if (offset == i915_mmio_reg_offset(DERRMR) ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment