[BUG] Latest stable FreeBSD driver causes compile errors with graphics/mesa-demos after Xorg upgrade

Hello,

First off, I want to say thank you for fixing a number of stability issues between 177.80 and 180.22 – I can see a big difference in functionality and performance between the 2 driver versions.

I manually updated the x11/nvidia-driver to latest stable (180.22), and I’m running into a compile error when updating graphics/mesa-demos (Xorg was recently updated from 7.3 to 7.4 so I have to recompile it):

/usr/bin/ld: warning: libm.so.3, needed by /usr/local/lib/libGL.so, may conflict with libm.so.5

/usr/bin/ld: warning: libc.so.5, needed by /usr/local/lib/libGLcore.so.1, may conflict with libc.so.7

/usr/local/lib/compat/libc.so.5: warning: WARNING!  setkey(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: this program uses gets(), which is unsafe.

/usr/local/lib/compat/libc.so.5: warning: warning: mktemp() possibly used unsafely; consider using mkstemp()

/usr/local/lib/compat/libc.so.5: warning: WARNING!  des_setkey(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: WARNING!  encrypt(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: tmpnam() possibly used unsafely; consider using mkstemp()

/usr/local/lib/compat/libc.so.5: warning: warning: this program uses f_prealloc(), which is not recommended.

/usr/local/lib/compat/libc.so.5: warning: WARNING!  des_cipher(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: tempnam() possibly used unsafely; consider using mkstemp()

cc -I../../include -D_THREAD_SAFE -I/usr/local/include   -I/usr/local/include -O2 -pipe -fno-strict-aliasing -march=prescott -Wall -Wmissing-prototypes -std=c99 -ffast-math -fno-strict-aliasing  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -L/usr/local/lib glthreads.c -L../../lib -lGL  -lm -o glthreads

/usr/bin/ld: warning: libm.so.3, needed by /usr/local/lib/libGL.so, may conflict with libm.so.5

/usr/bin/ld: warning: libc.so.5, needed by /usr/local/lib/libGLcore.so.1, may conflict with libc.so.7

/usr/local/lib/compat/libc.so.5: warning: WARNING!  setkey(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: this program uses gets(), which is unsafe.

/usr/local/lib/compat/libc.so.5: warning: warning: mktemp() possibly used unsafely; consider using mkstemp()

/usr/local/lib/compat/libc.so.5: warning: WARNING!  des_setkey(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: WARNING!  encrypt(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: tmpnam() possibly used unsafely; consider using mkstemp()

/usr/local/lib/compat/libc.so.5: warning: warning: this program uses f_prealloc(), which is not recommended.

/usr/local/lib/compat/libc.so.5: warning: WARNING!  des_cipher(3) not present in the system!

/usr/local/lib/compat/libc.so.5: warning: warning: tempnam() possibly used unsafely; consider using mkstemp()

/var/tmp//ccetQeqk.o(.text+0xaf9): In function `main':

: undefined reference to `pthread_create'

gmake[2]: *** [glthreads] Error 1

gmake[2]: Leaving directory `/usr/ports/graphics/mesa-demos/work/Mesa-7.3/progs/xdemos'

gmake[1]: *** [subdirs] Error 1

gmake[1]: Leaving directory `/usr/ports/graphics/mesa-demos/work/Mesa-7.3/progs'

gmake: *** [default] Error 1

*** Error code 2

Stop in /usr/ports/graphics/mesa-demos.

** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade.95976.0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=mesa-demos-7.0.4 UPGRADE_PORT_VER=7.0.4 make

** Fix the problem and try again.

** Listing the failed packages (-:ignored / *:skipped / !:failed)

		! graphics/mesa-demos (mesa-demos-7.0.4)		(linker error)

Now I know what the issue is (in part):

emulators/compat5x doesn't have -lpthread support in C out of the box, so when it comes down to compiling other programs like mesa-demos that depend upon libGL.so, it's calling up the nVidia version and failing as shown above.

So here are my requests:

- Please update the need for supported libraries from 5.x to 6.x at the very least (7.x would be better, but there are a number of folks still using 6.x); 5.x has been EOL'ed as of last year.

- Please remove the GIANT lock from the driver code because as of 7.0 many improvements have been made to the FreeBSD ULE scheduler where having GIANT locked drivers is now becoming a hinderance, and needs to be taken care of as quickly as possible.

- If at all possible, please don't modify libGL.so and libGLU.so because it creates a maintenance headache, and increases the possibility for serious system regression when upgrading to later versions of X.org, as they may be ABI incompatible.

It would be incredibly nice if you guys could opensource the driver (like Intel) – or at least provide the specs to knowledgeable individuals so they could partly maintain the OS internals (ATI) – instead of forcing the support end on you folks, but I know the business people are the ones that make the calls, not you.

Thanks,

-Garrett

gcooper {at} {SPAMFREE} freebsd {dot} org

[root@orangebox /scratch/ports/x11/nvidia-driver]# uname -a

FreeBSD orangebox.gateway.2wire.net 8.0-CURRENT FreeBSD 8.0-CURRENT #6: Mon Jan 12 21:37:37 PST 2009	 gcooper@orangebox.gateway.2wire.net:/usr/obj/usr/src/sys/ORANGEBOX  i386

[root@orangebox /scratch/ports/x11/nvidia-driver]# dmesg | grep GTS	  

nvidia0: <GeForce 8800 GTS> on vgapci0

[root@orangebox /scratch/ports/x11/nvidia-driver]# grep CPU: /var/log/dmesg.yesterday

CPU: Intel(R) Core(TM)2 Quad CPU	Q9400  @ 2.66GHz (2671.62-MHz 686-class CPU)

Another voice of thanks but from from the other side of FreeBSD as an end user of the nvidia drivers (177.80), for the attention and care you folks have given to it. Kindly consider this a plea for the hit list items Garrett mentions above. They’re all important but closest to my heart are the compat5x->6x rebuild and GIANT lock avoidance items (closest by just a bit)

Howard, Florida

Just for the information of any future BSD visitors to this thread - this forum is focussed on CUDA GPU compute for Linux. No BSD or X11 driver developers from NVIDIA read this, and requests for help or bug reports posted here are going to be futile.