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

Zhenyu Wang zhenyuw at linux.intel.com
Tue Feb 25 07:35:44 UTC 2020


On 2/25/2020 1:35 PM, Tina Zhang wrote:
> 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: 12d5861973c70 ("drm/i915/gvt: Make WARN* drm specific where vgpu ptr is available")
> Signed-off-by: Tina Zhang <tina.zhang at intel.com>
> ---
>   drivers/gpu/drm/i915/gvt/mmio_context.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/mmio_context.c b/drivers/gpu/drm/i915/gvt/mmio_context.c
> index 46c291e4926b..1213c8e23317 100644
> --- a/drivers/gpu/drm/i915/gvt/mmio_context.c
> +++ b/drivers/gpu/drm/i915/gvt/mmio_context.c
> @@ -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,
>   			int ring_id)
>   {
> -	struct drm_i915_private *i915 = pre->gvt->dev_priv;
>   	struct drm_i915_private *dev_priv;
>   	i915_reg_t offset, l3_offset;
>   	u32 old_v, new_v;
> @@ -407,7 +406,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
>   	int i;
>   
>   	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;
>   
>   	if (ring_id == RCS0 && IS_GEN(dev_priv, 9))
> @@ -552,10 +551,9 @@ static void switch_mmio(struct intel_vgpu *pre,
>   void intel_gvt_switch_mmio(struct intel_vgpu *pre,
>   			   struct intel_vgpu *next, int ring_id)
>   {
> -	struct drm_i915_private *i915 = pre->gvt->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;
>   
>   	gvt_dbg_render("switch ring %d from %s to %s\n", ring_id,

Thanks for catching this quickly!

Reviewed-by: Zhenyu Wang <zhenyuw at linux.intel.com>




More information about the intel-gvt-dev mailing list