On Tue, Nov 12, 2019 at 7:51 AM Enric Balletbo Serra <eballetbo@xxxxxxxxx> wrote: > > Hi Rob, > > Missatge de Rob Clark <robdclark@xxxxxxxxx> del dia dl., 4 de nov. > 2019 a les 18:42: > > > > From: Rob Clark <robdclark@xxxxxxxxxxxx> > > > > The new state should not be accessed after this point. Clear the > > pointers to make that explicit. > > > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx> > > While looking to another issue I applied this patch on top of 5.4-rc7 > and my display stopped working. The system gets stuck with the > messages below > > ... > [ 17.558689] rockchip-vop ff8f0000.vop: Adding to iommu group 1 > [ 17.566014] rk3399-gru-sound sound: ASoC: failed to init link DP: -517 > [ 17.567618] rockchip-vop ff900000.vop: Adding to iommu group 2 > [ 17.580671] rk3399-gru-sound sound: ASoC: failed to init link DP: -517 > [ 17.585996] rockchip-drm display-subsystem: bound ff8f0000.vop (ops > vop_component_ops [rockchipdrm]) > [ 17.589294] rk3399-gru-sound sound: ASoC: failed to init link DP: -517 > [ 17.599899] rockchip-drm display-subsystem: bound ff900000.vop (ops > vop_component_ops [rockchipdrm]) > [ 17.615846] rockchip-dp ff970000.edp: no DP phy configured > [ 17.622495] rockchip-drm display-subsystem: bound ff970000.edp (ops > rockchip_dp_component_ops [rockchipdrm]) > [ 17.633688] rockchip-drm display-subsystem: bound fec00000.dp (ops > cdn_dp_component_ops [rockchipdrm]) > [ 17.644141] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). > [ 17.651548] [drm] No driver support for vblank timestamp query. > > Not really useful information at this point, but I am wondering if > could be that the rockchip driver is doing something wrong more than > this patch is wrong? I think we should drop this patch (but 1/2 is defn needed).. it turns up some other problems in qemu, it seems. So there is kind of a bigger problem of things accessing new state after hw_done still. But I've not really had time to look into it. BR, -R > > Thanks, > Enric > > > --- > > drivers/gpu/drm/drm_atomic_helper.c | 30 +++++++++++++++++++++++++++++ > > 1 file changed, 30 insertions(+) > > > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > > index 648494c813e5..aec9759d9df2 100644 > > --- a/drivers/gpu/drm/drm_atomic_helper.c > > +++ b/drivers/gpu/drm/drm_atomic_helper.c > > @@ -2246,12 +2246,42 @@ EXPORT_SYMBOL(drm_atomic_helper_fake_vblank); > > */ > > void drm_atomic_helper_commit_hw_done(struct drm_atomic_state *old_state) > > { > > + struct drm_connector *connector; > > + struct drm_connector_state *old_conn_state, *new_conn_state; > > struct drm_crtc *crtc; > > struct drm_crtc_state *old_crtc_state, *new_crtc_state; > > + struct drm_plane *plane; > > + struct drm_plane_state *old_plane_state, *new_plane_state; > > struct drm_crtc_commit *commit; > > + struct drm_private_obj *obj; > > + struct drm_private_state *old_obj_state, *new_obj_state; > > int i; > > > > + /* > > + * After this point, drivers should not access the permanent modeset > > + * state, so we also clear the new_state pointers to make this > > + * restriction explicit. > > + * > > + * For the CRTC state, we do this in the same loop where we signal > > + * hw_done, since we still need to new_crtc_state to fish out the > > + * commit. > > + */ > > + > > + for_each_oldnew_connector_in_state(old_state, connector, old_conn_state, new_conn_state, i) { > > + old_state->connectors[i].new_state = NULL; > > + } > > + > > + for_each_oldnew_plane_in_state(old_state, plane, old_plane_state, new_plane_state, i) { > > + old_state->planes[i].new_state = NULL; > > + } > > + > > + for_each_oldnew_private_obj_in_state(old_state, obj, old_obj_state, new_obj_state, i) { > > + old_state->private_objs[i].new_state = NULL; > > + } > > + > > for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) { > > + old_state->crtcs[i].new_state = NULL; > > + > > commit = new_crtc_state->commit; > > if (!commit) > > continue; > > -- > > 2.23.0 > > > > _______________________________________________ > > dri-devel mailing list > > dri-devel@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel