How I upgraded a NVIDIA driver

	Recently (July 2003) NVIDIA released an upgrade to their FreeBSD
	video driver. In going from their 1.0-3203 to 1.0-4365 kernel
	module driver I had no amount of problems and headaches. I had
	hoped this would have been a simple install and at most reboot
	but as fate would have it was not to be so easy.

	As of this writing, 14 July 2003, the 4365 driver has been updated
	in the ports tree (/usr/ports/x11/nvidia-driver) so you might be
	able to simply build it without modifications. My case was not so

	I downloaded the source before the port was available. After 
	installing the new kernel module X would panic the kernel and 
	I was forced to reboot. No amount of trickery improved this 
	situation. That began my research and I soon discovered I was
	not alone.

	After a good deal of reading I decided a Nuke And Pave approach
	was probably my best hope but I really did not want to reinstall
	my workstation. Instead a tactical nuke worked out for me.

	I got all my ducks in a row and decided to do some spring cleaning.
	I cvsup'd my source and ports trees, did a buildworld, build kernel,
	install kernel, and install world.

	Next I removed X completely in prep for a upgrade. I had wanted
	themeable cursors, total eyecandy, so 4.3.0 was where its at.
	Once that upgrade was complete I decided to try out the nvidia
	driver. Panic city.

	More reading, more research, days passed.

	Finally based on others finding I decided to do my homework and
	retrace my steps. I had tried disabling the AGP kernel module
	load several times. When I didnt load it I would get driver errors
	with the kernel module for the nvidia driver. Hrm... did I compile
	it to use the freebsd agp module? or did the driver compile its
	own agp module which needs loading?

	I can only half answer this. I have a PCI card, not AGP. I disabled
	the agp driver, recompiled the nvidia driver from ports after
	removing the nvidia stuff completely and wow, the driver loads and
	X starts!

	Apparently something changed in the driver to not need the AGP
	driver from FBSD to be loaded. This was required in the previous
	version apparently. So a summary of steps is necessary but this
	might not work for you.

		- commented out in /boot/loader.conf agp_load="YES".
		- unloaded agp and nvidia kernel modules
		  $ kldunload nvidia && kldunload agp
		- pkg_delete any previous driver cruft
		- rm /dev/nvidia*
		- cd /usr/ports/x11/nvidia-driver
		- make deinstall
		- make clean
		- vi Makefile
		- write out changes
		- make && make install
		- kldload nvidia
		- try it out! (startx)

	This process worked for me™ but that does not mean it
	will for you. If the previous version works try playing with
	the AGP kernel module, especially if you do not have a AGP card.
	I'm still not sure why this works but it did for me.

Copyright © 2003,2004 - Steven St.Laurent -