[Intel-gfx] [PATCH 18/19] drm/i915: Use new atomic iterator macros in display code
On Mon, Oct 17, 2016 at 02:37:17PM +0200, Maarten Lankhorst wrote: > Signed-off-by: Maarten Lankhorst > --- > drivers/gpu/drm/i915/intel_display.c | 156 > ++- > 1 file changed, 80 insertions(+), 76 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index 3bd3f6a93c12..d310abace86a 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3510,7 +3510,12 @@ __intel_display_resume(struct drm_device *dev, > if (!state) > return 0; > > - for_each_crtc_in_state(state, crtc, crtc_state, i) { > + /* > + * We've duplicated the state, pointers to the old state are invalid. > + * > + * Don't attempt to use the old state until we commit the duplicated > state. > + */ > + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { > /* >* Force recalculation even if we restore >* current state. With fast modeset this may not result > @@ -5078,13 +5083,12 @@ static void intel_post_plane_update(struct > intel_crtc_state *old_crtc_state) > } > } > > -static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state) > +static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state, > +struct intel_crtc_state *pipe_config) > { > struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc); > struct drm_device *dev = crtc->base.dev; > struct drm_i915_private *dev_priv = to_i915(dev); > - struct intel_crtc_state *pipe_config = > - to_intel_crtc_state(crtc->base.state); > struct drm_atomic_state *old_state = old_crtc_state->base.state; > struct drm_plane *primary = crtc->base.primary; > struct drm_plane_state *old_pri_state = > @@ -5186,12 +5190,11 @@ static void intel_encoders_pre_pll_enable(struct > drm_crtc *crtc, > struct intel_crtc_state *crtc_state, > struct drm_atomic_state *old_state) > { > - struct drm_connector_state *old_conn_state; > + struct drm_connector_state *conn_state; > struct drm_connector *conn; > int i; > > - for_each_connector_in_state(old_state, conn, old_conn_state, i) { > - struct drm_connector_state *conn_state = conn->state; > + for_each_new_connector_in_state(old_state, conn, conn_state, i) { > struct intel_encoder *encoder = > to_intel_encoder(conn_state->best_encoder); > > @@ -5207,12 +5210,11 @@ static void intel_encoders_pre_enable(struct drm_crtc > *crtc, > struct intel_crtc_state *crtc_state, > struct drm_atomic_state *old_state) > { > - struct drm_connector_state *old_conn_state; > + struct drm_connector_state *conn_state; > struct drm_connector *conn; > int i; > > - for_each_connector_in_state(old_state, conn, old_conn_state, i) { > - struct drm_connector_state *conn_state = conn->state; > + for_each_new_connector_in_state(old_state, conn, conn_state, i) { > struct intel_encoder *encoder = > to_intel_encoder(conn_state->best_encoder); > > @@ -5228,12 +5230,11 @@ static void intel_encoders_enable(struct drm_crtc > *crtc, > struct intel_crtc_state *crtc_state, > struct drm_atomic_state *old_state) > { > - struct drm_connector_state *old_conn_state; > + struct drm_connector_state *conn_state; > struct drm_connector *conn; > int i; > > - for_each_connector_in_state(old_state, conn, old_conn_state, i) { > - struct drm_connector_state *conn_state = conn->state; > + for_each_new_connector_in_state(old_state, conn, conn_state, i) { > struct intel_encoder *encoder = > to_intel_encoder(conn_state->best_encoder); > > @@ -5253,7 +5254,7 @@ static void intel_encoders_disable(struct drm_crtc > *crtc, > struct drm_connector *conn; > int i; > > - for_each_connector_in_state(old_state, conn, old_conn_state, i) { > + for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { > struct intel_encoder *encoder = > to_intel_encoder(old_conn_state->best_encoder); > > @@ -5273,7 +5274,7 @@ static void intel_encoders_post_disable(struct drm_crtc > *crtc, > struct drm_connector *conn; > int i; > > - for_each_connector_in_state(old_state, conn, old_conn_state, i) { > + for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { > struct intel_encoder *encoder = > to_intel_encoder(old_conn_state->best_encoder); > > @@ -5293,7 +5294,7 @@ static void
[PATCH 18/19] drm/i915: Use new atomic iterator macros in display code
Signed-off-by: Maarten Lankhorst --- drivers/gpu/drm/i915/intel_display.c | 156 ++- 1 file changed, 80 insertions(+), 76 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 3bd3f6a93c12..d310abace86a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3510,7 +3510,12 @@ __intel_display_resume(struct drm_device *dev, if (!state) return 0; - for_each_crtc_in_state(state, crtc, crtc_state, i) { + /* +* We've duplicated the state, pointers to the old state are invalid. +* +* Don't attempt to use the old state until we commit the duplicated state. +*/ + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { /* * Force recalculation even if we restore * current state. With fast modeset this may not result @@ -5078,13 +5083,12 @@ static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state) } } -static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state) +static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state, + struct intel_crtc_state *pipe_config) { struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc); struct drm_device *dev = crtc->base.dev; struct drm_i915_private *dev_priv = to_i915(dev); - struct intel_crtc_state *pipe_config = - to_intel_crtc_state(crtc->base.state); struct drm_atomic_state *old_state = old_crtc_state->base.state; struct drm_plane *primary = crtc->base.primary; struct drm_plane_state *old_pri_state = @@ -5186,12 +5190,11 @@ static void intel_encoders_pre_pll_enable(struct drm_crtc *crtc, struct intel_crtc_state *crtc_state, struct drm_atomic_state *old_state) { - struct drm_connector_state *old_conn_state; + struct drm_connector_state *conn_state; struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { - struct drm_connector_state *conn_state = conn->state; + for_each_new_connector_in_state(old_state, conn, conn_state, i) { struct intel_encoder *encoder = to_intel_encoder(conn_state->best_encoder); @@ -5207,12 +5210,11 @@ static void intel_encoders_pre_enable(struct drm_crtc *crtc, struct intel_crtc_state *crtc_state, struct drm_atomic_state *old_state) { - struct drm_connector_state *old_conn_state; + struct drm_connector_state *conn_state; struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { - struct drm_connector_state *conn_state = conn->state; + for_each_new_connector_in_state(old_state, conn, conn_state, i) { struct intel_encoder *encoder = to_intel_encoder(conn_state->best_encoder); @@ -5228,12 +5230,11 @@ static void intel_encoders_enable(struct drm_crtc *crtc, struct intel_crtc_state *crtc_state, struct drm_atomic_state *old_state) { - struct drm_connector_state *old_conn_state; + struct drm_connector_state *conn_state; struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { - struct drm_connector_state *conn_state = conn->state; + for_each_new_connector_in_state(old_state, conn, conn_state, i) { struct intel_encoder *encoder = to_intel_encoder(conn_state->best_encoder); @@ -5253,7 +5254,7 @@ static void intel_encoders_disable(struct drm_crtc *crtc, struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { + for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { struct intel_encoder *encoder = to_intel_encoder(old_conn_state->best_encoder); @@ -5273,7 +5274,7 @@ static void intel_encoders_post_disable(struct drm_crtc *crtc, struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { + for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { struct intel_encoder *encoder = to_intel_encoder(old_conn_state->best_encoder); @@ -5293,7 +5294,7 @@ static void intel_encoders_post_pll_disable(struct drm_crtc *crtc, struct drm_connector *conn; int i; - for_each_connector_in_state(old_state, conn, old_conn_state, i) { +