Bug 25952

Summary: GeForce 9800 GTX - nouveau_init takes ~ 1 minute to complete
Product: xorg Reporter: bugs.freedesktop.org
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED NOTOURBUG QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: high    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
complete kernel boot-log with initcall_debug enabled
none
complete kernel boot-log with initcall_debug enabled WITH FIRMWARE none

Description bugs.freedesktop.org 2010-01-08 12:04:48 UTC
Created attachment 32533 [details]
complete kernel boot-log with initcall_debug enabled

[2010-01-01 13:52] upgraded kernel26 (2.6.31.6-1 -> 2.6.32.2-2)
[2010-01-01 13:52] upgraded nouveau-drm (0.0.15_20091120-1 -> 0.0.15_20091220-1)
[2010-01-01 13:52] upgraded xf86-video-nouveau (0.0.10_git20091101-1 -> 0.0.10_git20091221-1)

My computer runs ArchLinux, and since I upgraded the above packages; my booting process takes about a minute longer to complete. This seems to be caused by nouveau_init; which hangs the complete system for about a minute. An excerpt from the attached logfile:

calling  nouveau_init+0x0/0x4c [nouveau] @ 42
nouveau 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
nouveau 0000:01:00.0: setting latency timer to 64
[drm] nouveau 0000:01:00.0: Detected an NV50 generation card (0x092900a2)
[drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[drm] nouveau 0000:01:00.0: ... appears to be valid
[drm] nouveau 0000:01:00.0: BIT BIOS found
[drm] nouveau 0000:01:00.0: Bios version 62.92.5d.00
[drm] nouveau 0000:01:00.0: TMDS table revision 2.0 not currently supported
[drm] nouveau 0000:01:00.0: Found Display Configuration Block version 4.0
[drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x40 5 16 4
[drm] nouveau 0000:01:00.0:   0: 0x00001030: type 0x30 idx 0 tag 0x07
[drm] nouveau 0000:01:00.0:   1: 0x00002130: type 0x30 idx 1 tag 0x08
[drm] nouveau 0000:01:00.0:   2: 0x00000210: type 0x10 idx 2 tag 0xff
[drm] nouveau 0000:01:00.0:   3: 0x00000211: type 0x11 idx 2 tag 0xff
[drm] nouveau 0000:01:00.0:   4: 0x00000213: type 0x13 idx 2 tag 0xff
[drm] nouveau 0000:01:00.0: Raw DCB entry 0: 02000300 00000028
[drm] nouveau 0000:01:00.0: Raw DCB entry 1: 01000302 00020030
[drm] nouveau 0000:01:00.0: Raw DCB entry 2: 04011310 00000028
[drm] nouveau 0000:01:00.0: Raw DCB entry 3: 02011312 00020030
[drm] nouveau 0000:01:00.0: Raw DCB entry 4: 010223f1 00c0c080
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xC718
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xCC63
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xDA58
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xDB56
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xDDBE
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xDE23
[drm] nouveau 0000:01:00.0: 0xDE23: Condition still not met after 20ms, skipping following opcodes
[drm] nouveau 0000:01:00.0: 0xB6C4: parsing output script 0
[drm] nouveau 0000:01:00.0: 0xB6C4: parsing output script 0
[drm] nouveau 0000:01:00.0: 0xA2EE: parsing output script 0
[TTM] Zone  kernel: Available graphics memory: 2028336 kiB.
[drm] nouveau 0000:01:00.0: 512 MiB VRAM
[drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
mtrr: type mismatch for c0000000,20000000 old: write-back new: write-combining
nouveau 0000:01:00.0: firmware: requesting nouveau/nv92.ctxprog
[drm] nouveau 0000:01:00.0: No ctxprog for NV92
[drm] nouveau 0000:01:00.0: Detected a DAC output
[drm] nouveau 0000:01:00.0: Detected a TMDS output
[drm] nouveau 0000:01:00.0: Detected a DAC output
[drm] nouveau 0000:01:00.0: Detected a TMDS output
[drm] nouveau 0000:01:00.0: DCB encoder 1 unknown
[drm] nouveau 0000:01:00.0: Detected a DVI-I connector
[drm] nouveau 0000:01:00.0: Detected a DVI-I connector
[drm] nouveau 0000:01:00.0: allocated 1680x1050 fb: 0x40180000, bo ffff88013e847800
[drm] TMDS-8: set mode 1680x1050 19
[drm] nouveau 0000:01:00.0: 0xB6C8: parsing output script 1
[drm] nouveau 0000:01:00.0: 0xB6C9: parsing output script 2
[drm] nouveau 0000:01:00.0: 0xB50F: parsing clock script 0
Console: switching to colour frame buffer device 210x65
fb0: nouveaufb frame buffer device
registered panic notifier
[drm] Initialized nouveau 0.0.15 20090420 for 0000:01:00.0 on minor 0
initcall nouveau_init+0x0/0x4c [nouveau] returned 0 after 59002907 usecs

I couldn't find a bug describing this problem.
Comment 1 Xavier 2010-01-08 12:16:59 UTC
nouveau 0000:01:00.0: firmware: requesting nouveau/nv92.ctxprog
[drm] nouveau 0000:01:00.0: No ctxprog for NV92

You need to install the firmware : pacman -S nouveau-firmware.
pacman should have informed you during installation as nouveau-firmware is an optdepend.

I don't know why there is a 1 minute delay though, but without firmware, you won't have any accel.
Comment 2 bugs.freedesktop.org 2010-01-08 12:31:50 UTC
Created attachment 32534 [details]
 complete kernel boot-log with initcall_debug enabled   WITH FIRMWARE

This is the same logfile, but with the mentioned nouveau-firmware package installed
Comment 3 bugs.freedesktop.org 2010-01-08 12:32:08 UTC
Thanks for the very quick reply. I have installed the package (nouveau-firmware 20091212-2) you mention and rebuild my initcpio; but unfortunately it does not fix the problem. The line you mention is still in the log:

nouveau 0000:01:00.0: firmware: requesting nouveau/nv92.ctxprog
[drm] nouveau 0000:01:00.0: No ctxprog for NV92

Is there any way I can help debugging this? I have attached a new boot-log but I assume there is nothing new in there
Comment 4 Xavier 2010-01-08 13:23:11 UTC
I already warned about using initcpio here :
http://wiki.archlinux.org/index.php/Nouveau#Early_start

Either don't use it, or make sure the firmware is included there too.
But if I understood correctly, radeon arch users have problems even when the firmware is included in the initrd. So if you have the same problem with nouveau, just don't use an initrd. I am very happy with the late start ;)
Comment 5 Dmitriy Lock 2010-01-09 03:09:50 UTC
Hi all!
I'm using Archlinux too, and I can confirm this. But it's Arch' problem - all NV firmware files installs in /lib/firmware, not /lib/firmware/nouveau, as it expected by nouveau kernel module. So, u can copy all nv* files from /lib/firmware to /lib/firmware/nouveau, and it must work.
Comment 6 Xavier 2010-01-09 03:22:19 UTC
I was not aware of that problem, but it has been fixed 10 days ago :
http://repos.archlinux.org/wsvn/packages/nouveau-firmware/repos/extra-any/PKGBUILD?op=diff&rev=0
You need revision 2 (20091212-2)
Comment 7 bugs.freedesktop.org 2010-01-09 04:10:56 UTC
nv92.ctx{prog,val} exist in /lib/firmware/nouveau/; which is also included in my initcpio:

cat /boot/kernel26.img | gunzip | cpio -t | grep nouveau

/lib/firmware/nouveau
/lib/firmware/nouveau/nvac.ctxvals
/lib/firmware/nouveau/nvac.ctxprog
/lib/firmware/nouveau/nvaa.ctxvals
/lib/firmware/nouveau/nvaa.ctxprog
/lib/firmware/nouveau/nva8.ctxvals
/lib/firmware/nouveau/nva8.ctxprog
/lib/firmware/nouveau/nva5.ctxvals
/lib/firmware/nouveau/nva5.ctxprog
/lib/firmware/nouveau/nva0.ctxvals
/lib/firmware/nouveau/nva0.ctxprog
/lib/firmware/nouveau/nv98.ctxvals
/lib/firmware/nouveau/nv98.ctxprog
/lib/firmware/nouveau/nv96.ctxvals
/lib/firmware/nouveau/nv96.ctxprog
/lib/firmware/nouveau/nv94.ctxvals
/lib/firmware/nouveau/nv94.ctxprog
/lib/firmware/nouveau/nv92.ctxvals
/lib/firmware/nouveau/nv92.ctxprog
/lib/firmware/nouveau/nv86.ctxvals
/lib/firmware/nouveau/nv86.ctxprog
/lib/firmware/nouveau/nv84.ctxvals
/lib/firmware/nouveau/nv84.ctxprog
/lib/firmware/nouveau/nv50.ctxvals
/lib/firmware/nouveau/nv50.ctxprog
/lib/modules/2.6.32-ARCH/kernel/drivers/video/nouveau.ko

So why does the module not find it? And if the problem really is caused by this, maybe the bug should be moved to the archlinux tracker?
Comment 8 Xavier 2010-01-09 05:03:14 UTC
(In reply to comment #7)
> So why does the module not find it? And if the problem really is caused by
> this, maybe the bug should be moved to the archlinux tracker?
> 

It is indeed a archlinux bug. As I already said many times, just don't use initrd to workaround it for now.

btw you should always check out archlinux news, the issue is mentioned there :
http://www.archlinux.org/news/477/
Comment 9 bugs.freedesktop.org 2010-01-09 05:05:45 UTC
okay, thanks

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.