Hi Dave, On Wed, 2 Aug 2017 12:23:06 +1000 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > > Today's linux-next merge of the drm-misc tree got a conflict in: > > drivers/gpu/drm/nouveau/nv50_display.c > > between commit: > > 4a5431af19bc ("drm/nouveau/kms/nv50: update vblank state in response to modeset actions") > > from Linus' tree and commit: > > 3c847d6cdadb ("drm/nouveau: Convert nouveau to use new iterator macros, v2.") > > from the drm-misc tree. > > I fixed it up (I think - see below) and can carry the fix as necessary. > This is now fixed as far as linux-next is concerned, but any non > trivial conflicts should be mentioned to your upstream maintainer when > your tree is submitted for merging. You may also want to consider > cooperating with the maintainer of the conflicting tree to minimise any > particularly complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/gpu/drm/nouveau/nv50_display.c > index 9d40b2a8be4d,bd1199b67eb4..000000000000 > --- a/drivers/gpu/drm/nouveau/nv50_display.c > +++ b/drivers/gpu/drm/nouveau/nv50_display.c > @@@ -3941,8 -3933,6 +3942,8 @@@ nv50_disp_atomic_commit_tail(struct drm > > NV_ATOMIC(drm, "%s: clr %04x (set %04x)\n", crtc->name, > asyh->clr.mask, asyh->set.mask); > - if (crtc_state->active && !asyh->state.active) > ++ if (new_crtc_state->active && !asyh->state.active) > + drm_crtc_vblank_off(crtc); > > if (asyh->clr.mask) { > nv50_head_flush_clr(head, asyh, atom->flush_disable); > @@@ -4028,13 -4018,11 +4029,13 @@@ > nv50_head_flush_set(head, asyh); > interlock_core = 1; > } > - } > > - for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { > - if (new_crtc_state->event) > - drm_crtc_vblank_get(crtc); > + if (asyh->state.active) { > - if (!crtc_state->active) > ++ if (!new_crtc_state->active) > + drm_crtc_vblank_on(crtc); > + if (asyh->state.event) > + drm_crtc_vblank_get(crtc); > + } > } > > /* Update plane(s). */ > @@@ -4077,18 -4065,16 +4078,18 @@@ > NV_ERROR(drm, "%s: timeout\n", plane->name); > } > > - for_each_crtc_in_state(state, crtc, crtc_state, i) { > - if (crtc->state->event) { > + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { > + if (new_crtc_state->event) { > unsigned long flags; > /* Get correct count/ts if racing with vblank irq */ > - drm_crtc_accurate_vblank_count(crtc); > + if (crtc->state->active) > + drm_crtc_accurate_vblank_count(crtc); > spin_lock_irqsave(&crtc->dev->event_lock, flags); > - drm_crtc_send_vblank_event(crtc, crtc->state->event); > + drm_crtc_send_vblank_event(crtc, new_crtc_state->event); > spin_unlock_irqrestore(&crtc->dev->event_lock, flags); > - crtc->state->event = NULL; > + new_crtc_state->event = NULL; > - drm_crtc_vblank_put(crtc); > + if (crtc->state->active) > + drm_crtc_vblank_put(crtc); > } > } > This conflict is now between the drm tree and Linus' tree. -- Cheers, Stephen Rothwell _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel