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

From: Stephen Rothwell <[email-masked]>
Date: Thu, 10 Aug 2017 12:06:34 +1000

Hi Dave,

On Wed, 2 Aug 2017 12:23:06 +1000 Stephen Rothwell <[email-masked]> 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
[email-masked]
https://lists.freedesktop.org/mailman/listinfo/dri-devel