[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