Commit a8bb49b6 authored by Tina Zhang's avatar Tina Zhang Committed by Zhenyu Wang

drm/i915/gvt: Fix drm_WARN issue where vgpu ptr is unavailable

When vgpu ptr is unavailable, the drm_WARN* can hang the whole system
due to the drm pointer is NULL. This patch fixes this issue by using
WARN directly which won't care about the drm pointer.

Fixes: 12d58619 ("drm/i915/gvt: Make WARN* drm specific where vgpu ptr is available")
Signed-off-by: default avatarTina Zhang <tina.zhang@intel.com>
Reviewed-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20200225053527.8336-1-tina.zhang@intel.com
parent 12d58619
...@@ -392,7 +392,6 @@ static void handle_tlb_pending_event(struct intel_vgpu *vgpu, int ring_id) ...@@ -392,7 +392,6 @@ static void handle_tlb_pending_event(struct intel_vgpu *vgpu, int ring_id)
static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next, static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
int ring_id) int ring_id)
{ {
struct drm_i915_private *i915 = pre->gvt->dev_priv;
struct drm_i915_private *dev_priv; struct drm_i915_private *dev_priv;
i915_reg_t offset, l3_offset; i915_reg_t offset, l3_offset;
u32 old_v, new_v; u32 old_v, new_v;
...@@ -407,7 +406,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next, ...@@ -407,7 +406,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
int i; int i;
dev_priv = pre ? pre->gvt->dev_priv : next->gvt->dev_priv; dev_priv = pre ? pre->gvt->dev_priv : next->gvt->dev_priv;
if (drm_WARN_ON(&i915->drm, ring_id >= ARRAY_SIZE(regs))) if (drm_WARN_ON(&dev_priv->drm, ring_id >= ARRAY_SIZE(regs)))
return; return;
if (ring_id == RCS0 && IS_GEN(dev_priv, 9)) if (ring_id == RCS0 && IS_GEN(dev_priv, 9))
...@@ -552,10 +551,9 @@ static void switch_mmio(struct intel_vgpu *pre, ...@@ -552,10 +551,9 @@ static void switch_mmio(struct intel_vgpu *pre,
void intel_gvt_switch_mmio(struct intel_vgpu *pre, void intel_gvt_switch_mmio(struct intel_vgpu *pre,
struct intel_vgpu *next, int ring_id) struct intel_vgpu *next, int ring_id)
{ {
struct drm_i915_private *i915 = pre->gvt->dev_priv;
struct drm_i915_private *dev_priv; struct drm_i915_private *dev_priv;
if (drm_WARN_ON(&i915->drm, !pre && !next)) if (WARN(!pre && !next, "switch ring %d from host to HOST\n", ring_id))
return; return;
gvt_dbg_render("switch ring %d from %s to %s\n", ring_id, gvt_dbg_render("switch ring %d from %s to %s\n", ring_id,
......
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