All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liviu Dudau <liviu@dudau.co.uk>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	Thierry Reding <treding@nvidia.com>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 00/12] fbdev helper locking rework and deferred setup
Date: Fri, 23 Jun 2017 13:34:26 +0100	[thread overview]
Message-ID: <20170623123425.GB11087@bart.dudau.co.uk> (raw)
In-Reply-To: <CAKMK7uHFrFO61kTHZGTsemBKoZRrshmAr14MJFUF+ffOjyQ+xA@mail.gmail.com>

On Fri, Jun 23, 2017 at 09:38:49AM +0200, Daniel Vetter wrote:
> On Thu, Jun 22, 2017 at 4:54 PM, Liviu Dudau <liviu@dudau.co.uk> wrote:
> > On Wed, Jun 21, 2017 at 08:28:03PM +0200, Daniel Vetter wrote:
> >> Hi all,
> >>
> >> This is Thierry's deferred fbdev setup series, with the locking rework almost
> >> entirely redone. The much wider scope is to get rid of drm_modeset_lock_all
> >> calls for atomic drivers and remove users of the fairly nasty
> >> mode_config->acquire_ctx hack, which breaks when doing multiple atomic commits.
> >>
> >> Testing&review very much appreciated, especially from people who care about the
> >> various fbdev emulation things and the deferred setup stuff.
> >
> > Tested on my Juno dev board on a bit of a convoluted setup: the dev board has
> > built into the SoC 2x HDLCD instances and I also have an FPGA daughter board
> > with Mali DP 650 running again on a 2x configuration. On boot I'm getting this
> > warning:
> >
> > juno-r0-ld login: [  241.986785] INFO: task kworker/3:1:80 blocked for more than 120 seconds.
> > [  241.993652]       Not tainted 4.12.0-rc5-01275-g1e2237a19156 #2
> > [  241.999689] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> > [  242.007660] kworker/3:1     D    0    80      2 0x00000000
> > [  242.013340] Workqueue: events output_poll_execute [drm_kms_helper]
> > [  242.019637] Call trace:
> > [  242.022132] [<ffff000008085798>] __switch_to+0x98/0xb0
> > [  242.027373] [<ffff00000886b3d4>] __schedule+0x19c/0x5e8
> > [  242.032699] [<ffff00000886b858>] schedule+0x38/0xa0
> > [  242.037672] [<ffff00000886bd38>] schedule_preempt_disabled+0x20/0x38
> > [  242.044144] [<ffff00000886c968>] __mutex_lock.isra.0+0x140/0x530
> > [  242.050262] [<ffff00000886cd68>] __mutex_lock_slowpath+0x10/0x18
> > [  242.056379] [<ffff00000886cda0>] mutex_lock+0x30/0x38
> > [  242.061597] [<ffff000000929660>] drm_fb_helper_hotplug_event.part.22+0x20/0x100 [drm_kms_helper]
> > [  242.070611] [<ffff000000929764>] drm_fb_helper_hotplug_event+0x24/0x38 [drm_kms_helper]
> > [  242.078828] [<ffff00000092a360>] drm_fbdev_cma_hotplug_event+0x10/0x20 [drm_kms_helper]
> > [  242.086984] [<ffff000000b44494>] hdlcd_fb_output_poll_changed+0x14/0x20 [hdlcd]
> > [  242.094495] [<ffff000000919e90>] drm_kms_helper_hotplug_event+0x28/0x38 [drm_kms_helper]
> > [  242.102801] [<ffff00000091a090>] output_poll_execute+0x1a0/0x1f0 [drm_kms_helper]
> > [  242.110424] [<ffff0000080d7fd4>] process_one_work+0x1d4/0x330
> > [  242.116280] [<ffff0000080d8178>] worker_thread+0x48/0x468
> > [  242.121781] [<ffff0000080ddf64>] kthread+0x12c/0x130
> > [  242.126839] [<ffff000008082ec0>] ret_from_fork+0x10/0x50
> > [  242.132252] INFO: task kworker/5:1:82 blocked for more than 120 seconds.
> > [  242.139074]       Not tainted 4.12.0-rc5-01275-g1e2237a19156 #2
> > [  242.145099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> > [  242.153064] kworker/5:1     D    0    82      2 0x00000000
> > [  242.158724] Workqueue: events output_poll_execute [drm_kms_helper]
> > [  242.165019] Call trace:
> > [  242.167519] [<ffff000008085798>] __switch_to+0x98/0xb0
> > [  242.172755] [<ffff00000886b3d4>] __schedule+0x19c/0x5e8
> > [  242.178079] [<ffff00000886b858>] schedule+0x38/0xa0
> > [  242.183051] [<ffff00000886bd38>] schedule_preempt_disabled+0x20/0x38
> > [  242.189520] [<ffff00000886c968>] __mutex_lock.isra.0+0x140/0x530
> > [  242.195639] [<ffff00000886cd68>] __mutex_lock_slowpath+0x10/0x18
> > [  242.201756] [<ffff00000886cda0>] mutex_lock+0x30/0x38
> > [  242.206972] [<ffff000000929660>] drm_fb_helper_hotplug_event.part.22+0x20/0x100 [drm_kms_helper]
> > [  242.215984] [<ffff000000929764>] drm_fb_helper_hotplug_event+0x24/0x38 [drm_kms_helper]
> > [  242.224201] [<ffff00000092a360>] drm_fbdev_cma_hotplug_event+0x10/0x20 [drm_kms_helper]
> > [  242.232367] [<ffff000000b543a4>] malidp_output_poll_changed+0x14/0x20 [mali_dp]
> > [  242.239880] [<ffff000000919e90>] drm_kms_helper_hotplug_event+0x28/0x38 [drm_kms_helper]
> > [  242.248188] [<ffff00000091a090>] output_poll_execute+0x1a0/0x1f0 [drm_kms_helper]
> > [  242.255808] [<ffff0000080d7fd4>] process_one_work+0x1d4/0x330
> > [  242.261664] [<ffff0000080d8178>] worker_thread+0x48/0x468
> > [  242.267196] [<ffff0000080ddf64>] kthread+0x12c/0x130
> > [  242.272312] [<ffff000008082ec0>] ret_from_fork+0x10/0x50
> >
> > Each hardware type has only one instance of each driver being connected to an
> > output, HDLCD is connected to an HDMI monitor that is not "active" (i.e.
> > input is switched to DP connection), while the Mali DP instance is connected to
> > a monitor.
> >
> > Suggestions on where to look next are welcome.
> 
> I'm betting I've fumbled an unlock path somewhere and now your stuck
> trying to get a lock you can't get. Can you pls recompile with lockdep
> enabled and repro? That will directly tell us where and what went
> wrong.

This is what I've got with lockdep debugging enabled. Not sure it is the same
thing as the previous WARN, the stack trace doesn't match the one above (but I still
get that one after 120s).

