[Midnightbsd-cvs] mports: x11/nvidia-driver: Update nvidia binary driver

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Mar 21 19:26:58 EDT 2008


Log Message:
-----------
Update nvidia binary driver

Modified Files:
--------------
    mports/x11/nvidia-driver:
        Makefile (r1.5 -> r1.6)
        distinfo (r1.3 -> r1.4)
        pkg-plist (r1.2 -> r1.3)
    mports/x11/nvidia-driver/files:
        pkg-message.in (r1.2 -> r1.3)

Removed Files:
-------------
    mports/x11/nvidia-driver/files:
        6113-patch-lib::Makefile
        7667-patch-lib::Makefile
        7667-patch-scripts::setup.sh
        crash-patch-by-zander-1759235

-------------- next part --------------
Index: pkg-plist
===================================================================
RCS file: /home/cvs/mports/x11/nvidia-driver/pkg-plist,v
retrieving revision 1.2
retrieving revision 1.3
diff -L x11/nvidia-driver/pkg-plist -L x11/nvidia-driver/pkg-plist -u -r1.2 -r1.3
--- x11/nvidia-driver/pkg-plist
+++ x11/nvidia-driver/pkg-plist
@@ -1,100 +1,59 @@
 @comment I can't add the below files to the package because pkg_delete
 @comment will complain when removing this package:
- at comment     lib/modules/extensions/XXX-libglx.so.%%XLIBVERSION%%
- at comment     lib/modules/extensions/XXX-libGLcore.so.%%XLIBVERSION%%
- at comment     lib/XXX-libGL.a.%%XLIBVERSION%%
- at comment     lib/XXX-libGL.so.1.%%XLIBVERSION%%
+ at comment     %%MODULESDIR%%/extensions/XXX-libglx.so.%%%%.%%XSERVVERSION%%
+ at comment     %%MODULESDIR%%/extensions/XXX-libGLcore.so.%%%%.%%XSERVVERSION%%
+ at comment     %%MODULESDIR%%/XXX-libwfb.so.%%%%.%%XSERVVERSION%%
+ at comment     lib/XXX-libGL.a.%%%%.%%XLIBVERSION%%
+ at comment     lib/XXX-libGL.so.1.%%%%.%%XLIBVERSION%%
 @comment They are however restored when this package is removed:
- at unexec mv -f %D/lib/modules/extensions/XXX-libglx.so.%%%%.%%XSERVVERSION%% %D/lib/modules/extensions/libglx.so
- at unexec mv -f %D/lib/modules/extensions/XXX-libGLcore.so.%%%%.%%XSERVVERSION%% %D/lib/modules/extensions/libGLcore.so
- at unexec mv -f %D/lib/XXX-libGL.a.%%%%.%%XLIBVERSION%% %D/lib/libGL.a
+%%XORG%%@exec mv -f %D/%%MODULESDIR%%/extensions/libglx.la %D/%%MODULESDIR%%/extensions/XXX-libglx.la.%%%%.%%XSERVVERSION%%
+%%XORG%%@unexec mv -f %D/%%MODULESDIR%%/extensions/XXX-libglx.la.%%%%.%%XSERVVERSION%% %D/%%MODULESDIR%%/extensions/libglx.la
+ at exec mv -f %D/%%MODULESDIR%%/extensions/libglx.so %D/%%MODULESDIR%%/extensions/XXX-libglx.so.%%%%.%%XSERVVERSION%%
+ at unexec mv -f %D/%%MODULESDIR%%/extensions/XXX-libglx.so.%%%%.%%XSERVVERSION%% %D/%%MODULESDIR%%/extensions/libglx.so
+%%XORG%%@exec mv -f %D/%%MODULESDIR%%/extensions/libGLcore.la %D/%%MODULESDIR%%/extensions/XXX-libGLcore.la.%%%%.%%XSERVVERSION%%
+%%XORG%%@unexec mv -f %D/%%MODULESDIR%%/extensions/XXX-libGLcore.la.%%%%.%%XSERVVERSION%% %D/%%MODULESDIR%%/extensions/libGLcore.la
+ at exec mv -f %D/%%MODULESDIR%%/extensions/libGLcore.so %D/%%MODULESDIR%%/extensions/XXX-libGLcore.so.%%%%.%%XSERVVERSION%%
+ at unexec mv -f %D/%%MODULESDIR%%/extensions/XXX-libGLcore.so.%%%%.%%XSERVVERSION%% %D/%%MODULESDIR%%/extensions/libGLcore.so
+%%XFREE86%%@unexec mv -f %D/lib/XXX-libGL.a.%%%%.%%XLIBVERSION%% %D/lib/libGL.a
+ at exec mv -f %D/lib/libGL.so.1 %D/lib/XXX-libGL.so.1.%%%%.%%XLIBVERSION%%
 lib/libGL.so.1
 @unexec mv -f %D/lib/XXX-libGL.so.1.%%%%.%%XLIBVERSION%% %D/lib/libGL.so.1
- at exec ln -sf %D/lib/libGL.so.1 %D/lib/libGL.so
- at comment no rm -f %D/lib/libGL.so because default XFree needs this also
+ at exec ln -sf libGL.so.1 %D/lib/libGL.so
+ at comment No rm -f %D/lib/libGL.so because default XFree needs this also
 lib/libGLcore.so.1
- at exec ln -sf %D/lib/libGLcore.so.1 %D/lib/libGLcore.so
+ at exec ln -sf libGLcore.so.1 %D/lib/libGLcore.so
 @unexec rm -f %D/lib/libGLcore.so
 lib/libXvMCNVIDIA.so.1
- at exec ln -sf %D/lib/libXvMCNVIDIA.so.1 %D/lib/libXvMCNVIDIA.so
+ at exec ln -sf libXvMCNVIDIA.so.1 %D/lib/libXvMCNVIDIA.so
 @unexec rm -f %D/lib/libXvMCNVIDIA.so
- at exec ln -sf %D/lib/libXvMCNVIDIA.so.1 %D/lib/libXvMCNVIDIA_dynamic.so.1
+ at exec ln -sf libXvMCNVIDIA.so.1 %D/lib/libXvMCNVIDIA_dynamic.so.1
 @unexec rm -f %D/lib/libXvMCNVIDIA_dynamic.so.1
 lib/libnvidia-cfg.so.1
- at exec ln -sf %D/lib/libnvidia-cfg.so.1 %D/lib/libnvidia-cfg.so
+ at exec ln -sf libnvidia-cfg.so.1 %D/lib/libnvidia-cfg.so
 @unexec rm -f %D/lib/libnvidia-cfg.so
 lib/libnvidia-tls.so.1
- at exec ln -sf %D/lib/libnvidia-tls.so.1 %D/lib/libnvidia-tls.so
+ at exec ln -sf libnvidia-tls.so.1 %D/lib/libnvidia-tls.so
 @unexec rm -f %D/lib/libnvidia-tls.so
 lib/libXvMCNVIDIA.a
