Bug 116915

Summary: nvidia 1.0-7174 does not work since RC1 anymore, yet needed for GeForce 2 and below
Product: [openSUSE] SUSE LINUX 10.0 Reporter: Forgotten User --EoyBps8f <forgotten_--EoyBps8f>
Component: X11 3rd PartyAssignee: Stefan Dirsch <sndirsch>
Status: RESOLVED FIXED QA Contact: Stefan Dirsch <sndirsch>
Severity: Normal    
Priority: P2 - High CC: cwh, drahn, hare, msievers
Version: RC 1   
Target Milestone: ---   
Hardware: Other   
OS: All   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: Xorg-log after re-boot (driver not working)
SaX2-log after re-booting (driver not working)
Xorg-log after re-installing driver (working)
SaX2-log after re-installing the driver (working)
Output of nvidia-bug-report for both machines; before and after reboot.

Description Forgotten User --EoyBps8f 2005-09-14 06:06:54 UTC
Because of using a GeForce 2 GTS I have to use the nvidia-driver 1.0-7174, 
which is the last one that supports legacy cards. 
There was/is absolutely no problem in using it with beta4 or SuSE 9.3, yet for 
RC1 it installs sucessfully, works right after installation, but fails after 
the first re-boot. 
One has to run the installer again, to get it working - till the next re-boot. 
 
I am not sure what information is needed, so I attach the X.org-log, as well 
as Sax2-log. The _1 extensions are the logs after re-installing the driver and 
it working correctly.
Comment 1 Forgotten User --EoyBps8f 2005-09-14 06:07:57 UTC
Created attachment 49873 [details]
Xorg-log after re-boot (driver not working)
Comment 2 Forgotten User --EoyBps8f 2005-09-14 06:08:35 UTC
Created attachment 49874 [details]
SaX2-log after re-booting (driver not working)
Comment 3 Forgotten User --EoyBps8f 2005-09-14 06:09:32 UTC
Created attachment 49875 [details]
Xorg-log after re-installing driver (working)
Comment 4 Forgotten User --EoyBps8f 2005-09-14 06:10:25 UTC
Created attachment 49876 [details]
SaX2-log after re-installing the driver (working)
Comment 5 Christopher Hofmann 2005-09-14 09:45:16 UTC
For completeness: I can reproduce this on 2 machines: One with a TNT2 graphics 
card and another one with a Geforce2 one. Both machines have via-chipsets, by 
the way. 
 
I tried to boot into runlevel 3 to avoid via_agp being loaded automatically: 
No success, because via_agp and agpgart already were loaded. 
 
I blacklisted via_agp in /etc/modprobe.conf.local and added 'Option "NvAGP" 
"1"' to xorg.conf. After rebooting X didn't work as well. Re-runnling 
nvidia-installer fixed the problem again. 
 
So I think it doesn't depend on agp modules. 
Comment 6 Christopher Hofmann 2005-09-14 15:39:49 UTC
Created attachment 49918 [details]
Output of nvidia-bug-report for both machines; before and after reboot.

Contains:
GF2-nvidia-bug-report-def.log
GF2-nvidia-bug-report-working.log
(from the machine with the Geforce2 card)

TNT-nvidia-bug-report-def.log
TNT-nvidia-bug-report-working.log
(from the machine with the TNT2 card)
Comment 7 Forgotten User ZhJd0F0L3x 2005-09-18 09:20:13 UTC
i see the exact same thing with a TNT2 - i even hacked a small init script that
does fake the make process for the installer, apparently it is enough to let the
installer binary run, you do not actually install a new module or call ldconfig
or depmod (my script does not do all this).
I am using the latest 9.3 NVidia driver (7167?)
Comment 8 Stefan Dirsch 2005-09-18 09:35:08 UTC
Good catch, Daniel! The new driver creates the devices on demand. 1.0-7174 
does not. 
 
Daniel Rahn <Daniel.Rahn@novell.com>:    
Hm, der Bug klingt nach 'udev legt /dev/nvidia* nicht an'.   
   
Auf meiner Workstation laeuft 1.0-7174 klaglos, auch nach einem Reboot   
(da ist eine Quadro2 Pro drin).   
   
Allerdings lasse ich die Devices von udev statisch anlegen. Damit laeuft   
dann aber auch alles prima.   
   
Comment 9 Stefan Dirsch 2005-09-18 09:39:44 UTC
> Allerdings lasse ich die Devices von udev statisch anlegen. Damit laeuft     
> dann aber auch alles prima.     
Daniel, could you please comment how you do this exactly? I'll add this  
information then to my nvidia Installer HOWTO. 
 
http://www.suse.de/~sndirsch/nvidia-installer-HOWTO.html 
http://www.suse.de/~sndirsch/nvidia-installer-HOWTO.html#19 
  