[   16.536405] [drm] found ARM HDLCD version r0p0                                                                                                                                                     
[   16.670859] tda998x 0-0071: found TDA19988                                                                                                                                                         
[   16.677173] hdlcd 7ff50000.hdlcd: bound 0-0071 (ops tda998x_ops [tda998x])                                                                                                                         
[   16.686092] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).                                                                                                                            
[   16.692783] [drm] No driver support for vblank timestamp query.                                                                                                                                    
[   16.699518] [drm] No outputs connected, deferring setup                                                                                                                                            
[   16.704844]                                                                                                                                                                                        
[   16.706322] =====================================                                                                                                                                                  
[   16.710981] WARNING: bad unlock balance detected!                                                                                                                                                  
[   16.715643] 4.12.0-rc5-01275-g1e2237a19156 #3 Not tainted                                                                                                                                          
[   16.720992] -------------------------------------                                                                                                                                                  
[   16.725652] systemd-udevd/176 is trying to release lock (&dev->mode_config.mutex) at:                                                                                                              
[   16.733466] [<ffff000000a3363c>] __drm_fb_helper_initial_config+0x11c/0x570 [drm_kms_helper]                                                                                                       
[   16.741830] but there are no more locks to release!                                                                                                                                                
[   16.746661]                                                                                                                                                                                        
[   16.746661] other info that might help us debug this:                                                                                                                                              
[   16.753135] 4 locks held by systemd-udevd/176:                                                                                                                                                     
[   16.757535]  #0:  (&dev->mutex){......}, at: [<ffff00000854a134>] __driver_attach+0x4c/0xc8                                                                                                        
[   16.774279]  #1:  (&dev->mutex){......}, at: [<ffff00000854a144>] __driver_attach+0x5c/0xc8                                                                                                        
[   16.782571]  #2:  (component_mutex){+.+.+.}, at: [<ffff000008544044>] component_master_add_with_match+0x84/0xf8                                                                                    
[   16.792585]  #3:  (&helper->lock){+.+.+.}, at: [<ffff000000a33ac4>] drm_fb_helper_initial_config+0x34/0x68 [drm_kms_helper]                                                                        
[   16.803669]                                                                                                                                                                                        
[   16.803669] stack backtrace:                                                                                                                                                                       
[   16.807992] CPU: 2 PID: 176 Comm: systemd-udevd Not tainted 4.12.0-rc5-01275-g1e2237a19156 #3                                                                                                      
[   16.816442] Hardware name: ARM Juno development board (r0) (DT)                                                                                                                                    
[   16.822306] Call trace:                                                                                                                                                                            
[   16.824733] [<ffff000008088fc8>] dump_backtrace+0x0/0x238                                                                                                                                          
[   16.830083] [<ffff0000080892cc>] show_stack+0x14/0x20                                                                                                                                              
[   16.835091] [<ffff0000083e7be0>] dump_stack+0xbc/0xf4                                                                                                                                              
[   16.840097] [<ffff00000810d260>] print_unlock_imbalance_bug+0xe8/0xf0                                                                                                                              
[   16.846481] [<ffff00000811170c>] lock_release+0x174/0x368                                                                                                                                          
[   16.851832] [<ffff0000088f6eb4>] __mutex_unlock_slowpath+0x44/0x2b0                                                                                                                                
[   16.858041] [<ffff0000088f7130>] mutex_unlock+0x10/0x18                                                                                                                                            
[   16.863256] [<ffff000000a3363c>] __drm_fb_helper_initial_config+0x11c/0x570 [drm_kms_helper]                                                                                                       
[   16.871661] [<ffff000000a33ad0>] drm_fb_helper_initial_config+0x40/0x68 [drm_kms_helper]                                                                                                           
[   16.871699] [<ffff000000a34510>] drm_fbdev_cma_init_with_funcs+0x88/0x158 [drm_kms_helper]                                                                                                         
[   16.871736] [<ffff000000a345f0>] drm_fbdev_cma_init+0x10/0x20 [drm_kms_helper]                                                                                                                     
[   16.871748] [<ffff000000b5e708>] hdlcd_drm_bind+0x1f0/0x488 [hdlcd]                                                                                                                                
[   16.871752] [<ffff000008543e00>] try_to_bring_up_master+0x178/0x1d8                                                                                                                                
[   16.871756] [<ffff000008544064>] component_master_add_with_match+0xa4/0xf8                                                                                                                         
[   16.871765] [<ffff000000b5e4f0>] hdlcd_probe+0x50/0x78 [hdlcd]                                                                                                                                     
[   16.871770] [<ffff00000854bda8>] platform_drv_probe+0x58/0xb8                                                                                                                                      
[   16.871775] [<ffff00000854a03c>] driver_probe_device+0x224/0x2d0                                                                                                                                   
[   16.871779] [<ffff00000854a1ac>] __driver_attach+0xc4/0xc8                                                                                                                                         
[   16.871783] [<ffff00000854806c>] bus_for_each_dev+0x4c/0x98                                                                                                                                        
[   16.871787] [<ffff000008549948>] driver_attach+0x20/0x28                                                                                                                                           
[   16.871791] [<ffff000008549518>] bus_add_driver+0x1c0/0x230                                                                                                                                        
[   16.871794] [<ffff00000854ab60>] driver_register+0x60/0xf8                                                                                                                                         
[   16.871799] [<ffff00000854bcf8>] __platform_driver_register+0x40/0x48                                                                                                                              
[   16.871807] [<ffff000000b6a018>] hdlcd_platform_driver_init+0x18/0x1000 [hdlcd]                                                                                                                    
[   16.871812] [<ffff000008083140>] do_one_initcall+0x38/0x128                                                                                                                                        
[   16.871818] [<ffff000008195c1c>] do_init_module+0x58/0x1bc                                                                                                                                         
[   16.871823] [<ffff00000815093c>] load_module+0x1e94/0x2168                                                                                                                                         
[   16.871827] [<ffff000008150eb0>] SyS_finit_module+0xa8/0xc0                                                                                                                                        
[   16.871831] [<ffff000008082fcc>] __sys_trace_return+0x0/0x4                                                                                                                                        
[   16.872439] [drm] Initialized hdlcd 1.0.0 20151021 for 7ff50000.hdlcd on minor 0                                                                                                                   
[   16.872781] mali-dp 6f200000.malidp: assigned reserved memory node framebuffer@60000000                                                                                                            
[   16.872859] [drm] found ARM Mali-DP650 version r0p0                                                                                                                                                
[   17.038821] tda998x 1-0070: found TDA19988                                                                                                                                                         
[   17.056417] mali-dp 6f200000.malidp: bound 1-0070 (ops tda998x_ops [tda998x])                                                                                                                      
[   17.063827] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).                                                                                                                            
[   17.070435] [drm] No driver support for vblank timestamp query.                                                                                                                                    
[   17.079290] [drm] No outputs connected, deferring setup                                                                                                                                            
[   17.085265] [drm] Initialized mali-dp 1.0.0 20160106 for 6f200000.malidp on minor 1                                                                                                                
[   17.092701] random: crng init done                                                                                                                                                                 
[   17.096720] [drm] found ARM HDLCD version r0p0                                                                                                                                                     
[   17.227312] tda998x 0-0070: found TDA19988                                                                                                                                                         
[   17.233258] hdlcd 7ff60000.hdlcd: bound 0-0070 (ops tda998x_ops [tda998x])                                                                                                                         
[   17.240152] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).                                                                                                                            
[   17.246781] [drm] No driver support for vblank timestamp query.                                                                                                                                    
[   17.355359] Console: switching to colour frame buffer device 240x75                                                                                                                                
[   17.417368] hdlcd 7ff60000.hdlcd: fb0:  frame buffer device                                                                                                                                        
[   17.436616] [drm] Initialized hdlcd 1.0.0 20151021 for 7ff60000.hdlcd on minor 2

