Re: linux-next: manual merge of the drm-misc tree with Linus' tree

From: Stephen Rothwell
Date: Wed Aug 09 2017 - 22:06:43 EST


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