BUG caused by "Use new drm_fb_helper functions" series

Peter Hurley peter at hurleysoftware.com
Tue Feb 2 19:38:43 CET 2016


On 02/01/2016 09:20 PM, Archit Taneja wrote:
> Hi Peter,
> 
> On 02/02/2016 02:07 AM, Peter Hurley wrote:
>> Hi Archit,
>>
>> Just booting 4.4-rc5+, I got this splat [1]
>> At first glance, this appears to be a simple fix.
> 
> Thanks for sharing this.
> 
>>
>> However, I'm concerned that fbcon functions, which may be called with
>> interrupts disabled, are now hooked up to fbdev functions which may assume
>> interrupts are not disabled (as is the case with cfb_imageblit()).
> 
> In the case when CONFIG_FB is enabled, drm_fb_helper_cfb_imageblit
> helper simply wraps around cfg_imageblit, so I don't see how we'd have
> any difference in behaviour.


Sorry; terrible attribution on my part.
This bug clearly has nothing to do with this series.

But a better look has me wondering how all these gpus are syncing
the framebuffer for direct access via cfb_imageblit and friends. I only see
nouveau and intel gma even trying.



>> For example, in the splat below, it's a simple fix to make the splat go
>> away with GFP_ATOMIC allocation. However, the following fence wait is _never_
>> going to trigger with interrupts disabled on UP.
>>
>> FWIW, I've been running almost exclusively debug kernel builds so I'm not
>> sure why this hasn't triggered many times before, but it hasn't.
> 
> We could revert the patch
> "drm/nouveau: Use new drm_fb_helper functions" and see if we still hit this
> issue.
> 
> Thanks,
> Archit
> 
>> Regards,
>> Peter Hurley
>>
>>
>> [1] BUG splat
>>
>> [   37.438494] BUG: sleeping function called from invalid context at /home/peter/src/kernels/mainline/mm/slub.c:1287
>> [   37.438495] in_atomic(): 1, irqs_disabled(): 1, pid: 2276, name: auditd
>> [   37.438497] 1 lock held by auditd/2276:
>> [   37.438507]  #0:  (audit_cmd_mutex){+.+.+.}, at: [<ffffffff8113a63f>] audit_receive+0x1f/0xa0
>> [   37.438507] irq event stamp: 1689
>> [   37.438511] hardirqs last  enabled at (1689): [<ffffffff810e9a96>] vprintk_emit+0x236/0x620
>> [   37.438513] hardirqs last disabled at (1688): [<ffffffff810e9934>] vprintk_emit+0xd4/0x620
>> [   37.438518] softirqs last  enabled at (1652): [<ffffffff81753898>] netlink_poll+0x138/0x1c0
>> [   37.438520] softirqs last disabled at (1650): [<ffffffff81753857>] netlink_poll+0xf7/0x1c0
>> [   37.438522] CPU: 7 PID: 2276 Comm: auditd Not tainted 4.4.0-rc5+wip-xeon+debug #rc5+wip
>> [   37.438523] Hardware name: Dell Inc. Precision WorkStation T5400  /0RW203, BIOS A11 04/30/2012
>> [   37.438526]  ffffffff81ce5cc8 ffff8802a87c3590 ffffffff813fb6c5 ffff8802ac768000
>> [   37.438528]  ffff8802a87c35b8 ffffffff810a6fb9 ffffffff81ce5cc8 0000000000000507
>> [   37.438530]  0000000000000000 ffff8802a87c35e0 ffffffff810a70b9 00000000024080c0
>> [   37.438531] Call Trace:
>> [   37.438535]  [<ffffffff813fb6c5>] dump_stack+0x4e/0x79
>> [   37.438538]  [<ffffffff810a6fb9>] ___might_sleep+0x149/0x200
>> [   37.438540]  [<ffffffff810a70b9>] __might_sleep+0x49/0x80
>> [   37.438544]  [<ffffffff81202dfd>] kmem_cache_alloc_trace+0x20d/0x2e0
>> [   37.438600]  [<ffffffffa0272e9b>] ? nouveau_fence_new+0x3b/0x90 [nouveau]
>> [   37.438624]  [<ffffffffa0272e9b>] nouveau_fence_new+0x3b/0x90 [nouveau]
>> [   37.438649]  [<ffffffffa02707b2>] nouveau_channel_idle+0x42/0xb0 [nouveau]
>> [   37.438673]  [<ffffffffa026bb3f>] nouveau_fbcon_sync+0x7f/0xb0 [nouveau]
>> [   37.438677]  [<ffffffff8148998a>] cfb_imageblit+0x9a/0x4d0
>> [   37.438681]  [<ffffffff810d22ef>] ? trace_hardirqs_off_caller+0x1f/0xc0
>> [   37.438693]  [<ffffffffa013d30e>] drm_fb_helper_cfb_imageblit+0xe/0x10 [drm_kms_helper]
>> [   37.438717]  [<ffffffffa026bbc1>] nouveau_fbcon_imageblit+0x51/0xd0 [nouveau]
>> [   37.438719]  [<ffffffff8147c02c>] bit_putcs+0x2dc/0x530
>> [   37.438721]  [<ffffffff810d239d>] ? trace_hardirqs_off+0xd/0x10
>> [   37.438725]  [<ffffffff81476144>] ? get_color.isra.15+0x34/0x130
>> [   37.438727]  [<ffffffff81477278>] fbcon_putcs+0x128/0x160
>> [   37.438728]  [<ffffffff8147bd50>] ? bit_cursor+0x5e0/0x5e0
>> [   37.438730]  [<ffffffff8147756b>] fbcon_redraw.isra.25+0x16b/0x1d0
>> [   37.438731]  [<ffffffff8147894a>] fbcon_scroll+0x1ea/0xce0
>> [   37.438734]  [<ffffffff815112ca>] scrup+0x14a/0x160
>> [   37.438736]  [<ffffffff81511360>] lf+0x80/0x90
>> [   37.438737]  [<ffffffff81511617>] vt_console_print+0x2a7/0x3e0
>> [   37.438739]  [<ffffffff810e89c4>] call_console_drivers.constprop.24+0x144/0x1d0
>> [   37.438741]  [<ffffffff810e9783>] console_unlock+0x463/0x540
>> [   37.438742]  [<ffffffff810e9bba>] vprintk_emit+0x35a/0x620
>> [   37.438744]  [<ffffffff810e9fd9>] vprintk_default+0x29/0x40
>> [   37.438748]  [<ffffffff8119f71a>] printk+0x4d/0x4f
>> [   37.438750]  [<ffffffff81137ad2>] audit_printk_skb+0x62/0x70
>> [   37.438751]  [<ffffffff81137e84>] audit_log_end+0x1d4/0x2d0
>> [   37.438752]  [<ffffffff81137ce0>] ? audit_log_end+0x30/0x2d0
>> [   37.438754]  [<ffffffff81139059>] audit_log_config_change+0x89/0xa0
>> [   37.438756]  [<ffffffff8113a4ca>] audit_receive_msg+0xa5a/0xbb0
>> [   37.438759]  [<ffffffff818481bd>] ? mutex_lock_nested+0x2ed/0x450
>> [   37.438761]  [<ffffffff8113a63f>] ? audit_receive+0x1f/0xa0
>> [   37.438762]  [<ffffffff8113a63f>] ? audit_receive+0x1f/0xa0
>> [   37.438764]  [<ffffffff8113a672>] audit_receive+0x52/0xa0
>> [   37.438766]  [<ffffffff81755652>] netlink_unicast+0xf2/0x1c0
>> [   37.438767]  [<ffffffff81755b07>] netlink_sendmsg+0x3e7/0x620
>> [   37.438771]  [<ffffffff816ff4e8>] sock_sendmsg+0x38/0x50
>> [   37.438772]  [<ffffffff816ff946>] SYSC_sendto+0xf6/0x170
>> [   37.438775]  [<ffffffff8119db8d>] ? context_tracking_exit+0x1d/0x30
>> [   37.438778]  [<ffffffff8100367f>] ? enter_from_user_mode+0x1f/0x50
>> [   37.438780]  [<ffffffff8100377b>] ? syscall_trace_enter_phase1+0xcb/0x130
>> [   37.438781]  [<ffffffff81003017>] ? trace_hardirqs_on_thunk+0x17/0x19
>> [   37.438784]  [<ffffffff8170079e>] SyS_sendto+0xe/0x10
>> [   37.438786]  [<ffffffff8184be36>] entry_SYSCALL_64_fastpath+0x16/0x7a
>>
> 



More information about the dri-devel mailing list