diff mbox

[1/2] drm/rockchip: Use CRTC vblank event interface

Message ID 1447678222-6858-1-git-send-email-daniels@collabora.com (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Stone Nov. 16, 2015, 12:50 p.m. UTC
Passing -1 as the pipe for vblank events now triggers a WARN_ON, but had
previously made multi-screen unusable anyway. Pass the correct pipe to
the event-send function, and use the new API to make this a bit easier
for us.

Fixes WARN present since cc1ef118fc for every pageflip event sent:
[  209.549969] ------------[ cut here ]------------
[  209.554592] WARNING: CPU: 3 PID: 238 at drivers/gpu/drm/drm_irq.c:924 drm_vblank_count_and_time+0x80/0x88 [drm]()
[  209.564832] Modules linked in: [...]
[  209.612401] CPU: 3 PID: 238 Comm: irq/41-ff940000 Tainted: G        W       4.3.0-rc6+ #71
[  209.620647] Hardware name: Rockchip (Device Tree)
[  209.625348] [<c001bb80>] (unwind_backtrace) from [<c001615c>] (show_stack+0x20/0x24)
[  209.633079] [<c001615c>] (show_stack) from [<c02b2c50>] (dump_stack+0x8c/0x9c)
[  209.640289] [<c02b2c50>] (dump_stack) from [<c0052e88>] (warn_slowpath_common+0x94/0xc4)
[  209.648364] [<c0052e88>] (warn_slowpath_common) from [<c0052f74>] (warn_slowpath_null+0x2c/0x34)
[  209.657139] [<c0052f74>] (warn_slowpath_null) from [<bf17dc30>] (drm_vblank_count_and_time+0x80/0x88 [drm])
[  209.666875] [<bf17dc30>] (drm_vblank_count_and_time [drm]) from [<bf17e484>] (drm_send_vblank_event+0x74/0x7c [drm])
[  209.677385] [<bf17e484>] (drm_send_vblank_event [drm]) from [<bf4c1144>] (vop_win_state_complete+0x4c/0x70 [rockchip_drm_vop])
[  209.688757] [<bf4c1144>] (vop_win_state_complete [rockchip_drm_vop]) from [<bf4c3bdc>] (vop_isr_thread+0x170/0x1d4 [rockchip_drm_vop])
[  209.700822] [<bf4c3bdc>] (vop_isr_thread [rockchip_drm_vop]) from [<c00ab93c>] (irq_thread_fn+0x2c/0x50)
[  209.710284] [<c00ab93c>] (irq_thread_fn) from [<c00abcac>] (irq_thread+0x13c/0x188)
[  209.717927] [<c00abcac>] (irq_thread) from [<c00723c8>] (kthread+0xec/0x104)
[  209.724965] [<c00723c8>] (kthread) from [<c0011638>] (ret_from_fork+0x14/0x3c)
[  209.732171] ---[ end trace 0690bc604f5d535d ]---

Signed-off-by: Daniel Stone <daniels@collabora.com>
Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Heiko Stuebner <heiko@sntech.de>
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sjoerd Simons Nov. 16, 2015, 12:54 p.m. UTC | #1
On Mon, 2015-11-16 at 12:50 +0000, Daniel Stone wrote:
> Passing -1 as the pipe for vblank events now triggers a WARN_ON, but
> had
> previously made multi-screen unusable anyway. Pass the correct pipe
> to
> the event-send function, and use the new API to make this a bit
> easier
> for us.

Tested on a Radxa Rock 2 square board.

Tested-By: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

> Fixes WARN present since cc1ef118fc for every pageflip event sent:
> [  209.549969] ------------[ cut here ]------------
> [  209.554592] WARNING: CPU: 3 PID: 238 at
> drivers/gpu/drm/drm_irq.c:924 drm_vblank_count_and_time+0x80/0x88
> [drm]()
> [  209.564832] Modules linked in: [...]
> [  209.612401] CPU: 3 PID: 238 Comm: irq/41-ff940000 Tainted:
> G        W       4.3.0-rc6+ #71
> [  209.620647] Hardware name: Rockchip (Device Tree)
> [  209.625348] [<c001bb80>] (unwind_backtrace) from [<c001615c>]
> (show_stack+0x20/0x24)
> [  209.633079] [<c001615c>] (show_stack) from [<c02b2c50>]
> (dump_stack+0x8c/0x9c)
> [  209.640289] [<c02b2c50>] (dump_stack) from [<c0052e88>]
> (warn_slowpath_common+0x94/0xc4)
> [  209.648364] [<c0052e88>] (warn_slowpath_common) from [<c0052f74>]
> (warn_slowpath_null+0x2c/0x34)
> [  209.657139] [<c0052f74>] (warn_slowpath_null) from [<bf17dc30>]
> (drm_vblank_count_and_time+0x80/0x88 [drm])
> [  209.666875] [<bf17dc30>] (drm_vblank_count_and_time [drm]) from
> [<bf17e484>] (drm_send_vblank_event+0x74/0x7c [drm])
> [  209.677385] [<bf17e484>] (drm_send_vblank_event [drm]) from
> [<bf4c1144>] (vop_win_state_complete+0x4c/0x70 [rockchip_drm_vop])
> [  209.688757] [<bf4c1144>] (vop_win_state_complete
> [rockchip_drm_vop]) from [<bf4c3bdc>] (vop_isr_thread+0x170/0x1d4
> [rockchip_drm_vop])
> [  209.700822] [<bf4c3bdc>] (vop_isr_thread [rockchip_drm_vop]) from
> [<c00ab93c>] (irq_thread_fn+0x2c/0x50)
> [  209.710284] [<c00ab93c>] (irq_thread_fn) from [<c00abcac>]
> (irq_thread+0x13c/0x188)
> [  209.717927] [<c00abcac>] (irq_thread) from [<c00723c8>]
> (kthread+0xec/0x104)
> [  209.724965] [<c00723c8>] (kthread) from [<c0011638>]
> (ret_from_fork+0x14/0x3c)
> [  209.732171] ---[ end trace 0690bc604f5d535d ]---
> 
> Signed-off-by: Daniel Stone <daniels@collabora.com>
> Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> Cc: Thierry Reding <treding@nvidia.com>
> Cc: Heiko Stuebner <heiko@sntech.de>
> ---
>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 5d8ae5e..ddf6dc2 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -1289,7 +1289,7 @@ static void vop_win_state_complete(struct
> vop_win *vop_win,
>  
>  	if (state->event) {
>  		spin_lock_irqsave(&drm->event_lock, flags);
> -		drm_send_vblank_event(drm, -1, state->event);
> +		drm_crtc_send_vblank_event(crtc, state->event);
>  		spin_unlock_irqrestore(&drm->event_lock, flags);
>  	}
>
Heiko Stuebner Nov. 16, 2015, 2:37 p.m. UTC | #2
Am Montag, 16. November 2015, 12:50:21 schrieb Daniel Stone:
> Passing -1 as the pipe for vblank events now triggers a WARN_ON, but had
> previously made multi-screen unusable anyway. Pass the correct pipe to
> the event-send function, and use the new API to make this a bit easier
> for us.
> 
> Fixes WARN present since cc1ef118fc for every pageflip event sent:
> [  209.549969] ------------[ cut here ]------------
> [  209.554592] WARNING: CPU: 3 PID: 238 at drivers/gpu/drm/drm_irq.c:924
> drm_vblank_count_and_time+0x80/0x88 [drm]() [  209.564832] Modules linked
> in: [...]
> [  209.612401] CPU: 3 PID: 238 Comm: irq/41-ff940000 Tainted: G        W    
>   4.3.0-rc6+ #71 [  209.620647] Hardware name: Rockchip (Device Tree)
> [  209.625348] [<c001bb80>] (unwind_backtrace) from [<c001615c>]
> (show_stack+0x20/0x24) [  209.633079] [<c001615c>] (show_stack) from
> [<c02b2c50>] (dump_stack+0x8c/0x9c) [  209.640289] [<c02b2c50>]
> (dump_stack) from [<c0052e88>] (warn_slowpath_common+0x94/0xc4) [ 
> 209.648364] [<c0052e88>] (warn_slowpath_common) from [<c0052f74>]
> (warn_slowpath_null+0x2c/0x34) [  209.657139] [<c0052f74>]
> (warn_slowpath_null) from [<bf17dc30>] (drm_vblank_count_and_time+0x80/0x88
> [drm]) [  209.666875] [<bf17dc30>] (drm_vblank_count_and_time [drm]) from
> [<bf17e484>] (drm_send_vblank_event+0x74/0x7c [drm]) [  209.677385]
> [<bf17e484>] (drm_send_vblank_event [drm]) from [<bf4c1144>]
> (vop_win_state_complete+0x4c/0x70 [rockchip_drm_vop]) [  209.688757]
> [<bf4c1144>] (vop_win_state_complete [rockchip_drm_vop]) from [<bf4c3bdc>]
> (vop_isr_thread+0x170/0x1d4 [rockchip_drm_vop]) [  209.700822] [<bf4c3bdc>]
> (vop_isr_thread [rockchip_drm_vop]) from [<c00ab93c>]
> (irq_thread_fn+0x2c/0x50) [  209.710284] [<c00ab93c>] (irq_thread_fn) from
> [<c00abcac>] (irq_thread+0x13c/0x188) [  209.717927] [<c00abcac>]
> (irq_thread) from [<c00723c8>] (kthread+0xec/0x104) [  209.724965]
> [<c00723c8>] (kthread) from [<c0011638>] (ret_from_fork+0x14/0x3c) [ 
> 209.732171] ---[ end trace 0690bc604f5d535d ]---
> 
> Signed-off-by: Daniel Stone <daniels@collabora.com>
> Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> Cc: Thierry Reding <treding@nvidia.com>
> Cc: Heiko Stuebner <heiko@sntech.de>

on a rk3288_veyron_jerry

Tested-by: Heiko Stuebner <heiko@sntech.de>

Everything up to GLES2 using the binary userspace driver still works
Thierry Reding Nov. 16, 2015, 3:13 p.m. UTC | #3
On Mon, Nov 16, 2015 at 12:50:21PM +0000, Daniel Stone wrote:
> Passing -1 as the pipe for vblank events now triggers a WARN_ON, but had
> previously made multi-screen unusable anyway. Pass the correct pipe to
> the event-send function, and use the new API to make this a bit easier
> for us.
> 
> Fixes WARN present since cc1ef118fc for every pageflip event sent:
> [  209.549969] ------------[ cut here ]------------
> [  209.554592] WARNING: CPU: 3 PID: 238 at drivers/gpu/drm/drm_irq.c:924 drm_vblank_count_and_time+0x80/0x88 [drm]()
> [  209.564832] Modules linked in: [...]
> [  209.612401] CPU: 3 PID: 238 Comm: irq/41-ff940000 Tainted: G        W       4.3.0-rc6+ #71
> [  209.620647] Hardware name: Rockchip (Device Tree)
> [  209.625348] [<c001bb80>] (unwind_backtrace) from [<c001615c>] (show_stack+0x20/0x24)
> [  209.633079] [<c001615c>] (show_stack) from [<c02b2c50>] (dump_stack+0x8c/0x9c)
> [  209.640289] [<c02b2c50>] (dump_stack) from [<c0052e88>] (warn_slowpath_common+0x94/0xc4)
> [  209.648364] [<c0052e88>] (warn_slowpath_common) from [<c0052f74>] (warn_slowpath_null+0x2c/0x34)
> [  209.657139] [<c0052f74>] (warn_slowpath_null) from [<bf17dc30>] (drm_vblank_count_and_time+0x80/0x88 [drm])
> [  209.666875] [<bf17dc30>] (drm_vblank_count_and_time [drm]) from [<bf17e484>] (drm_send_vblank_event+0x74/0x7c [drm])
> [  209.677385] [<bf17e484>] (drm_send_vblank_event [drm]) from [<bf4c1144>] (vop_win_state_complete+0x4c/0x70 [rockchip_drm_vop])
> [  209.688757] [<bf4c1144>] (vop_win_state_complete [rockchip_drm_vop]) from [<bf4c3bdc>] (vop_isr_thread+0x170/0x1d4 [rockchip_drm_vop])
> [  209.700822] [<bf4c3bdc>] (vop_isr_thread [rockchip_drm_vop]) from [<c00ab93c>] (irq_thread_fn+0x2c/0x50)
> [  209.710284] [<c00ab93c>] (irq_thread_fn) from [<c00abcac>] (irq_thread+0x13c/0x188)
> [  209.717927] [<c00abcac>] (irq_thread) from [<c00723c8>] (kthread+0xec/0x104)
> [  209.724965] [<c00723c8>] (kthread) from [<c0011638>] (ret_from_fork+0x14/0x3c)
> [  209.732171] ---[ end trace 0690bc604f5d535d ]---
> 
> Signed-off-by: Daniel Stone <daniels@collabora.com>
> Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> Cc: Thierry Reding <treding@nvidia.com>
> Cc: Heiko Stuebner <heiko@sntech.de>
> ---
>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Thierry Reding <treding@nvidia.com>
yao mark Dec. 2, 2015, 1:02 a.m. UTC | #4
On 2015?11?16? 20:50, Daniel Stone wrote:
> Passing -1 as the pipe for vblank events now triggers a WARN_ON, but had
> previously made multi-screen unusable anyway. Pass the correct pipe to
> the event-send function, and use the new API to make this a bit easier
> for us.
>
> Fixes WARN present since cc1ef118fc for every pageflip event sent:
> [  209.549969] ------------[ cut here ]------------
> [  209.554592] WARNING: CPU: 3 PID: 238 at drivers/gpu/drm/drm_irq.c:924 drm_vblank_count_and_time+0x80/0x88 [drm]()
> [  209.564832] Modules linked in: [...]
> [  209.612401] CPU: 3 PID: 238 Comm: irq/41-ff940000 Tainted: G        W       4.3.0-rc6+ #71
> [  209.620647] Hardware name: Rockchip (Device Tree)
> [  209.625348] [<c001bb80>] (unwind_backtrace) from [<c001615c>] (show_stack+0x20/0x24)
> [  209.633079] [<c001615c>] (show_stack) from [<c02b2c50>] (dump_stack+0x8c/0x9c)
> [  209.640289] [<c02b2c50>] (dump_stack) from [<c0052e88>] (warn_slowpath_common+0x94/0xc4)
> [  209.648364] [<c0052e88>] (warn_slowpath_common) from [<c0052f74>] (warn_slowpath_null+0x2c/0x34)
> [  209.657139] [<c0052f74>] (warn_slowpath_null) from [<bf17dc30>] (drm_vblank_count_and_time+0x80/0x88 [drm])
> [  209.666875] [<bf17dc30>] (drm_vblank_count_and_time [drm]) from [<bf17e484>] (drm_send_vblank_event+0x74/0x7c [drm])
> [  209.677385] [<bf17e484>] (drm_send_vblank_event [drm]) from [<bf4c1144>] (vop_win_state_complete+0x4c/0x70 [rockchip_drm_vop])
> [  209.688757] [<bf4c1144>] (vop_win_state_complete [rockchip_drm_vop]) from [<bf4c3bdc>] (vop_isr_thread+0x170/0x1d4 [rockchip_drm_vop])
> [  209.700822] [<bf4c3bdc>] (vop_isr_thread [rockchip_drm_vop]) from [<c00ab93c>] (irq_thread_fn+0x2c/0x50)
> [  209.710284] [<c00ab93c>] (irq_thread_fn) from [<c00abcac>] (irq_thread+0x13c/0x188)
> [  209.717927] [<c00abcac>] (irq_thread) from [<c00723c8>] (kthread+0xec/0x104)
> [  209.724965] [<c00723c8>] (kthread) from [<c0011638>] (ret_from_fork+0x14/0x3c)
> [  209.732171] ---[ end trace 0690bc604f5d535d ]---
>
> Signed-off-by: Daniel Stone <daniels@collabora.com>
> Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> Cc: Thierry Reding <treding@nvidia.com>
> Cc: Heiko Stuebner <heiko@sntech.de>
> ---
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 5d8ae5e..ddf6dc2 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -1289,7 +1289,7 @@ static void vop_win_state_complete(struct vop_win *vop_win,
>   
>   	if (state->event) {
>   		spin_lock_irqsave(&drm->event_lock, flags);
> -		drm_send_vblank_event(drm, -1, state->event);
> +		drm_crtc_send_vblank_event(crtc, state->event);
>   		spin_unlock_irqrestore(&drm->event_lock, flags);
>   	}
>   

Applied to my drm-fixes, Thanks for this fix.
diff mbox

Patch

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 5d8ae5e..ddf6dc2 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -1289,7 +1289,7 @@  static void vop_win_state_complete(struct vop_win *vop_win,
 
 	if (state->event) {
 		spin_lock_irqsave(&drm->event_lock, flags);
-		drm_send_vblank_event(drm, -1, state->event);
+		drm_crtc_send_vblank_event(crtc, state->event);
 		spin_unlock_irqrestore(&drm->event_lock, flags);
 	}