Best regards,
Liviu

> 
> Thanks for testing.
> -Daniel
> 
> >
> > Best regards,
> > Liviu
> >
> >>
> >> Thanks, Daniel
> >>
> >> Daniel Vetter (7):
> >>   drm/i915: Drop FBDEV #ifdev in mst code
> >>   drm/fb-helper: Push locking in fb_is_bound
> >>   drm/fb-helper: Drop locking from the vsync wait ioctl code
> >>   drm/fb-helper: Push locking into pan_display_atomic|legacy
> >>   drm/fb-helper: Push locking into restore_fbdev_mode_atomic|legacy
> >>   drm/fb-helper: Stop using mode_config.mutex for internals
> >>   drm/fb-helper: Split dpms handling into legacy and atomic paths
> >>
> >> Thierry Reding (5):
> >>   drm/fb-helper: Push down modeset lock into FB helpers
> >>   drm/fb-helper: Add top-level lock
> >>   drm/fb-helper: Support deferred setup
> >>   drm/exynos: Remove custom FB helper deferred setup
> >>   drm/hisilicon: Remove custom FB helper deferred setup
> >>
> >>  drivers/gpu/drm/drm_fb_helper.c                 | 361 ++++++++++++++++++------
> >>  drivers/gpu/drm/drm_vblank.c                    |   2 +-
> >>  drivers/gpu/drm/exynos/exynos_drm_drv.c         |   6 +-
> >>  drivers/gpu/drm/exynos/exynos_drm_fbdev.c       |  26 +-
> >>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c |  21 +-
> >>  drivers/gpu/drm/i915/intel_dp_mst.c             |  43 +--
> >>  drivers/gpu/drm/radeon/radeon_dp_mst.c          |   7 -
> >>  include/drm/drm_fb_helper.h                     |  42 ++-
> >>  8 files changed, 336 insertions(+), 172 deletions(-)
> >>
> >> --
> >> 2.11.0
> >>
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> >
> > --
> >    _
> >  _|_|_
> >  ('_')
> >  (⊃  )⊃
> >  |_|_|
> 
> 
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch

