[PATCH 2/2] [RFC] drm/i915: Unbind the vma in suspend if it was bound

Srinivas, Vidya vidya.srinivas at intel.com
Tue Nov 26 10:12:55 UTC 2024



> -----Original Message-----
> From: Srinivas, Vidya
> Sent: 25 November 2024 17:01
> To: Brian Geffon <bgeffon at google.com>
> Cc: intel-gfx at lists.freedesktop.org; Syrjala, Ville <ville.syrjala at intel.com>;
> ville.syrjala at linux.intel.com; Lee, Shawn C <shawn.c.lee at intel.com>
> Subject: RE: [PATCH 2/2] [RFC] drm/i915: Unbind the vma in suspend if it was
> bound
> 
> 
> 
> > -----Original Message-----
> > From: Brian Geffon <bgeffon at google.com>
> > Sent: 25 November 2024 16:54
> > To: Srinivas, Vidya <vidya.srinivas at intel.com>
> > Cc: intel-gfx at lists.freedesktop.org; Syrjala, Ville
> > <ville.syrjala at intel.com>; ville.syrjala at linux.intel.com; Lee, Shawn C
> > <shawn.c.lee at intel.com>
> > Subject: Re: [PATCH 2/2] [RFC] drm/i915: Unbind the vma in suspend if
> > it was bound
> >
> > On Mon, Nov 25, 2024 at 3:51 PM Vidya Srinivas
> > <vidya.srinivas at intel.com>
> > wrote:
> > >
> > > In i915_ggtt_suspend_vm, if the vma was bound, the path to
> > > unbind/evict is not hitting during suspend. This is causing issues
> > > with DPT where DPT gets shrunk but the framebuffer is still on the
> > > DPT's bound list. This causes system reboot in some scenarios of
> > > suspend/resume where it tries to rewrite the PTEs via a stale mapping.
> > >
> > > Signed-off-by: Vidya Srinivas <vidya.srinivas at intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/gt/intel_ggtt.c | 8 +++-----
> > >  1 file changed, 3 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> > > b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> > > index d60a6ca0cae5..8499aa12a787 100644
> > > --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> > > +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> > > @@ -157,13 +157,11 @@ void i915_ggtt_suspend_vm(struct
> > i915_address_space *vm)
> > >                         goto retry;
> > >                 }
> > >
> > > -               if (!i915_vma_is_bound(vma, I915_VMA_GLOBAL_BIND)) {
> > > +               if (!i915_vma_is_bound(vma, I915_VMA_GLOBAL_BIND))
> > >                         i915_vma_wait_for_bind(vma);
> > >
> > > -                       __i915_vma_evict(vma, false);
> > > -                       drm_mm_remove_node(&vma->node);
> > > -               }
> > > -
> > > +               __i915_vma_evict(vma, false);
> > > +               drm_mm_remove_node(&vma->node);
> > >                 i915_gem_object_unlock(obj);
> > >         }
> >
> > I think all you need is in the else path of if
> > (!i915_vma_is_bound(vma,
> > I915_VMA_GLOBAL_BIND)) is a call to
> > __i915_vma_unbind(vma)
> 
> 
> Hello Brian, thank you so much. Will submit v2 version with review comments
> addressed.
> 
> >
> > But we need Ville to confirm this makes sense?
> Yes, need Ville to see if this might be the real cause of DPT issue.
> Thank you.
> 
Hello Ville - sorry to bother you again, can you kindly help check this patch and see if
this might be the cause of DPT failures? Thank you so much.

> Regards
> Vidya
> 
> >
> > >
> > > --
> > > 2.34.1
> > >


More information about the Intel-gfx mailing list