-lib/modules/libnvidia-wfb.so.1
- at exec ln -sf %D/lib/modules/libnvidia-wfb.so.1 %D/lib/modules/libwfb.so
- at unexec rm -f %D/lib/modules/libwfb.so
-lib/modules/drivers/nvidia_drv.o
-lib/modules/drivers/nvidia_drv.so
-lib/modules/extensions/libglx.so.1
- at exec ln -sf %D/lib/modules/extensions/libglx.so.1 %D/lib/modules/extensions/libglx.so
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-a.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-b.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-c.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-d.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-e.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-f.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-g.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-h.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-i.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-j.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-k.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-l.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-m.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-n.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-o.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-p.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-q.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-r.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-s.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-t.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-u.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-v.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-w.html
-%%PORTDOCS%%%%DOCSDIR%%/html/appendix-x.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-01.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-02.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-03-section-02.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-03.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-04.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-05.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-06.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-07.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-08.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-09.html
-%%PORTDOCS%%%%DOCSDIR%%/html/chapter-10.html
-%%PORTDOCS%%%%DOCSDIR%%/html/index.html
-%%PORTDOCS%%%%DOCSDIR%%/html/part-01.html
-%%PORTDOCS%%%%DOCSDIR%%/html/part-02.html
-%%PORTDOCS%%%%DOCSDIR%%/html/part-03.html
-%%PORTDOCS%%%%DOCSDIR%%/html/preface-01.html
-%%PORTDOCS%%%%DOCSDIR%%/html/preface-02.html
-%%PORTDOCS%%@dirrm %%DOCSDIR%%/html
-%%PORTDOCS%%%%DOCSDIR%%/README
-%%PORTDOCS%%%%DOCSDIR%%/README.Linux
-%%PORTDOCS%%%%DOCSDIR%%/XF86Config.sample
-%%PORTDOCS%%%%DOCSDIR%%/license.txt
-%%PORTDOCS%%%%DOCSDIR%%/gl.h
-%%PORTDOCS%%%%DOCSDIR%%/glx.h
-%%PORTDOCS%%%%DOCSDIR%%/glext.h
-%%PORTDOCS%%%%DOCSDIR%%/glxtokens.h
-%%PORTDOCS%%@dirrm %%DOCSDIR%%
+%%MODULESDIR%%/libnvidia-wfb.so.1
+%%XORG%%@exec mv -f %D/%%MODULESDIR%%/libwfb.so %D/%%MODULESDIR%%/XXX-libwfb.so.%%%%.%%XSERVVERSION%% && ln -sf libnvidia-wfb.so.1 %D/%%MODULESDIR%%/libwfb.so
+%%XORG%%@unexec mv -f %D/%%MODULESDIR%%/XXX-libwfb.so.%%%%.%%XSERVVERSION%% %D/%%MODULESDIR%%/libwfb.so
+%%MODULESDIR%%/drivers/nvidia_drv.o
+%%MODULESDIR%%/drivers/nvidia_drv.so
+%%MODULESDIR%%/extensions/libglx.so.1
+ at exec ln -sf libglx.so.1 %D/%%MODULESDIR%%/extensions/libglx.so
 @cwd /boot/modules
 nvidia.ko
 @unexec kldxref %D
 %%LINUX%%@cwd %%LINUXBASE%%
-%%LINUX%%usr/lib/libGL.so.1.0.%%NVVERSION%%
-%%LINUX%%usr/lib/libGLcore.so.1.0.%%NVVERSION%%
-%%LINUX%%usr/lib/libnvidia-tls.so.1.0.%%NVVERSION%%
-%%LINUX%%@exec ln -sf %D/usr/lib/libGL.so.1.0.%%NVVERSION%% %D/usr/lib/libGL.so.1
-%%LINUX%%@exec ln -sf %D/usr/lib/libGLcore.so.1.0.%%NVVERSION%% %D/usr/lib/libGLcore.so.1
-%%LINUX%%@exec ln -sf %D/usr/lib/libnvidia-tls.so.1.0.%%NVVERSION%% %D/usr/lib/libnvidia-tls.so.1
+%%LINUX%%usr/lib/libGL.so.%%SHLIB_VERSION%%
+%%LINUX%%usr/lib/libGLcore.so.%%SHLIB_VERSION%%
+%%LINUX%%usr/lib/libnvidia-tls.so.%%SHLIB_VERSION%%
+%%LINUX%%@exec ln -sf libGL.so.%%SHLIB_VERSION%% %D/usr/lib/libGL.so.1
+%%LINUX%%@exec ln -sf libGLcore.so.%%SHLIB_VERSION%% %D/usr/lib/libGLcore.so.1
+%%LINUX%%@exec ln -sf libnvidia-tls.so.%%SHLIB_VERSION%% %D/usr/lib/libnvidia-tls.so.1
 %%LINUX%%@unexec rm -f %D/usr/lib/libGL.so.1
 %%LINUX%%@unexec rm -f %D/usr/lib/libGLcore.so.1
 %%LINUX%%@unexec rm -f %D/usr/lib/libnvidia-tls.so.1
+%%LINUX%%@exec %D/sbin/ldconfig -r %D
+%%LINUX%%@unexec %D/sbin/ldconfig -r %D
Index: Makefile
===================================================================
RCS file: /home/cvs/mports/x11/nvidia-driver/Makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -L x11/nvidia-driver/Makefile -L x11/nvidia-driver/Makefile -u -r1.5 -r1.6
--- x11/nvidia-driver/Makefile
+++ x11/nvidia-driver/Makefile
@@ -2,27 +2,29 @@
 # Date created:				4 December 2002
 # Whom:					Stijn Hoop <stijn at win.tue.nl>
 #
-# $MidnightBSD$
-# $FreeBSD: ports/x11/nvidia-driver/Makefile,v 1.56 2007/02/26 11:29:34 danfe Exp $
+# $FreeBSD: ports/x11/nvidia-driver/Makefile,v 1.74 2008/03/07 21:47:38 flz Exp $
 #
 
 PORTNAME=	nvidia-driver
-PORTVERSION=	1.0.${NVVERSION}
-CATEGORIES=	x11
+DISTVERSION?=	169.12
+PORTREVISION?=	0			# For consistency with slave ports
+CATEGORIES=	x11 kld
 MASTER_SITES=	${MASTER_SITE_NVIDIA}
-MASTER_SITE_SUBDIR=	freebsd/1.0-${NVVERSION}
-DISTNAME=	NVIDIA-FreeBSD-x86-${PORTVERSION:S/0./0-/}
+MASTER_SITE_SUBDIR=	freebsd/${DISTVERSION}
+DISTNAME=	NVIDIA-FreeBSD-x86-${DISTVERSION}
 
-MAINTAINER=	ports at MidnightBSD.org
+MAINTAINER=	danfe at FreeBSD.org
 COMMENT=	NVidia graphics card binary drivers for hardware OpenGL rendering
+LICENSE=	restricted
 
 ONLY_FOR_ARCHS=	i386
 
-USE_X_PREFIX=	yes
 NO_PACKAGE=	should be recompiled for a particular BSD kernel
+USE_GL=		gl
 USE_LDCONFIG=	yes
 SUB_FILES+=	pkg-message
 DOCSDIR=	${PREFIX}/share/doc/NVIDIA_GLX-1.0
+PORTDOCS=	*
 
 OPTIONS=	FREEBSD_AGP	"Use BSD AGP GART driver" off \
 		VM86_INT10CALL	"Use VM86 interface for video BIOS calls" off \
