[Nouveau] Nouveau soft lockup after switcheroo'd...

Daniel J Blueman daniel at quora.org
Mon Oct 29 07:09:07 PDT 2012


On 25 October 2012 02:07, Marcin Slusarz <marcin.slusarz at gmail.com> wrote:
> On Wed, Oct 24, 2012 at 01:54:43PM +0800, Daniel J Blueman wrote:
>> On 13 October 2012 15:12, Daniel J Blueman <daniel at quora.org> wrote:
[...]
>> echo IGD >/sys/kernel/debug/vgaswitcheroo/switch
>> echo OFF >/sys/kernel/debug/vgaswitcheroo/switch
>>
>> after boot+40s:
>>
>> BUG: soft lockup - CPU#0 stuck for 22s! [Xorg:1703]
[...]\
>>  [<ffffffffa037c538>] nv04_timer_read+0x28/0x70 [nouveau]
>>  [<ffffffffa037bfec>] nouveau_timer_wait_eq+0x7c/0xe0 [nouveau]
>>  [<ffffffffa03f4f4e>] nvd0_sor_dpms+0xde/0x1a0 [nouveau]
>>  [<ffffffff813871d9>] ? fb_set_var+0xe9/0x3a0
>>  [<ffffffff811554a9>] ? __pte_alloc+0xa9/0x160
>>  [<ffffffffa03f4e70>] ? nvd0_sor_dp_link_set+0x2c0/0x2c0 [nouveau]
>>  [<ffffffffa00b2a5c>] drm_helper_connector_dpms+0xbc/0x100 [drm_kms_helper]
>>  [<ffffffffa00b1665>] drm_fb_helper_dpms.isra.13+0xa5/0xf0 [drm_kms_helper]
>>  [<ffffffffa00b16f9>] drm_fb_helper_blank+0x49/0x80 [drm_kms_helper]
>>  [<ffffffff81386e16>] fb_blank+0x56/0xc0
>>  [<ffffffff813887bb>] do_fb_ioctl+0x59b/0x5f0
>>  [<ffffffff81152883>] ? vma_interval_tree_insert+0x83/0x90
>>  [<ffffffff81388af5>] fb_ioctl+0x45/0x50
>>  [<ffffffff8119adda>] do_vfs_ioctl+0x8a/0x340
>>  [<ffffffff8119b121>] sys_ioctl+0x91/0xb0
>>  [<ffffffff81189862>] ? sys_read+0x52/0xa0

> In case it's not obvious: Xorg tries to blank monitor connected to nvidia
> card, but hangs because card is already powered down.
>
> Did it ever work? If yes, can you bisect it?
> Does it work if you power down nvidia card while X is not running?

Thanks for your reply Marcin! I wasn't able to boot kernels earlier
than 3.6 on this Macbook Pro retina due to various issues, and it
occurs on kernels between and including 3.6 and 3.7-rc3.

As we see read being called, I've taken the lsof output [1].

Should the DPMS functions be deregistered prior the hardware being
placed in D3, or is it more that the functions should check if the
card was put into D3 and just return?

Thanks,
  Daniel

--- [1]

# lsof -p 2064
[...]
Xorg    2064 root    0w      REG                8,2     7492
265392 /var/log/Xorg.failsafe.log
Xorg    2064 root    1u     IPv6              11902      0t0
TCP *:x11 (LISTEN)
Xorg    2064 root    2u      CHR              136,1      0t0
4 /dev/pts/1
Xorg    2064 root    3u     IPv4              11903      0t0
TCP *:x11 (LISTEN)
Xorg    2064 root    4u     unix 0xffff880261904780      0t0
11904 @/tmp/.X11-unix/X0
Xorg    2064 root    5u     unix 0xffff880261900d00      0t0
11905 /tmp/.X11-unix/X0
Xorg    2064 root    6r      REG                8,2    31246
661523 /usr/lib/xorg/protocol.txt
Xorg    2064 root    7u  netlink                         0t0
11908 KOBJECT_UEVENT
Xorg    2064 root    8w      REG                0,3        0
4026531957 /proc/mtrr
Xorg    2064 root    9w      REG                0,3        0
4026531957 /proc/mtrr
Xorg    2064 root   10u     unix 0xffff880261907500      0t0      11909 socket
Xorg    2064 root   11u      CHR                4,8      0t0
1051 /dev/tty8
Xorg    2064 root   12u      CHR              10,63      0t0
1026 /dev/vga_arbiter
Xorg    2064 root   13u      CHR               29,0      0t0      10527 /dev/fb0
-- 
Daniel J Blueman


More information about the Nouveau mailing list