-- 
   _
 _|_|_
 ('_')
 (⊃  )⊃
 |_|_|
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-06-23 12:34 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-21 18:28 Daniel Vetter
2017-06-21 18:28 ` [PATCH 01/12] drm/fb-helper: Push down modeset lock into FB helpers Daniel Vetter
2017-06-21 18:28 ` [PATCH 02/12] drm/i915: Drop FBDEV #ifdev in mst code Daniel Vetter
2017-06-21 18:28 ` [PATCH 03/12] drm/fb-helper: Add top-level lock Daniel Vetter
2017-06-21 18:28 ` [PATCH 04/12] drm/fb-helper: Push locking in fb_is_bound Daniel Vetter
2017-06-21 18:28 ` [PATCH 05/12] drm/fb-helper: Drop locking from the vsync wait ioctl code Daniel Vetter
2017-06-21 18:28 ` [PATCH 06/12] drm/fb-helper: Push locking into pan_display_atomic|legacy Daniel Vetter
2017-06-21 18:28 ` [PATCH 07/12] drm/fb-helper: Push locking into restore_fbdev_mode_atomic|legacy Daniel Vetter
2017-06-21 18:28 ` [PATCH 08/12] drm/fb-helper: Stop using mode_config.mutex for internals Daniel Vetter
2017-06-21 18:28 ` [PATCH 09/12] drm/fb-helper: Split dpms handling into legacy and atomic paths Daniel Vetter
2017-06-22 10:24   ` Peter Rosin
2017-06-21 18:28 ` [PATCH 10/12] drm/fb-helper: Support deferred setup Daniel Vetter
2017-06-23 13:31   ` [PATCH] " Daniel Vetter
2017-06-21 18:28 ` [PATCH 11/12] drm/exynos: Remove custom FB helper " Daniel Vetter
2017-06-21 18:28 ` [PATCH 12/12] drm/hisilicon: " Daniel Vetter
2017-06-21 18:48 ` ✓ Fi.CI.BAT: success for fbdev helper locking rework and " Patchwork
2017-06-21 23:01 ` [PATCH 00/12] " John Stultz
2017-06-22 14:54 ` Liviu Dudau
2017-06-23  7:38   ` Daniel Vetter
2017-06-23 12:34     ` Liviu Dudau [this message]
2017-06-23 14:09 ` ✓ Fi.CI.BAT: success for fbdev helper locking rework and deferred setup (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170623123425.GB11087@bart.dudau.co.uk \
    --to=liviu@dudau.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=treding@nvidia.com \
    --subject='Re: [PATCH 00/12] fbdev helper locking rework and deferred setup' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.