diff mbox

[2/5] drm: Define a work struct for scheduling a uevent for modeset retry

Message ID 1477093543-11622-3-git-send-email-manasi.d.navare@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Navare, Manasi Oct. 21, 2016, 11:45 p.m. UTC
This work struct will be used to schedule a uevent on a separate
thread. This will be scheduled after a link train failure during modeset
to indicate a modeset retry request. It will get executed after the
current modeset is complete and all locks are released. This was
required to avoid deadlock.

Cc: dri-devel@lists.freedesktop.org
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>

Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
---
 include/drm/drm_connector.h | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Navare, Manasi Oct. 25, 2016, 6:28 a.m. UTC | #1
On Sat, Oct 22, 2016 at 10:48:13AM +0200, Daniel Vetter wrote:
> On Fri, Oct 21, 2016 at 04:45:40PM -0700, Manasi Navare wrote:
> > This work struct will be used to schedule a uevent on a separate
> > thread. This will be scheduled after a link train failure during modeset
> > to indicate a modeset retry request. It will get executed after the
> > current modeset is complete and all locks are released. This was
> > required to avoid deadlock.
> > 
> > Cc: dri-devel@lists.freedesktop.org
> > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > Cc: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
> > 
> > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> > ---
> >  include/drm/drm_connector.h | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> > index ac9d7d8..fcf6b97 100644
> > --- a/include/drm/drm_connector.h
> > +++ b/include/drm/drm_connector.h
> > @@ -682,6 +682,11 @@ struct drm_connector {
> >  	uint8_t num_h_tile, num_v_tile;
> >  	uint8_t tile_h_loc, tile_v_loc;
> >  	uint16_t tile_h_size, tile_v_size;
> > +
> > +	/* Work struct to schedule a uevent on link train failure for
> > +	 * DisplayPort.
> > +	 */
> > +	struct work_struct i915_modeset_retry_work;
> 
> You cannot put i915 stuff into core structs.
> -Daniel
> 
> >  };

I will rename it to use modeset_retry_work instead.

Manasi
> >  
> >  #define obj_to_connector(x) container_of(x, struct drm_connector, base)
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
Dhinakaran Pandiyan Oct. 25, 2016, 6:30 a.m. UTC | #2
On Mon, 2016-10-24 at 23:28 -0700, Manasi Navare wrote:
> On Sat, Oct 22, 2016 at 10:48:13AM +0200, Daniel Vetter wrote:

> > On Fri, Oct 21, 2016 at 04:45:40PM -0700, Manasi Navare wrote:

> > > This work struct will be used to schedule a uevent on a separate

> > > thread. This will be scheduled after a link train failure during modeset

> > > to indicate a modeset retry request. It will get executed after the

> > > current modeset is complete and all locks are released. This was

> > > required to avoid deadlock.

> > > 

> > > Cc: dri-devel@lists.freedesktop.org

> > > Cc: Jani Nikula <jani.nikula@linux.intel.com>

> > > Cc: Daniel Vetter <daniel.vetter@intel.com>

> > > Cc: Ville Syrjala <ville.syrjala@linux.intel.com>

> > > 

> > > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>

> > > ---

> > >  include/drm/drm_connector.h | 5 +++++

> > >  1 file changed, 5 insertions(+)

> > > 

> > > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h

> > > index ac9d7d8..fcf6b97 100644

> > > --- a/include/drm/drm_connector.h

> > > +++ b/include/drm/drm_connector.h

> > > @@ -682,6 +682,11 @@ struct drm_connector {

> > >  	uint8_t num_h_tile, num_v_tile;

> > >  	uint8_t tile_h_loc, tile_v_loc;

> > >  	uint16_t tile_h_size, tile_v_size;

> > > +

> > > +	/* Work struct to schedule a uevent on link train failure for

> > > +	 * DisplayPort.

> > > +	 */

> > > +	struct work_struct i915_modeset_retry_work;

> > 

> > You cannot put i915 stuff into core structs.

> > -Daniel

> > 

> > >  };