Comment 10 Stefan Dirsch 2005-09-18 09:41:15 UTC
In /etc/udev/* gibts eine Datei static-devices.* ... da traegst Du 
/dev/nvidiactl und /dev/nvidia* mit den korrekten Werten ein. 
Beim naechsten Reboot legt udev die Devicenodes dann an. 
 
Comment 11 Daniel Rahn 2005-09-18 09:44:07 UTC
The file is called /etc/udev/static_devices.txt

Enter these lines:

nvidiactl c 195 255 666
nvidia0 c 195 0 666
nvidia1 c 195 1 666
nvidia2 c 195 2 666
nvidia3 c 195 3 666
nvidia4 c 195 4 666


For only one card, nvidiactl and nvidia0 should suffice.
Comment 12 Daniel Rahn 2005-09-18 09:51:16 UTC
Now if somebody could tell me how I can urge udev to create these devices for
group video, the modes could be changed to be more restrictive.
Comment 13 Stefan Dirsch 2005-09-18 09:53:16 UTC
This should do the trick:  
  
cat > /etc/udev/static_devices.txt << EOF  
nvidia c 195 0 666  
nvidia c 195 1 666  
nvidia c 195 2 666  
nvidia c 195 3 666  
nvidia c 195 4 666  
nvidia c 195 5 666  
nvidia c 195 6 666  
nvidia c 195 7 666  
nvidiactl c 195 255 666  
EOF 
Comment 14 Stefan Dirsch 2005-09-18 09:59:54 UTC
Sorry, my comment #13 is more a less a duplicate of #11.    
    
> Now if somebody could tell me how I can urge udev to create these devices   
> for group video, the modes could be changed to be more restrictive.   
Maybe this already happens? 
 
/etc/udev/rules.d/50-udev.rules: 
[...] 
KERNEL=="nvidia*",              NAME="%k", GROUP="video"  
KERNEL=="nvidiactl*",           NAME="%k", GROUP="video"  
  
Hannes, Kay. Could you please comment on comment #12? 
Comment 15 Daniel Rahn 2005-09-18 10:17:03 UTC
Well, no. There seems to be more necessary than the rules from comment #13:

dany@choquet:~ $ l /dev/nvidia*
crw-rw-rw-  1 root root 195,   0 2005-09-15 08:24 /dev/nvidia0
crw-rw-rw-  1 root root 195,   1 2005-09-15 08:24 /dev/nvidia1
crw-rw-rw-  1 root root 195,   2 2005-09-15 08:24 /dev/nvidia2
crw-rw-rw-  1 root root 195,   3 2005-09-15 08:24 /dev/nvidia3
crw-rw-rw-  1 root root 195,   4 2005-09-15 08:24 /dev/nvidia4
crw-rw-rw-  1 root root 195, 255 2005-09-15 08:24 /dev/nvidiactl

So the static devices are not updated by the rules.

Let's have Hannes or Kay comment.
Comment 16 Kay Sievers 2005-09-18 12:50:55 UTC
The static_devices.txt does not support owner/group now, we need to add this.

We should probably add an init script that loads the module and creates the nodes
for every card found.

(We replaced the kernel sysfs interfaces some while ago with a GPL only
version, nvidia was forced to remove kernel udev support from all its drivers.
I remember some mails on the kernel list, that nvidia wanted to add a init
script to the driver package to create the nodes.)

Comment 17 Stefan Dirsch 2005-09-18 13:20:41 UTC
Kay, the current nvidia driver (1.0-7676) no longer suffers from this problem.  
It creates the device on demand. There's no init script required. 
  
We're talking about an older nvidia driver release (1.0-7174) , which needs to  
be used for some legacy nvidia chips. I'll add the information about the 
static udev configuration to my nvidia installer HOWTO. 
Comment 18 Stefan Dirsch 2005-09-18 15:05:39 UTC
fixed documentation in nvidia installer HOWTO. 
  
  
Comment 19 Forgotten User --EoyBps8f 2005-11-12 08:53:31 UTC
The HOWTO states:
Since (open)SuSE Linux 10.0 you need to add the following entries to
/etc/udev/static_devices.txt:

nvidia c 195 0 666
...
nvidiactl c 195 255 666

And remove the nvidia file that is read by modprobe.

That does not solve the issue for me. After reboot, X does not start. However, if I put makedevices.sh from the nvidia installer into boot.local or execute it after X has failed and then init 5 again it does work.

So either my computer is reluctant to use the static_devices.txt, or adding the entries does not solve the issue. If the latter is correct, this "solution" should not be mentioned in the HOWTO and be replaced by a hint to extract the nvidia-driver with --extract-only, copy the makedevices.sh from extracted-NVIDIA-dir/usr/src/nv to /usr/local and put /usr/local/makedevices.sh into /etc/init.d/boot.local.

Or, as I stated in another bug, introduce a second YOU script for users with legacy cards to not force them to do all that just to get their 3D drivers to work with SuSE 10.
Comment 20 Daniel Rahn 2005-11-15 22:19:45 UTC
Could you paste the output of 'ls -al /dev/nvidia*' when the system has booted without calling makedevices.sh here? Thanks.