Bug 75447

Summary: [NVA0] Secondary gpu is not enabled if nouveau is loaded from initrd/initramfs
Product: xorg Reporter: Alberto <support.intranet>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Working dmesg (nouveau not in initramfs)
none
Working Xorg.0.log (nouveau not in initramfs)
none
NOT working dmesg (nouveau embedded in initramfs)
none
NOT working Xorg.0.log (nouveau embedded in initramfs)
none
Working dmesg (kernel 3.13, nouveau not in initramfs)
none
NOT working dmesg (kernel 3.13. nouveau embedded in initramfs) none

Description Alberto 2014-02-24 14:46:20 UTC
Created attachment 94656 [details]
Working dmesg (nouveau not in initramfs)

When the nouveau kernel module is embedded in the initramfs (as in ubuntu 14.04), Xorg fails to start on the secondary GPU. The DRM appears to correctly initialize both cards (see attahced logs), but the monitor connected to the secondary one never comes up. Apart from removing the module from the initramfs, a workaround is to stop X and execute at the terminal:

echo 0 > /sys/class/vtconsole/vtcon1/bind
rmmod nouveau
modprobe nouveau

and restart X.
Comment 1 Alberto 2014-02-24 14:47:22 UTC
Created attachment 94657 [details]
Working Xorg.0.log (nouveau not in initramfs)
Comment 2 Alberto 2014-02-24 14:48:21 UTC
Created attachment 94658 [details]
NOT working dmesg (nouveau embedded in initramfs)
Comment 3 Alberto 2014-02-24 14:49:44 UTC
Created attachment 94659 [details]
NOT working Xorg.0.log (nouveau embedded in initramfs)

Note: tested with both xorg 1.14 and 1.15, exactly the same results
Comment 4 Emil Velikov 2014-02-24 15:19:28 UTC
Hi Alberto

The logs you've attached are from two different kernels.
Can you able to attach the dmesg output of the same kernel, there only nouveau's build state (module vs built-in) varies ?
Comment 5 Alberto 2014-02-24 15:42:21 UTC
Created attachment 94664 [details]
Working dmesg (kernel 3.13, nouveau not in initramfs)
Comment 6 Alberto 2014-02-24 15:43:04 UTC
Created attachment 94665 [details]
NOT working dmesg (kernel 3.13. nouveau embedded in initramfs)
Comment 7 Alberto 2014-02-24 15:45:11 UTC
Hi Emil

I've attached two new dmesg from the same 3.13 kernel. Note that nouveau is always built as a module, what causes the problem is having it embedded into the initramfs

Thanks
Comment 8 Emil Velikov 2014-02-24 16:29:37 UTC
(In reply to comment #7)
> Hi Emil
> 
> I've attached two new dmesg from the same 3.13 kernel. Note that nouveau is
> always built as a module, what causes the problem is having it embedded into
> the initramfs
> 
> Thanks
Ouch thanks for point it out. Seems like I was day dreaming there.

Afaics there are only differences between the two
 - In the "good" case, nouveau manages to load the adt7473 i2c sensor. Not related to your problem, but might indicate why you do not see the temperature reading in "sensors"
 - The runtime pm tries to suspend one of the cards (assuming the latter) where it should not have. Most likely the real problem, disable using "nouveau.runpm=0" in your kernel command line (i.e grub)
Comment 9 Alberto 2014-02-24 16:41:44 UTC
Thanks! I can confirm that booting with nouveau.runpm=0 makes it work even if nouveau is embedded in the initramfs
Comment 10 Ilia Mirkin 2014-05-06 19:11:35 UTC
This should be fixed in the latest kernels, starting with 3.14.

I believe this is the commit that fixed it: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=adbbdbac04f093c0abf946b1e93e4e5291808491

Feel free to re-open if the issue persists.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.