Bug 75447 - [NVA0] Secondary gpu is not enabled if nouveau is loaded from initrd/initramfs
Summary: [NVA0] Secondary gpu is not enabled if nouveau is loaded from initrd/initramfs
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-24 14:46 UTC by Alberto
Modified: 2014-05-06 19:11 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Working dmesg (nouveau not in initramfs) (64.34 KB, text/plain)
2014-02-24 14:46 UTC, Alberto
no flags Details
Working Xorg.0.log (nouveau not in initramfs) (87.67 KB, text/plain)
2014-02-24 14:47 UTC, Alberto
no flags Details
NOT working dmesg (nouveau embedded in initramfs) (65.68 KB, text/plain)
2014-02-24 14:48 UTC, Alberto
no flags Details
NOT working Xorg.0.log (nouveau embedded in initramfs) (52.83 KB, text/plain)
2014-02-24 14:49 UTC, Alberto
no flags Details
Working dmesg (kernel 3.13, nouveau not in initramfs) (63.78 KB, text/plain)
2014-02-24 15:42 UTC, Alberto
no flags Details
NOT working dmesg (kernel 3.13. nouveau embedded in initramfs) (63.39 KB, text/plain)
2014-02-24 15:43 UTC, Alberto
no flags Details

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.