> 

> I will rename it to use modeset_retry_work instead.

> 

> Manasi



Why not move it struct intel_connector? The work function is defined in
intel_dp.c afaict

-DK
> > >  

> > >  #define obj_to_connector(x) container_of(x, struct drm_connector, base)

> > > -- 

> > > 1.9.1

> > > 

> > > _______________________________________________

> > > Intel-gfx mailing list

> > > Intel-gfx@lists.freedesktop.org

> > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx

> > 

> > -- 

> > Daniel Vetter

> > Software Engineer, Intel Corporation

> > http://blog.ffwll.ch

> _______________________________________________

> Intel-gfx mailing list

> Intel-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Daniel Vetter Oct. 25, 2016, 6:45 a.m. UTC | #3
On Tue, Oct 25, 2016 at 06:30:29AM +0000, Pandiyan, Dhinakaran wrote:
> On Mon, 2016-10-24 at 23:28 -0700, Manasi Navare wrote:
> > On Sat, Oct 22, 2016 at 10:48:13AM +0200, Daniel Vetter wrote:
> > > On Fri, Oct 21, 2016 at 04:45:40PM -0700, Manasi Navare wrote:
> > > > This work struct will be used to schedule a uevent on a separate
> > > > thread. This will be scheduled after a link train failure during modeset
> > > > to indicate a modeset retry request. It will get executed after the
> > > > current modeset is complete and all locks are released. This was
> > > > required to avoid deadlock.
> > > > 
> > > > Cc: dri-devel@lists.freedesktop.org
> > > > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > > > Cc: Daniel Vetter <daniel.vetter@intel.com>
> > > > Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
> > > > 
> > > > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> > > > ---
> > > >  include/drm/drm_connector.h | 5 +++++
> > > >  1 file changed, 5 insertions(+)
> > > > 
> > > > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> > > > index ac9d7d8..fcf6b97 100644
> > > > --- a/include/drm/drm_connector.h
> > > > +++ b/include/drm/drm_connector.h
> > > > @@ -682,6 +682,11 @@ struct drm_connector {
> > > >  	uint8_t num_h_tile, num_v_tile;
> > > >  	uint8_t tile_h_loc, tile_v_loc;
> > > >  	uint16_t tile_h_size, tile_v_size;
> > > > +
> > > > +	/* Work struct to schedule a uevent on link train failure for
> > > > +	 * DisplayPort.
> > > > +	 */
> > > > +	struct work_struct i915_modeset_retry_work;
> > > 
> > > You cannot put i915 stuff into core structs.
> > > -Daniel
> > > 
> > > >  };
> > 
> > I will rename it to use modeset_retry_work instead.
> > 
> > Manasi
> 
> 
> Why not move it struct intel_connector? The work function is defined in
> intel_dp.c afaict

Yeah, the place is wrong, not just the name.
-Daniel
> 
> -DK
> > > >  
> > > >  #define obj_to_connector(x) container_of(x, struct drm_connector, base)
> > > > -- 
> > > > 1.9.1
> > > > 
> > > > _______________________________________________
> > > > Intel-gfx mailing list
> > > > Intel-gfx@lists.freedesktop.org
> > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> > > 
> > > -- 
> > > Daniel Vetter
> > > Software Engineer, Intel Corporation
> > > http://blog.ffwll.ch
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
diff mbox

Patch

diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index ac9d7d8..fcf6b97 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -682,6 +682,11 @@  struct drm_connector {
 	uint8_t num_h_tile, num_v_tile;
 	uint8_t tile_h_loc, tile_v_loc;
 	uint16_t tile_h_size, tile_v_size;
+
+	/* Work struct to schedule a uevent on link train failure for
+	 * DisplayPort.
+	 */
+	struct work_struct i915_modeset_retry_work;
 };
 
 #define obj_to_connector(x) container_of(x, struct drm_connector, base)