[Intel-gfx] [PATCH v2] drm/i915: to make vgpu ppgtt notificaiton as atomic operation
Chris Wilson
chris at chris-wilson.co.uk
Fri Aug 23 07:58:36 UTC 2019
Quoting Xiaolin Zhang (2019-08-23 07:57:31)
> vgpu ppgtt notification was split into 2 steps, the first step is to
> update PVINFO's pdp register and then write PVINFO's g2v_notify register
> with action code to tirgger ppgtt notification to GVT side.
>
> currently these steps were not atomic operations due to no any protection,
> so it is easy to enter race condition state during the MTBF, stress and
> IGT test to cause GPU hang.
>
> the solution is to add a lock to make vgpu ppgtt notication as atomic
> operation.
>
> Cc: stable at vger.kernel.org
> Signed-off-by: Xiaolin Zhang <xiaolin.zhang at intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> drivers/gpu/drm/i915/i915_gem_gtt.c | 4 ++++
> drivers/gpu/drm/i915/i915_vgpu.c | 1 +
> 3 files changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index eb31c16..32e17c4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -961,6 +961,7 @@ struct i915_frontbuffer_tracking {
> };
>
> struct i915_virtual_gpu {
> + struct mutex lock;
> bool active;
> u32 caps;
> };
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 2cd2dab..ff0b178 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -833,6 +833,8 @@ static int gen8_ppgtt_notify_vgt(struct i915_ppgtt *ppgtt, bool create)
> enum vgt_g2v_type msg;
> int i;
>
> + mutex_lock(&dev_priv->vgpu.lock);
> +
> if (create)
> atomic_inc(px_used(ppgtt->pd)); /* never remove */
> else
> @@ -860,6 +862,8 @@ static int gen8_ppgtt_notify_vgt(struct i915_ppgtt *ppgtt, bool create)
>
> I915_WRITE(vgtif_reg(g2v_notify), msg);
>
How do you know the operation is complete and it is now safe to
overwrite the data regs?
-Chris
More information about the Intel-gfx
mailing list