@@ -30,32 +32,35 @@
 		LINUX		"Build with support for Linux compatibility" on
 
 # Starting with version 7667, NVidia has dropped support for numerous
-# "legacy" GPUs.  One can, however, build the port with specific NVVERSION
-# value set.  Currently supported "legacy" values are 7184 and 9631.
-# Consult NVidia README (Appendix A) to find out whether you need to use
-# legacy driver version.  Alternatively, you can install corresponding
-# `x11/nvidia-driver-XXXX' slave port, where XXXX == needed ${NVVERSION}.
+# "legacy" GPUs.  Consult NVidia README (the Appendix) to find out whether
+# you need to use legacy driver version and install one of corresponding
+# `x11/nvidia-driver-71xx' or `x11/nvidia-driver-96xx' slave ports.
 #
-NVVERSION?=	9746			# The latest version to date
-
-.if ${NVVERSION} == 7184
-EXTRA_PATCHES+=	${FILESDIR}/6113-patch-lib::Makefile
-.else
-EXTRA_PATCHES+=	${FILESDIR}/7667-* \
-		${FILESDIR}/crash-patch-by-zander-1759235
-.endif
-
-LIB_DEPENDS+=	m.3:${PORTSDIR}/misc/compat5x
+# NVidia played it tricky with their versioning scheme once again.  To make
+# stable and legacy versions comparable, employ some sad ugly hackery: assign
+# NVVERSION for slave ports independently of master.  Hopefully, this is a
+# temporary measure and will go away soon.
+#
+NVVERSION?=	${DISTVERSION:S/.//g}00
 
 .include <bsd.port.pre.mk>
 
+MODULESDIR=	lib/xorg/modules
+XORG_SUB=	""
+XFREE86_SUB=	"@comment "
+
 # XXX Should use ${PKG_INFO} XXX
 #
-XSERVVERSION!=	/usr/sbin/pkg_info -O x11-servers/XFree86-4-Server 2>/dev/null | ${GREP} Server- || /usr/sbin/pkg_info -O x11-servers/xorg-server 2>/dev/null | ${GREP} server- || true
-XLIBVERSION!=	/usr/sbin/pkg_info -O x11/XFree86-4-libraries 2>/dev/null | ${GREP} libraries- || /usr/sbin/pkg_info -O x11/xorg-libraries 2>/dev/null | ${GREP} libraries- || true
+XSERVVERSION!=	/usr/sbin/pkg_info -O x11-servers/xorg-server 2>/dev/null | ${GREP} server- || /usr/sbin/pkg_info -qO x11-servers/xorg-server-snap 2>/dev/null || true
+XLIBVERSION!=	/usr/sbin/pkg_info -O graphics/libGL 2>/dev/null | ${GREP} libGL- || true
+
+.if empty(XSERVVERSION)
+IGNORE=		needs an X server implementation installed
+.endif
 
 PLIST_SUB+=	XSERVVERSION=${XSERVVERSION} XLIBVERSION=${XLIBVERSION} \
-		LINUXBASE=${LINUXBASE} NVVERSION=${NVVERSION}
+		LINUXBASE=${LINUXBASE} SHLIB_VERSION=${PORTVERSION} \
+		MODULESDIR=${MODULESDIR} XORG=${XORG_SUB} XFREE86=${XFREE86_SUB}
 
 .if !defined(WITHOUT_LINUX)
 # Add explicit X11 libraries dependency since USE_LINUX causes the port to
@@ -69,12 +74,26 @@
 MAKE_ENV+=	WITHOUT_LINUX=yes
 .endif
 
+LIB_DEPENDS+=	m.3:${PORTSDIR}/misc/compat5x
+
 post-patch: .SILENT
 # We should support -CURRENT: kill the check
-.if ${NVVERSION} >= 7174
 	${REINPLACE_CMD} '24,26d' ${WRKSRC}/src/nv-freebsd.h
+# Fix `agpvar.h' location on recent -CURRENT
+.if ${OSVERSION} >= 800004
+	${REINPLACE_CMD} -e 's,pci/agpvar\.h,dev/agp/agpvar.h,' \
+		${WRKSRC}/src/nv-freebsd.h
+.endif
+# Building with -Werror requires prototype for suser() which was moved
+.if ${OSVERSION} >= 700048
+	${REINPLACE_CMD} -e '15s,^,#include <sys/priv.h>,' \
+		${WRKSRC}/src/nvidia_os.c
+.endif
+# Correct prototypes to fix the build with FreeBSD AGP support
+.if ${NVVERSION} >= 1690700
+	${REINPLACE_CMD} -e '337,338s/(/(nv_stack_t *, /' \
+		${WRKSRC}/src/nv-freebsd.h
 .endif
-	${REINPLACE_CMD} '/bus_memio\.h/d' ${WRKSRC}/src/nv-freebsd.h
 .if defined(WITH_FREEBSD_AGP)
 	${REINPLACE_CMD} -E 's/undef (NV_SUPPORT_OS_AGP)/define \1/' \
 		${WRKSRC}/src/nv-freebsd.h
@@ -91,24 +110,41 @@
 	${REINPLACE_CMD} -E 's/define (NV_SUPPORT_LINUX_COMPAT)/undef \1/' \
 		${WRKSRC}/src/nv-freebsd.h
 .endif
-.if ${NVVERSION} < 9746
+# Don't build any binaries (nvidia-settings and nvidia-xconfig)
+.if ${NVVERSION} < 974600
 	${REINPLACE_CMD} -E 's/(extension).*/\1/' ${WRKSRC}/x11/Makefile
 .else
 	${REINPLACE_CMD} -E 's/(lib).*/\1/' ${WRKSRC}/x11/Makefile
 .endif
 	${REINPLACE_CMD} '/bin/d ; /man/d' ${WRKSRC}/x11/Makefile
+# Conditionally install documentation (but you generally want it)
+.if defined(NOPORTDOCS)
+	${REINPLACE_CMD} -E 's/(x11).*/\1/ ; /doc/d' ${WRKSRC}/Makefile
+.endif
+# Do not execute afterinstall target (prevent automatic module registration)
+	${REINPLACE_CMD} -e 's/afterinstall/dontexecute/' ${WRKSRC}/Makefile
+
+pre-su-install:
+# XXX This port silently assumes PREFIX == X11BASE XXX
+	@${MKDIR} ${PREFIX}/${MODULESDIR}/drivers
+# xorg-server-1.4 installs its own ${X11BASE}/lib/xorg/modules/libwfb.so,
+# so back it up so it can be later restored similarly to what NVidia does:
+.if ${NVVERSION} >= 974600
+	@${MV} -f ${PREFIX}/${MODULESDIR}/libwfb.so \
+		${PREFIX}/${MODULESDIR}/XXX-libwfb.so.%%.${XSERVVERSION}
+.endif
 
 post-install:
 # pkg-plist is already overbloated, so use this hack instead of PLIST_SUB's
-.if ${NVVERSION} < 8174
-	@${REINPLACE_CMD} '/libnvidia-cfg/d ; /html/d' ${TMPPLIST}
+.if ${NVVERSION} < 817400
+	@${REINPLACE_CMD} '/libnvidia-cfg/d' ${TMPPLIST}
 .else
-	@${REINPLACE_CMD} '/README\.Linux/d ; /nvidia_drv\.o/d' ${TMPPLIST}
+	@${REINPLACE_CMD} '/nvidia_drv\.o/d' ${TMPPLIST}
 .endif
-.if ${NVVERSION} < 9746
-	@${REINPLACE_CMD} '/wfb/d ; /chapter-10/d' ${TMPPLIST}
+.if ${NVVERSION} < 974600
+	@${REINPLACE_CMD} '/wfb/d' ${TMPPLIST}
 .endif
-	${LN} -sf libXvMCNVIDIA.so.1 ${PREFIX}/lib/libXvMCNVIDIA_dynamic.so.1
-	@${CAT} ${PKGMESSAGE}
+	@${LN} -sf libXvMCNVIDIA.so.1 ${PREFIX}/lib/libXvMCNVIDIA_dynamic.so.1
+	@${ECHO_MSG}
 
 .include <bsd.port.post.mk>
Index: distinfo
===================================================================
RCS file: /home/cvs/mports/x11/nvidia-driver/distinfo,v
retrieving revision 1.3
retrieving revision 1.4
diff -L x11/nvidia-driver/distinfo -L x11/nvidia-driver/distinfo -u -r1.3 -r1.4
--- x11/nvidia-driver/distinfo
+++ x11/nvidia-driver/distinfo
@@ -1,9 +1,9 @@
-MD5 (NVIDIA-FreeBSD-x86-1.0-7184.tar.gz) = ee5907345b9f25527c3ec41f5ac269e3
-SHA256 (NVIDIA-FreeBSD-x86-1.0-7184.tar.gz) = f6de6961b540b852e79fb7aa5a95714a13c6984429968448432106d89493e02d
-SIZE (NVIDIA-FreeBSD-x86-1.0-7184.tar.gz) = 8441698
-MD5 (NVIDIA-FreeBSD-x86-1.0-9631.tar.gz) = d560b1e7d5b0209da7aa32526cdda921
-SHA256 (NVIDIA-FreeBSD-x86-1.0-9631.tar.gz) = 2b467da57bc3bb8e2216ce3d02909cf077da045ebcf294474b784cb521a5d550
-SIZE (NVIDIA-FreeBSD-x86-1.0-9631.tar.gz) = 9667093
-MD5 (NVIDIA-FreeBSD-x86-1.0-9746.tar.gz) = d6dd2fad4f6e05980c2fbb591b06fb99
-SHA256 (NVIDIA-FreeBSD-x86-1.0-9746.tar.gz) = cf8be89d537423c0acc294e57cb659dae94463f6347f63c32b1de39c8051a5a7
-SIZE (NVIDIA-FreeBSD-x86-1.0-9746.tar.gz) = 11152524
+MD5 (NVIDIA-FreeBSD-x86-71.86.04.tar.gz) = 7401897a552506869fc64455e70e4b74
+SHA256 (NVIDIA-FreeBSD-x86-71.86.04.tar.gz) = 4a96dbeb735b326f23637bc80532d64648855dbe7733fd9ed4cb3a9e1db0caf4
+SIZE (NVIDIA-FreeBSD-x86-71.86.04.tar.gz) = 5515902
+MD5 (NVIDIA-FreeBSD-x86-96.43.05.tar.gz) = 93e8560b9e2dfd555a75e64edce7353e
+SHA256 (NVIDIA-FreeBSD-x86-96.43.05.tar.gz) = 6421d98445b7a952525af89d6c4e27d213909a8090f290789eda4698347f91ec
+SIZE (NVIDIA-FreeBSD-x86-96.43.05.tar.gz) = 6793001
+MD5 (NVIDIA-FreeBSD-x86-169.12.tar.gz) = 1e81dce17cdd2474e5492b43d0aaf804
+SHA256 (NVIDIA-FreeBSD-x86-169.12.tar.gz) = a237da7664ddcfd2f68336765734ac84de2a2ce0f6535063534b3e6f32f0ac3b
+SIZE (NVIDIA-FreeBSD-x86-169.12.tar.gz) = 13862817
Index: pkg-message.in
===================================================================
RCS file: /home/cvs/mports/x11/nvidia-driver/files/pkg-message.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -L x11/nvidia-driver/files/pkg-message.in -L x11/nvidia-driver/files/pkg-message.in -u -r1.2 -r1.3
--- x11/nvidia-driver/files/pkg-message.in
+++ x11/nvidia-driver/files/pkg-message.in
@@ -1,4 +1,3 @@
-
 To use these drivers, make sure that you have loaded the nvidia kernel
 module, by doing
 
@@ -8,18 +7,21 @@
 
 	nvidia_load="YES"
 
-to your /boot/loader.conf (normally done automatically when installing
-the port).
+to your /boot/loader.conf.
 
 If you build this port with WITH_FREEBSD_AGP=yes, make sure you have
-agp.ko kernel module compiled and installed, since nvidia.ko will
-depend on it, or have your kernel compiled with "device agp".  Other-
-wise the nvidia kernel module will not load.  Also, care to specify
-correct ``Option "NvAGP"'' in ``Device'' section of your X11 configu-
-ration file.
+agp.ko kernel module installed and loaded, since nvidia.ko will depend
+on it, or have your kernel compiled with "device agp".  Otherwise the
+nvidia kernel module will not load.  Also, care to specify correct
+``Option "NvAGP"'' in ``Device'' section of your X11 configuration file.
 
 When building with Linux compatibility (WITH_LINUX=yes), make sure
-linux.ko is available as well (or have it compiled in kernel).
+linux.ko is available as well (or have it compiled in kernel).  It can
+be loaded via /boot/loader.conf (or later in boot process if you add
+
+	linux_enable="YES"
+
+to your /etc/rc.conf.
 
 Note that this driver does not support PAE-enabled kernels.
 
@@ -30,5 +32,4 @@
 in /var/log/Xorg.0.log while actually you have ``options SYSVSHM''
 enabled in kernel, the sysctl ``kern.ipc.shmall'' should be increased.
 
-See %%PREFIX%%/share/doc/NVIDIA_GLX-1.0/README for more information.
-
+See %%DOCSDIR%%/README for more information.
--- x11/nvidia-driver/files/7667-patch-scripts::setup.sh
+++ /dev/null
@@ -1,23 +0,0 @@
---- scripts/setup.sh.orig	Wed Jun 22 16:33:18 2005
-+++ scripts/setup.sh	Wed Jun 22 19:18:06 2005
-@@ -4,16 +4,15 @@
- if [ ${RESULT} -eq 0 ]; then
- 	kldunload -n nvidia > /dev/null 2>&1; RESULT=$?
- 	if [ ${RESULT} -ne 0 ]; then
--		echo 'ERROR: Failed to unload the NVIDIA module!'
--		echo 'ERROR: Is nvidia.ko in use?'
--		exit 1;
-+		echo 'NOTICE: Failed to unload the NVIDIA module!'
-+		echo 'NOTICE: Is nvidia.ko in use?'
- 	fi
- fi
- 
- kldload nvidia > /dev/null 2>&1 ; RESULT=$?
- if [ ${RESULT} -ne 0 ]; then
--	echo 'ERROR: Failed to load the NVIDIA module!'
--	exit 1;
-+	echo 'NOTICE: Failed to load the NVIDIA module!'
-+	echo 'NOTICE: Unload and load NVIDIA module manually, or reboot.'
- fi
- 
- grep nvidia_load /boot/loader.conf > /dev/null 2>&1; RESULT=$?
--- x11/nvidia-driver/files/7667-patch-lib::Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
---- lib/Makefile.orig	Fri Jun 17 09:44:23 2005
-+++ lib/Makefile	Wed Jun 22 19:12:16 2005
-@@ -6,7 +6,7 @@
- FIND_DIRS=	/usr/lib	\
- 		${X11BASE}/lib
- 
--.if exists(/compat/linux)
-+.if exists(/compat/linux) && !defined(WITHOUT_LINUX)
- SUBDIR+=	compat
- FIND_DIRS+=	/compat/linux/lib \
- 		/compat/linux/usr/lib \
--- x11/nvidia-driver/files/crash-patch-by-zander-1759235
+++ /dev/null
@@ -1,749 +0,0 @@
-diff -ru src/nv-freebsd.h src.1759235/nv-freebsd.h
---- src/nv-freebsd.h	2006-12-19 13:50:18.000000000 -0800
-+++ src.1759235/nv-freebsd.h	2007-01-26 10:13:57.436330000 -0800
-@@ -111,6 +111,9 @@
-  * on FreeBSD, due to its thread-aware reference counting.
-  */
- 
-+#define __TD_FDT(_td)     ((_td)->td_proc->p_fd)
-+#define __TD_FDT_CNT(_td) ((_td)->td_proc->p_fd->fd_refcnt)
-+
- #if __FreeBSD_version >= 601100
- #define __NV_ITHREAD() (curthread->td_pflags & TDP_ITHREAD)
- #else
-@@ -177,12 +180,6 @@
- } nvidia_event_t;
- 
- typedef
--struct nvidia_drv2 {
--    STAILQ_HEAD(event_queue, nvidia_event) event_queue;
--    struct selinfo rsel;
--} nvidia_drv2_t;
--
--typedef
- struct nvidia_softc {
-     device_t dev;
-     device_t agp_dev;
-@@ -203,6 +200,9 @@
-     struct cdev *cdev;
-     nv_state_t *nv_state;
- 
-+    /* queue of OS events */
-+    STAILQ_HEAD(event_queue, nvidia_event) event_queue;
-+
-     struct sysctl_ctx_list sysctl_ctx;
-     struct selinfo rsel;
- 
-@@ -213,8 +213,8 @@
- 
-     int refcnt;
- 
--    struct mtx mtx_rm;
--    struct sx sx_api;
-+    struct mtx rm_mtx;
-+    struct sx api_sx;
- 
- } nvidia_softc_t;
- 
-@@ -222,10 +222,9 @@
- #define CDEV_MAJOR      180
- #define CDEV_CTL_MINOR  255
- 
--extern struct clonedevs *nvidia_ctl_clones;
--extern struct clonedevs *nvidia_dev_clones;
--
- extern devclass_t nvidia_devclass;
-+
-+extern struct nvidia_softc nvidia_ctl_sc;
- extern nv_state_t nvidia_ctl_state;
- 
- extern const char *pNVRM_ID;
-@@ -259,15 +258,9 @@
- #define __NV_IOC_TYPE(_cmd) (((_cmd) >> 8) & 0xff)
- #define __NV_IOC_NR(_cmd)   (((_cmd) >> 0) & 0xff)
- 
--#if __FreeBSD_version >= 600034
--void   nvidia_dev_clone      (void *, struct ucred *, char *, int, struct cdev **);
--void   nvidia_ctl_clone      (void *, struct ucred *, char *, int, struct cdev **);
--#else
--void   nvidia_dev_clone      (void *, char *, int, struct cdev **);
--void   nvidia_ctl_clone      (void *, char *, int, struct cdev **);
--#endif
--
--#define NV_GET_SOFTC(_dev) ((struct nvidia_softc *)((_dev)->si_drv1))
-+/* nvidia_dev.c */
-+int    nvidia_dev_attach     (struct nvidia_softc *);
-+int    nvidia_dev_detach     (struct nvidia_softc *);
- 
- /* nvidia_ctl.c */
- int    nvidia_ctl_attach     (void);
-diff -ru src/nvidia_ctl.c src.1759235/nvidia_ctl.c
---- src/nvidia_ctl.c	2006-12-19 13:50:18.000000000 -0800
-+++ src.1759235/nvidia_ctl.c	2007-01-26 10:14:04.272757250 -0800
-@@ -28,52 +28,10 @@
-     .d_flags =     D_TRACKCLOSE|D_NEEDGIANT
- };
- 
--static nvidia_softc_t nvidia_ctl_sc;
--static int nvidia_count = 0;
--
--struct clonedevs *nvidia_ctl_clones;
--
--void nvidia_ctl_clone(
--    void *arg,
--#if __FreeBSD_version >= 600034
--    struct ucred *cred,
--#endif
--    char *name,
--    int namelen,
--    struct cdev **dev
--)
--{
--    int i, clone = 0;
-+static struct cdev *nvidia_ctl_cdev = NULL;
-+struct nvidia_softc nvidia_ctl_sc;
- 
--    if (*dev != NULL)
--        return;
--    if (strcmp(name, "nvidiactl") != 0)
--        return;
--
--    /*
--     * XXX clone_create() doesn't handle automatic clone
--     * number allocation correctly at this point, it
--     * can insert clone list entries out of order, with
--     * respect to the clone number, and subsequently
--     * allocate numbers that are still in use. Iterate over
--     * the possible clone numbers until the first unused
--     * one is found.
--     */
--    do {
--        i = clone_create(&nvidia_ctl_clones, &nvidia_ctl_cdevsw,
--                &clone, dev, 0);
--        if (i == 0) clone++;
--    } while ((clone <= CLONE_UNITMASK) && (i == 0));
--
--    if ((i != 0) && (clone <= CLONE_UNITMASK)) {
--        *dev = make_dev(&nvidia_ctl_cdevsw, unit2minor(clone),
--                    UID_ROOT, GID_WHEEL, 0666, "nvidiactl.%u", clone);
--        if (*dev != NULL) {
--            (*dev)->si_flags |= SI_CHEAPCLONE;
--            (*dev)->si_drv1 = (void *)&nvidia_ctl_sc;
--        }
--    }
--}
-+static int nvidia_count = 0;
- 
- int nvidia_ctl_open(
-     struct cdev *dev,
-@@ -85,21 +43,10 @@
-     int status;
-     nv_state_t *nv = &nvidia_ctl_state;
- 
--    if (!dev->si_drv2) {
--        /* only allow one open() of this file */
--        dev->si_drv2 = dev->si_drv1;
--    } else
--        return EBUSY;
--
-     nv_lock_api(nv);
-     status = nvidia_open_ctl();
-     nv_unlock_api(nv);
- 
--    if (status == 0) {
--        /* XXX Fix me? (clear of SI_CHEAPCLONE) */
--        dev->si_flags &= ~SI_CHEAPCLONE;
--    }
--
-     return status;
- }
- 
-@@ -117,11 +64,6 @@
-     status = nvidia_close_ctl(dev, td);
-     nv_unlock_api(nv);
- 
--    if (status == 0) {
--        /* XXX Fix me? (call to destroy_dev()) */
--        destroy_dev(dev);
--    }
--
-     return status;
- }
- 
-@@ -223,21 +165,15 @@
- 
- int nvidia_ctl_attach(void)
- {
--    struct nvidia_softc *sc;
--
-     if (nvidia_count == 0) {
-         /*
-          * This routine is called from nvidia_attach(), multiple times
-          * when more than one device is installed.
-          */
--        sc = &nvidia_ctl_sc;
--        bzero(sc, sizeof(nvidia_softc_t));
--
--        nvidia_ctl_state.os_state = sc;
--        sc->nv_state = (void *)&nvidia_ctl_state;
--
--        mtx_init(&sc->mtx_rm, "ctl.mtx_rm", NULL, MTX_SPIN | MTX_RECURSE);
--        sx_init(&sc->sx_api, "ctl.sx_api");
-+        nvidia_ctl_cdev = make_dev(&nvidia_ctl_cdevsw,
-+                CDEV_CTL_MINOR,
-+                UID_ROOT, GID_WHEEL, 0666,
-+                "%s", nvidia_ctl_cdevsw.d_name);
-     }
- 
-     nvidia_count++;
-@@ -256,10 +192,8 @@
-          * Like nvidia_ctl_attach(), nvidia_ctl_detach() will also be
-          * called more than once with multiple devices.
-          */
--        mtx_destroy(&sc->mtx_rm);
--        sx_destroy(&sc->sx_api);
-+        destroy_dev(nvidia_ctl_cdev);
-     }
- 
-     return 0;
- }
--
-diff -ru src/nvidia_dev.c src.1759235/nvidia_dev.c
---- src/nvidia_dev.c	2006-12-19 13:50:18.000000000 -0800
-+++ src.1759235/nvidia_dev.c	2007-01-26 10:14:08.509022000 -0800
-@@ -30,58 +30,6 @@
-     .d_flags =     D_MEM|D_TRACKCLOSE|D_NEEDGIANT
- };
- 
--struct clonedevs *nvidia_dev_clones;
--
--void nvidia_dev_clone(
--    void *arg,
--#if __FreeBSD_version >= 600034
--    struct ucred *cred,
--#endif
--    char *name,
--    int namelen,
--    struct cdev **dev
--)
--{
--    int i, unit;
--    struct nvidia_softc *sc;
--    int clone = 0;
--
--    if (*dev != NULL)
--        return;
--    if (dev_stdclone(name, NULL, "nvidia", &unit) != 1)
--        return;
--    if (unit >= NV_MAX_DEVICES)
--        return;
--
--    sc = devclass_get_softc(nvidia_devclass, unit);
--    if (sc == NULL)
--        return;
--
--    /*
--     * XXX clone_create() doesn't handle automatic clone
--     * number allocation correctly at this point, it
--     * can insert clone list entries out of order, with
--     * respect to the clone number, and subsequently
--     * allocate numbers that are still in use. Iterate over
--     * the possible clone numbers until the first unused
--     * one is found.
--     */
--    do {
--        i = clone_create(&nvidia_dev_clones, &nvidia_dev_cdevsw,
--                &clone, dev, 0);
--        if (i == 0) clone++;
--    } while ((clone <= CLONE_UNITMASK) && (i == 0));
--
--    if ((i != 0) && (clone <= CLONE_UNITMASK)) {
--        *dev = make_dev(&nvidia_dev_cdevsw, unit2minor(clone),
--                    UID_ROOT, GID_WHEEL, 0666, "nvidia%u.%u", unit, clone);
--        if (*dev != NULL) {
--            (*dev)->si_drv1 = (void *)sc;
--            (*dev)->si_flags |= SI_CHEAPCLONE;
--        }
--    }
--}
--
- int nvidia_dev_open(
-     struct cdev *dev,
-     int oflags,
-@@ -90,30 +38,20 @@
- )
- {
-     int status;
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    nv_state_t *nv = sc->nv_state;
-+    struct nvidia_softc *sc;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
- 
--    struct nvidia_drv2 *drv2;
-+    sc = devclass_get_softc(nvidia_devclass, unit);
-+    if (!sc)
-+        return ENXIO;
- 
--    if (!dev->si_drv2) {
--        drv2 = malloc(sizeof(struct nvidia_drv2), M_NVIDIA, M_WAITOK | M_ZERO);
--        if (drv2 == NULL)
--            return ENOMEM;
--        STAILQ_INIT(&drv2->event_queue);
--        dev->si_drv2 = drv2;
--    } else
--        return EBUSY;
-+    nv = sc->nv_state;
- 
-     nv_lock_api(nv);
-     status = nvidia_open_dev(sc);
-     nv_unlock_api(nv);
- 
--    if (status == 0) {
--        /* XXX Fix me? (clear of SI_CHEAPCLONE) */
--        dev->si_flags &= ~SI_CHEAPCLONE;
--    } else
--        free(drv2, M_NVIDIA);
--
-     return status;
- }
- 
-@@ -125,28 +63,17 @@
- )
- {
-     int status;
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    struct nvidia_drv2 *drv2;
-+    struct nvidia_softc *sc;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
- 
--    nv_state_t *nv = sc->nv_state;
--    struct nvidia_event *et;
-+    sc = devclass_get_softc(nvidia_devclass, unit);
-+    nv = sc->nv_state;
- 
-     nv_lock_api(nv);
-     status = nvidia_close_dev(sc, dev, td);
-     nv_unlock_api(nv);
- 
--    drv2 = dev->si_drv2;
--    while ((et = STAILQ_FIRST(&drv2->event_queue))) {
--        STAILQ_REMOVE(&drv2->event_queue, et, nvidia_event, queue);
--        free(et, M_NVIDIA);
--    }
--
--    if (status == 0) {
--        free(dev->si_drv2, M_NVIDIA);
--        /* XXX Fix me? (call to destroy_dev()) */
--        destroy_dev(dev);
--    }
--
-     return status;
- }
- 
-@@ -159,12 +86,16 @@
- )
- {
-     int status;
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    nv_state_t *nv = sc->nv_state;
-+    struct nvidia_softc *sc;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
- 
-     if (__NV_IOC_TYPE(cmd) != NV_IOCTL_MAGIC)
-         return ENOTTY;
- 
-+    sc = devclass_get_softc(nvidia_devclass, unit);
-+    nv = sc->nv_state;
-+
-     nv_lock_api(nv);
-     status = nvidia_handle_ioctl(dev, cmd, data, fflag, td);
-     nv_unlock_api(nv);
-@@ -178,16 +109,18 @@
-     d_thread_t *td
- )
- {
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    nv_state_t *nv = sc->nv_state;
-+    struct nvidia_softc *sc;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
- 
--    struct nvidia_drv2 *drv2 = dev->si_drv2;
-+    sc = devclass_get_softc(nvidia_devclass, unit);
-+    nv = sc->nv_state;
- 
-     nv_lock_rm(nv);
- 
--    if (STAILQ_EMPTY(&drv2->event_queue)) {
-+    if (STAILQ_EMPTY(&sc->event_queue)) {
-         nv_unlock_rm(nv);
--        selrecord(td, &drv2->rsel);
-+        selrecord(td, &sc->rsel);
-     } else {
-         nv_unlock_rm(nv);
-         return (events & (POLLIN | POLLPRI));
-@@ -204,10 +137,13 @@
- )
- {
-     int status;
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    nv_state_t *nv = sc->nv_state;
--
-+    struct nvidia_softc *sc;
-     vm_offset_t physical;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
-+
-+    sc = devclass_get_softc(nvidia_devclass, unit);
-+    nv = sc->nv_state;
- 
-     nv_lock_api(nv);
-     status = nvidia_mmap_dev(sc, offset, &physical);
-@@ -219,7 +155,26 @@
-     return status;
- }
- 
--/* XXX This needs to be populated with FreeBSD specific code to allow
-+int nvidia_dev_attach(struct nvidia_softc *sc)
-+{
-+    sc->cdev = make_dev(&nvidia_dev_cdevsw,
-+            device_get_unit(sc->dev),
-+            UID_ROOT, GID_WHEEL, 0666,
-+            "%s%d", nvidia_dev_cdevsw.d_name,
-+            device_get_unit(sc->dev));
-+
-+    return 0;
-+}
-+
-+int nvidia_dev_detach(struct nvidia_softc *sc)
-+{
-+    destroy_dev(sc->cdev);
-+    return 0;
-+}
-+
-+
-+/*
-+ * XXX This needs to be populated with FreeBSD specific code to allow
-  * us to support DMA addresses larger than 32 bits.
-  */
- 
-diff -ru src/nvidia_pci.c src.1759235/nvidia_pci.c
---- src/nvidia_pci.c	2006-12-19 13:50:18.000000000 -0800
-+++ src.1759235/nvidia_pci.c	2007-01-26 10:14:11.521210250 -0800
-@@ -236,8 +236,8 @@
-         goto fail;
-     }
- 
--    mtx_init(&sc->mtx_rm, "dev.mtx_rm", NULL, MTX_SPIN | MTX_RECURSE);
--    sx_init(&sc->sx_api, "dev.sx_api");
-+    mtx_init(&sc->rm_mtx, "dev.rm_mtx", NULL, MTX_SPIN | MTX_RECURSE);
-+    sx_init(&sc->api_sx, "dev.api_sx");
- 
-     return 0;
- 
-@@ -251,6 +251,7 @@
- {
-     int status;
-     struct nvidia_softc *sc;
-+    nv_state_t *nv;
- 
-     /*
-      * Check if the device is still in use before accepting the
-@@ -258,11 +259,19 @@
-      * usage count is non-zero!
-      */
-     sc = device_get_softc(dev);
--    if (sc->refcnt != 0) /* XXX Fix me? (refcnt) */
-+    nv = sc->nv_state;
-+
-+    nv_lock_api(nv);
-+
-+    if (sc->refcnt != 0) { /* XXX Fix me? (refcnt) */
-+        nv_unlock_api(nv);
-         return EBUSY;
-+    }
-+
-+    nv_unlock_api(nv);
- 
--    mtx_destroy(&sc->mtx_rm);
--    sx_destroy(&sc->sx_api);
-+    mtx_destroy(&sc->rm_mtx);
-+    sx_destroy(&sc->api_sx);
- 
-     status = nvidia_pci_teardown_intr(dev);
-     if (status)
-diff -ru src/nvidia_subr.c src.1759235/nvidia_subr.c
---- src/nvidia_subr.c	2006-12-19 13:50:17.000000000 -0800
-+++ src.1759235/nvidia_subr.c	2007-01-26 10:14:14.001365250 -0800
-@@ -20,9 +20,6 @@
- devclass_t nvidia_devclass;
- nv_state_t nvidia_ctl_state;
- 
--static eventhandler_tag nvidia_ctl_ehtag;
--static eventhandler_tag nvidia_dev_ehtag;
--
- int nvidia_attach(device_t dev)
- {
-     int status;
-@@ -52,6 +49,9 @@
-     nv->fb   = &nv->bars[NV_GPU_BAR_INDEX_FB];
-     nv->regs = &nv->bars[NV_GPU_BAR_INDEX_REGS];
- 
-+    if ((status = nvidia_dev_attach(sc)) != 0)
-+        return status;
-+
-     if ((status = nvidia_ctl_attach()) != 0)
-         return status;
- 
-@@ -67,6 +67,12 @@
-     sc = device_get_softc(dev);
-     nv_sysctl_exit(sc->nv_state);
- 
-+    status = nvidia_dev_detach(sc);
-+    if (status) {
-+        device_printf(dev, "NVRM: NVIDIA driver DEV detach failed.\n");
-+        goto fail;
-+    }
-+
-     status = nvidia_ctl_detach();
-     if (status) {
-         device_printf(dev, "NVRM: NVIDIA driver CTL detach failed.\n");
-@@ -311,12 +317,23 @@
-     d_thread_t *td
- )
- {
--    struct nvidia_softc *sc = NV_GET_SOFTC(dev);
--    nv_state_t *nv = sc->nv_state;
-+    struct nvidia_softc *sc;
-+    nv_state_t *nv;
-+    int unit = minor(dev);
-+
-+    if (unit == CDEV_CTL_MINOR) {
-+        /* the control device is "special" */
-+        nv = &nvidia_ctl_state;
-+    } else {
-+        sc = devclass_get_softc(nvidia_devclass, unit);
-+        if (!sc)
-+            return ENXIO;
-+        nv = sc->nv_state;
-+    }
- 
-     NV_PCI_CHECK_CONFIG_SPACE(nv, TRUE);
- 
--    if (rm_ioctl(nv, (void *)dev, __NV_IOC_NR(cmd), data))
-+    if (rm_ioctl(nv, (void *)__TD_FDT(td), __NV_IOC_NR(cmd), data))
-         return 0;
- 
-     return EINVAL;
-@@ -347,7 +364,8 @@
-     struct nvidia_softc *sc;
-     nv_state_t *nv = &nvidia_ctl_state;
- 
--    rm_free_unused_clients(nv, (void *)dev);
-+    if (__TD_FDT_CNT(td) == 0)
-+        rm_free_unused_clients(nv, (void *)__TD_FDT(td));
- 
-     sc = nv->os_state;
-     sc->refcnt--;
-@@ -376,6 +394,8 @@
-          * the core resource manager does the actual work. We update both
-          * the flags and the usage count.
-          */
-+        STAILQ_INIT(&sc->event_queue);
-+
-         if (!rm_init_adapter(nv)) {
-             device_printf(sc->dev, "NVRM: rm_init_adapter() failed!\n");
-             return EIO;
-@@ -396,10 +416,12 @@
- )
- {
-     nv_state_t *nv = sc->nv_state;
-+    struct nvidia_event *et;
- 
-     NV_PCI_CHECK_CONFIG_SPACE(nv, TRUE);
- 
--    rm_free_unused_clients(nv, (void *)dev);
-+    if (__TD_FDT_CNT(td) == 0)
-+        rm_free_unused_clients(nv, (void *)__TD_FDT(td));
- 
-     sc->refcnt--;
- 
-@@ -413,6 +435,11 @@
-         rm_disable_adapter(nv);
-         rm_shutdown_adapter(nv);
- 
-+        while ((et = STAILQ_FIRST(&sc->event_queue))) {
-+            STAILQ_REMOVE(&sc->event_queue, et, nvidia_event, queue);
-+            free(et, M_NVIDIA);
-+        }
-+
-         nv->flags &= ~NV_FLAG_OPEN;
-     }
- 
-@@ -437,26 +464,20 @@
-              * this routine, further initialization takes place at attach
-              * time.
-              */
--            clone_setup(&nvidia_ctl_clones);
--            clone_setup(&nvidia_dev_clones);
--
--            nvidia_ctl_ehtag = EVENTHANDLER_REGISTER(dev_clone,
--                    nvidia_ctl_clone, 0, 0);
--            if (nvidia_ctl_ehtag == NULL)
--                return ENOMEM;
--
--            nvidia_dev_ehtag = EVENTHANDLER_REGISTER(dev_clone,
--                    nvidia_dev_clone, 0, 0);
--            if (nvidia_dev_ehtag == NULL) {
--                EVENTHANDLER_DEREGISTER(dev_clone, nvidia_ctl_ehtag);
--                return ENOMEM;
--            }
-+            sc = &nvidia_ctl_sc;
-+            bzero(sc, sizeof(nvidia_softc_t));
- 
-             if (!rm_init_rm()) {
-                 printf("NVRM: rm_init_rm() failed!\n");
-                 return EIO;
-             }
- 
-+            mtx_init(&sc->rm_mtx, "ctl.rm_mtx", NULL, MTX_SPIN | MTX_RECURSE);
-+            sx_init(&sc->api_sx, "ctl.api_sx");
-+
-+            nvidia_ctl_state.os_state = sc;
-+            sc->nv_state = (void *)&nvidia_ctl_state;
-+
-             nvidia_sysctl_init();
-             nvidia_linux_init();
- 
-@@ -468,23 +489,26 @@
-              * unload request if it is. This event can occur even when the
-              * module usage count is non-zero!
-              */
--            EVENTHANDLER_DEREGISTER(dev_clone, nvidia_dev_ehtag);
--            EVENTHANDLER_DEREGISTER(dev_clone, nvidia_ctl_ehtag);
--
-             nv = &nvidia_ctl_state;
-             sc = nv->os_state;
- 
--            if (sc->refcnt != 0) /* XXX Fix me? (refcnt) */
-+            nv_lock_api(nv);
-+
-+            if (sc->refcnt != 0) { /* XXX Fix me? (refcnt) */
-+                nv_unlock_api(nv);
-                 return EBUSY;
-+            }
-+
-+            nv_unlock_api(nv);
-+
-+            mtx_destroy(&sc->rm_mtx);
-+            sx_destroy(&sc->api_sx);
- 
-             rm_shutdown_rm();
- 
-             nvidia_sysctl_exit();
-             nvidia_linux_exit();
- 
--            clone_cleanup(&nvidia_dev_clones);
--            clone_cleanup(&nvidia_dev_clones);
--
-             break;
- 
-         default:
-@@ -713,25 +737,25 @@
-      * interrupts on the current processor.
-      */
-     struct nvidia_softc *sc = nv->os_state;
--    mtx_lock_spin(&sc->mtx_rm);
-+    mtx_lock_spin(&sc->rm_mtx);
- }
- 
- void nv_unlock_rm(nv_state_t *nv)
- {
-     struct nvidia_softc *sc = nv->os_state;
--    mtx_unlock_spin(&sc->mtx_rm);
-+    mtx_unlock_spin(&sc->rm_mtx);
- }
- 
- void nv_lock_api(nv_state_t *nv)
- {
-     struct nvidia_softc *sc = nv->os_state;
--    sx_xlock(&sc->sx_api);
-+    sx_xlock(&sc->api_sx);
- }
- 
- void nv_unlock_api(nv_state_t *nv)
- {
-     struct nvidia_softc *sc = nv->os_state;
--    sx_xunlock(&sc->sx_api);
-+    sx_xunlock(&sc->api_sx);
- }
- 
- 
-@@ -742,11 +766,10 @@
-     U032 index
- )
- {
-+    struct nvidia_softc *sc;
-     struct nvidia_event *et; 
--    struct cdev *dev = event->file;
--    struct nvidia_drv2 *drv2;
- 
--    et = malloc(sizeof(struct nvidia_event), M_NVIDIA, M_NOWAIT | M_ZERO);
-+    et = malloc(sizeof(nvidia_event_t), M_NVIDIA, M_NOWAIT | M_ZERO);
-     if (et == NULL)
-         return;
- 
-@@ -756,13 +779,13 @@
- 
-     nv_lock_rm(nv);
- 
--    drv2 = dev->si_drv2;
--    STAILQ_INSERT_TAIL(&drv2->event_queue, et, queue);
-+    sc = nv->os_state;
-+    STAILQ_INSERT_TAIL(&sc->event_queue, et, queue);
- 
-     nv_unlock_rm(nv);
- 
-     /* XXX Fix me? (os events) */
--    selwakeup(&drv2->rsel);
-+    selwakeup(&sc->rsel);
- }
- 
- S032 nv_get_event(
-@@ -772,19 +795,27 @@
-     U032 *pending
- )
- {
--    struct cdev *dev = file;
--    struct nvidia_drv2 *drv2 = dev->si_drv2;
--    struct nvidia_event *et;
-+    struct nvidia_softc *sc = nv->os_state;
-+    struct nvidia_event *et, *_et;
- 
-     nv_lock_rm(nv);
- 
--    et = STAILQ_FIRST(&drv2->event_queue);
-+    STAILQ_FOREACH(et, &sc->event_queue, queue) {
-+        if (et->event.file == file)
-+            break;
-+    }
- 
-     if (et != NULL) {
-         *event = et->event;
- 
--        STAILQ_REMOVE(&drv2->event_queue, et, nvidia_event, queue);
--        *pending = !STAILQ_EMPTY(&drv2->event_queue);
-+        STAILQ_REMOVE(&sc->event_queue, et, nvidia_event, queue);
-+
-+        STAILQ_FOREACH(_et, &sc->event_queue, queue) {
-+            if (_et->event.file == file)
-+                break;
-+        }
-+
-+        *pending = (_et != NULL);
- 
-         nv_unlock_rm(nv);
- 
--- x11/nvidia-driver/files/6113-patch-lib::Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
---- lib/Makefile.orig	Mon Aug 16 17:05:30 2004
-+++ lib/Makefile	Mon Aug 16 17:07:47 2004
-@@ -1,13 +1,16 @@
- SUBDIR= libGL		\
- 	libnvidia-tls	\
- 	libGLcore	\
--	libXvMCNVIDIA	\
--	compat
-+	libXvMCNVIDIA
- 
--FIND_DIRS=	/usr/lib ${X11BASE}/lib \
--		/compat/linux/lib \
-+FIND_DIRS=	/usr/lib ${X11BASE}/lib
-+
-+.if exists(/compat/linux) && !defined(WITHOUT_LINUX)
-+SUBDIR+=	compat
-+FIND_DIRS+=	/compat/linux/lib \
- 		/compat/linux/usr/lib \
- 		/compat/linux/usr/X11R6/lib
-+.endif
- 
- FIND_FILES!=(find ${FIND_DIRS} \
- 		-name libGL.a\* -or \


More information about the Midnightbsd-cvs mailing list