summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bevitt <cyfred@gentoo.org>2004-11-30 00:37:44 +0000
committerAndrew Bevitt <cyfred@gentoo.org>2004-11-30 00:37:44 +0000
commitf0b7cee3fc2d3c99e6f3749b8d71e03fcba7caa6 (patch)
treec6adbf2d4cccaffcb41331680074dc0eb2b97b6c /media-video/nvidia-kernel
parentadd managed option (diff)
downloadhistorical-f0b7cee3fc2d3c99e6f3749b8d71e03fcba7caa6.tar.gz
historical-f0b7cee3fc2d3c99e6f3749b8d71e03fcba7caa6.tar.bz2
historical-f0b7cee3fc2d3c99e6f3749b8d71e03fcba7caa6.zip
Removing all the masked (deprecated) versions.
Diffstat (limited to 'media-video/nvidia-kernel')
-rw-r--r--media-video/nvidia-kernel/ChangeLog25
-rw-r--r--media-video/nvidia-kernel/Manifest62
-rw-r--r--media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff2493
-rw-r--r--media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff2538
-rw-r--r--media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff2547
-rw-r--r--media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff15
-rw-r--r--media-video/nvidia-kernel/files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff2109
-rw-r--r--media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch31
-rw-r--r--media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff2479
-rw-r--r--media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff2808
-rw-r--r--media-video/nvidia-kernel/files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff151
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/Makefile149
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch829
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch182
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch166
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch20
-rw-r--r--media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch52
-rw-r--r--media-video/nvidia-kernel/files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch211
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r31
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4496-r31
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.44991
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5328-r11
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5332-r11
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5336-r41
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6106-r12
-rw-r--r--media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6111-r22
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild152
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.4496-r3.ebuild155
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.4499.ebuild150
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.5328-r1.ebuild164
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.5332-r1.ebuild156
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r4.ebuild160
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.6106-r1.ebuild129
-rw-r--r--media-video/nvidia-kernel/nvidia-kernel-1.0.6111-r2.ebuild139
34 files changed, 34 insertions, 18048 deletions
diff --git a/media-video/nvidia-kernel/ChangeLog b/media-video/nvidia-kernel/ChangeLog
index 3105b26e1611..06c6fd13f37d 100644
--- a/media-video/nvidia-kernel/ChangeLog
+++ b/media-video/nvidia-kernel/ChangeLog
@@ -1,6 +1,29 @@
# ChangeLog for media-video/nvidia-kernel
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/ChangeLog,v 1.101 2004/11/28 12:43:20 johnm Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/ChangeLog,v 1.102 2004/11/30 00:37:44 cyfred Exp $
+
+ 30 Nov 2004; Andrew Bevitt <cyfred@gentoo.org>
+ -files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff,
+ -files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff,
+ -files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff,
+ -files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff,
+ -files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff,
+ -files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch,
+ -files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff,
+ -files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff,
+ -files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff,
+ -files/1.0.5336/Makefile,
+ -files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch,
+ -files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch,
+ -files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch,
+ -files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch,
+ -files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch,
+ -files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch,
+ -nvidia-kernel-1.0.4363-r3.ebuild, -nvidia-kernel-1.0.4496-r3.ebuild,
+ -nvidia-kernel-1.0.4499.ebuild, -nvidia-kernel-1.0.5328-r1.ebuild,
+ -nvidia-kernel-1.0.5332-r1.ebuild, -nvidia-kernel-1.0.5336-r4.ebuild,
+ -nvidia-kernel-1.0.6106-r1.ebuild, -nvidia-kernel-1.0.6111-r2.ebuild:
+ Removing all the masked (deprecated) versions.
28 Nov 2004; John Mylchreest <johnm@gentoo.org> :
Forgot to update this so doing so now. after adding support for
diff --git a/media-video/nvidia-kernel/Manifest b/media-video/nvidia-kernel/Manifest
index 1dd3d512b00e..a89497def10a 100644
--- a/media-video/nvidia-kernel/Manifest
+++ b/media-video/nvidia-kernel/Manifest
@@ -1,63 +1,21 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-MD5 3aaa58176d80f6684f305e8a0240ef2f nvidia-kernel-1.0.6106-r1.ebuild 3623
+MD5 5bc9c55bbc50851ee7e545f62ed2b238 ChangeLog 26407
+MD5 c84a79e7d9b69a204003fb8c2dbaad01 metadata.xml 297
MD5 20b06fba9299e6dd5c9a81afbbb44385 nvidia-kernel-1.0.6629.ebuild 4401
-MD5 b5275c8797b4ec75716a04c8c9273fa7 nvidia-kernel-1.0.4499.ebuild 4026
-MD5 9fd1bc7f640bcab70de6aecd7a6d5105 nvidia-kernel-1.0.6111-r2.ebuild 4113
-MD5 ca5b83d42ef85a76927ca4372fa527f2 nvidia-kernel-1.0.5332-r1.ebuild 4254
-MD5 629e2c50f2d8d26979decb9e58030ae2 nvidia-kernel-1.0.5328-r1.ebuild 4463
-MD5 3bf6bcd6581fce2df5e410cfc2acba3f nvidia-kernel-1.0.4496-r3.ebuild 4284
MD5 63a5b30228e33e7d1fc441ad59ca5ea3 nvidia-kernel-1.0.6111-r3.ebuild 6305
-MD5 4e1d103a4e151f53d4bd38b12de4a592 nvidia-kernel-1.0.4363-r3.ebuild 4069
-MD5 1f38007839acacbeb6d04954e991a90c ChangeLog 25036
-MD5 c84a79e7d9b69a204003fb8c2dbaad01 metadata.xml 297
-MD5 4a752bd1eb81a261506593b82daaa8c7 nvidia-kernel-1.0.5336-r4.ebuild 4783
-MD5 497ffcbd6a91ed9447dfdf7b736925bd files/digest-nvidia-kernel-1.0.5328-r1 80
-MD5 cf7b2bb276c568f0f66d10951b4ce3ad files/digest-nvidia-kernel-1.0.5332-r1 83
-MD5 1316f73c0eecd8832bb362a3d5ca4892 files/digest-nvidia-kernel-1.0.5336-r4 80
-MD5 50ffea0f5eb12d252905f379bc7be2d6 files/digest-nvidia-kernel-1.0.6106-r1 163
-MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r2 163
-MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r3 163
-MD5 046ed3744551619863faea8c5c83db02 files/digest-nvidia-kernel-1.0.4499 74
MD5 8a4687b0fc3e7cc0b36c247697d94701 files/digest-nvidia-kernel-1.0.6629 163
-MD5 56ebaa3ba92e9db848baea746a6aef1a files/digest-nvidia-kernel-1.0.4363-r3 74
-MD5 a88479c177f936b6ef19fc73bb39d149 files/digest-nvidia-kernel-1.0.4496-r3 80
+MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r3 163
MD5 b6a9c4bdd3961980af4a70f57485d708 files/nvidia-1.1 441
-MD5 f7d7092e9eb9fbe926ff1b8aa9b3f50e files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff 79485
-MD5 183b64f528e98221291072f12db5859d files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff 608
-MD5 c0f21cb76a7471671ec9665968dfaafb files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff 81900
-MD5 6d98825a3cf78f4a5ce42d4f4decab89 files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff 81553
-MD5 c2a29e883336157e1a3e99a0bceca549 files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff 69389
-MD5 e6571e952e13f13d9910b7ad29eaeb4a files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch 970
-MD5 0d4e20c2320c685caad56e357cff0b0c files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff 95197
-MD5 f04497fe1a0f76fcc41a93b554072c4a files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff 77616
-MD5 4c7749ca72483547e15031a2af560415 files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff 7216
-MD5 276907ebd8946791398f5f24c27e54c4 files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch 5666
-MD5 6b364c4b64c6de0aea70163850fa3914 files/1.0.5336/Makefile 4410
-MD5 d48d291f79542df558588d1d3575d51c files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch 1681
-MD5 442f1483c003d291a90dfcc87903b045 files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch 18711
-MD5 5dc4b9a2463cb459721ae3e642f6239f files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch 886
-MD5 7bf40e44b8f2181a1047ddfd13acd6b3 files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch 5439
-MD5 bc61be48f85d84f91d2035fa3cc92a47 files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch 6659
MD5 762e6f6e16aa6dd5b2469e99fe8decd3 files/1.0.6111/nv-pci_find_class.patch 2903
+MD5 c2b155f40d7b904f07550e8e326969c2 files/1.0.6111/nv-remap-range.patch 5715
+MD5 29eafcaf7ab5d59dd90d3d3243bf57c3 files/1.0.6111/nv_enable_pci.patch 3640
+MD5 5177339888e44bb5f4b6124fa5830e7f files/1.0.6111/vmalloc-reserve.patch 542
MD5 b5b7f947ffb9e6c19f7457ff7c14d0db files/1.0.6111/conftest_koutput_includes.patch 1082
MD5 14924b09123b075f910c73316baff848 files/1.0.6111/power-suspend-2.6.9-changes.patch 856
-MD5 5177339888e44bb5f4b6124fa5830e7f files/1.0.6111/vmalloc-reserve.patch 542
-MD5 29eafcaf7ab5d59dd90d3d3243bf57c3 files/1.0.6111/nv_enable_pci.patch 3640
-MD5 c2b155f40d7b904f07550e8e326969c2 files/1.0.6111/nv-remap-range.patch 5715
-MD5 64d76075a90dedc83f1dc971389c910e files/1.0.6629/nv-shutup-warnings.patch 712
-MD5 c3d0a0f59fa6b06a5ee139fb01858287 files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch 542
+MD5 e70739410861defb6bf3d40f2706d554 files/1.0.6629/nv-pgd_offset.patch 3139
+MD5 0009ccc8f3896f22bad06fd549639072 files/1.0.6629/nv-pgprot-speedup.patch 1518
MD5 dbf80a2cbaf69a10521429e1b2a7e10c files/1.0.6629/conftest_koutput_includes.patch 1082
MD5 5aef5c6a394896bbb8392816f6795147 files/1.0.6629/nv-amd64-shutup-warnings.patch 902
+MD5 c3d0a0f59fa6b06a5ee139fb01858287 files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch 542
MD5 ddeae194df6bb2112d7de723df8d84c2 files/1.0.6629/nv-fix-memory-limit.patch 18398
-MD5 0009ccc8f3896f22bad06fd549639072 files/1.0.6629/nv-pgprot-speedup.patch 1518
-MD5 e70739410861defb6bf3d40f2706d554 files/1.0.6629/nv-pgd_offset.patch 3139
+MD5 64d76075a90dedc83f1dc971389c910e files/1.0.6629/nv-shutup-warnings.patch 712
MD5 7c9db721d244f6ca709e2b8003ce4e0d files/1.0.6629/nv-vm_flags-no-VM_LOCKED.patch 677
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.6 (GNU/Linux)
-
-iD8DBQFBqcfzKiUX0BdHiZkRApr6AJ4jJcUtDY8WjpHekSN0hYSxQcKdgQCg4C75
-tMXnL9IIIh1bs+yqTF7odCM=
-=vNss
------END PGP SIGNATURE-----
diff --git a/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff b/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff
deleted file mode 100644
index 40993cd78d7f..000000000000
--- a/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff
+++ /dev/null
@@ -1,2493 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-4363/Makefile NVIDIA_kernel-1.0-4363-2.5/Makefile
---- NVIDIA_kernel-1.0-4363/Makefile 2003-04-20 03:57:20.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,169 +0,0 @@
--# This Makefile is automatically generated; do not edit
--# Generated on 'builder3.nvidia.com' on Sat Apr 19 17:46:47 PDT 2003
--
--LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4363 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
--INCLUDES=-I.
--
--OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
--HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
--
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
--
--RESMAN_KERNEL_MODULE=nv-kernel.o
--
--KERNDIR=/lib/modules/$(shell uname -r)
--
--# check for newer paths. if found, use them, otherwise use old paths
--# these wouldn't work with the gnu make included with rh6.2
--# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
--# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
--
--# this is slightly more brain-dead, but works..
--ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
--KERNINC=$(KERNDIR)/build/include
--else
--KERNINC=/usr/src/linux/include
--endif
--
--ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
--INSTALLDIR=$(KERNDIR)/kernel/drivers/video
--else
--INSTALLDIR=$(KERNDIR)/video
--endif
--
--ifeq ($(shell echo $(NVDEBUG)),1)
-- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-- RMDEBUG=1
-- endif
--endif
--
--ifeq ($(shell echo $(RMDEBUG)),1)
--CFLAGS += -DDEBUG -g -fno-common
--endif
--
--# this is just plain wrong, get rid of it
--BROKENDIR=$(KERNDIR)/kernel/video
--
--INSTALL=$(shell which install)
--
--# determine gcc versions used (kernel, nvidia.o)
--module_cc:=$(shell $(CC) -v 2>&1 | tail -1)
--version="^Linux version [^(]* (.*@.*) (\(.*\)) .*"
--kernel_cc:=$(shell cat /proc/version | sed "s/"$(version)"/\1/")
--
--module_cc:=$(shell echo "$(module_cc)" | cut -d ' ' -f 3)
--kernel_cc:=$(shell echo "$(kernel_cc)" | cut -d ' ' -f 3)
--
--# allow specification of alternate include file tree on command line and extra defines
--ifdef SYSINCLUDE
--INCLUDES += -I$(SYSINCLUDE)
--else
--INCLUDES += -I$(KERNINC)
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-- DEFINES += -DREMAP_PAGE_RANGE_5
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-- DEFINES += -DREMAP_PAGE_RANGE_4
--endif
--
--DEFINES+=$(EXTRA_DEFINES)
--
--# allow build parameters to be passed in through the environment
--ifdef BUILD_PARAMS
-- DEFINES+=-D$(BUILD_PARAMS)
--endif
--
--VERSION_HDR=nv_compiler.h
--
--all: install
--
--install: package-install
--
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- /sbin/depmod -a && \
-- /sbin/modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-- fi
--
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if /sbin/lsmod | grep nvidia > /dev/null; then \
-- if ! /sbin/rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if /sbin/lsmod | grep NVdriver > /dev/null; then \
-- if ! /sbin/rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-- fi
--
--gcc-check:
-- @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
-- if [ $(kernel_cc) != $(module_cc) ]; then \
-- echo " "; \
-- echo "You appear to be compiling the NVIDIA kernel module with "; \
-- echo "a compiler different from the one that was used to compile "; \
-- echo "the running kernel. This may be perfectly fine, but there "; \
-- echo "are cases where this can lead to unexpected behaviour and "; \
-- echo "system crashes. "; \
-- echo " "; \
-- echo "If you know what you are doing and want to override this "; \
-- echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-- echo " "; \
-- echo "In any other case, set the CC environment variable to the "; \
-- echo "name of the compiler that was used to compile the kernel. "; \
-- echo " "; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed cc sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1; \
-- fi \
-- fi
--
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--$(VERSION_HDR):
-- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -1`\" > $@
--
--$(LINUX_MODULE): $(OBJECTS)
-- ld -r -o $@ $(OBJECTS)
--
--%.o: %.c $(HEADERS)
-- $(CC) -c $(CFLAGS) $<
--
--# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
--%.i: %.c
-- $(CC) $(CFLAGS) -E $< > $@
--
--%.s: %.c
-- $(CC) $(CFLAGS) -S $< > $@
--
--
--clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
--
--
---include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4363/Makefile.kbuild NVIDIA_kernel-1.0-4363-2.5/Makefile.kbuild
---- NVIDIA_kernel-1.0-4363/Makefile.kbuild 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4363-2.5/Makefile.kbuild 2003-06-14 23:42:40.000000000 +0200
-@@ -0,0 +1,258 @@
-+#
-+# KBUILD Makefile for the NVIDIA Linux kernel module.
-+#
-+# The motivation for replacing the original Makefile is the hope that this
-+# version will simplify the build and installation process. In the past,
-+# many architectural and cosmetic changes to the Linux kernel have made it
-+# difficult to maintain compatibility or required duplication of logic.
-+#
-+# Linux 2.5 introduces numerous such changes, many of which impact modules.
-+# Relying on KBUILD, some aspects of the build system otherwise difficult
-+# to support (for example, module versioning) are abstracted away and dealt
-+# with elsewhere, making life significantly easier here.
-+#
-+# The new approach currently has its own share of problems, some of which
-+# are architectural difficulties with KBUILD, others minor annoyances. For
-+# this reason, an improved version of the NVIDIA Makefile is available to
-+# those experiencing difficulties.
-+#
-+# Please report any problems you may be experiencing with this experimental
-+# Makefile to either one (or, preferably, both) of us:
-+#
-+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
-+# Christian Zander (zander@mail.minion.de) (enhancements)
-+#
-+
-+all: install
-+install: package-install
-+
-+#
-+# The NVIDIA kernel module base name and static file names. KBUILD will go
-+# ahead and append ".o" or ".ko" to form the final module name.
-+#
-+
-+MODULE_NAME := nvidia
-+VERSION_HEADER := nv_compiler.h
-+
-+#
-+# List of object files to link into NVIDIA kernel module; make sure KBUILD
-+# understands that we want a module.
-+#
-+
-+RESMAN_CORE_OBJS := nv-kernel.o
-+RESMAN_GLUE_OBJS := nv.o os-agp.o os-interface.o os-registry.o
-+
-+$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)
-+
-+#
-+# A bug in KBUILD 2.4 means that leaving obj-m set in top-level context
-+# will cause Rules.make to call pathdown.sh, which is wrong. So, we only
-+# set this conditional of a kernel-level instance.
-+#
-+
-+ifdef TOPDIR
-+obj-m += $(MODULE_NAME).o
-+endif
-+
-+#
-+# Include local source directory in $(CC)'s include path and set disable any
-+# warning types that are of little interest to us.
-+#
-+
-+EXTRA_CFLAGS += -I$(src)
-+EXTRA_CFLAGS += -Wno-cast-qual -Wno-strict-prototypes
-+
-+#
-+# Determine location of the Linux kernel source tree. Allow users to override
-+# the default (i.e. automatically determined) kernel source location with the
-+# KERNDIR directive; this new directive replaces NVIDIA's SYSINCLUDE.
-+#
-+
-+ifdef KERNDIR
-+ KERNEL_SOURCES := $(KERNDIR)
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers # XXX
-+else
-+ KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers
-+endif
-+
-+#
-+# We rely on these two definitions below; if they aren't set, we set them to
-+# reasonable defaults (Linux 2.4's KBUILD, and top-level passes will not set
-+# these).
-+#
-+
-+src ?= .
-+obj ?= .
-+
-+#
-+# Sets any internal variables left unset by KBUILD (e.g. this happens during
-+# a top-level run).
-+#
-+
-+TOPDIR ?= $(KERNEL_SOURCES)
-+PATCHLEVEL ?= $(shell sh $(src)/conftest.sh kernel_patch_level $(TOPDIR))
-+
-+#
-+# Linux 2.4 uses the .o module extension. Linux 2.5, however, uses the .ko
-+# module extension. Handle these gracefully.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+ MODULE_OBJECT := $(MODULE_NAME).o
-+else
-+ MODULE_OBJECT := $(MODULE_NAME).ko
-+endif
-+
-+#
-+# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become
-+# necessary with the introduction of the five argument version to Linux 2.4
-+# distribution kernels; this conflicting change cannot be detected at compile
-+# time.
-+#
-+
-+EXTRA_CFLAGS += -DNTRM -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4348 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+ EXTRA_CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 5)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 4)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+#
-+# NVIDIA binary object file includes .common section.
-+#
-+
-+EXTRA_LDFLAGS := -d
-+
-+#
-+# Miscellaneous NVIDIA kernel module build support targets. They are needed
-+# to satisfy KBUILD requirements and to support NVIDIA specifics.
-+#
-+
-+$(obj)/nv-kernel.o:
-+ cp $(src)/$(RESMAN_CORE_OBJS) $(obj)/$(RESMAN_CORE_OBJS)
-+
-+$(obj)/$(VERSION_HEADER):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(obj)/nv.o: $(obj)/$(VERSION_HEADER)
-+
-+#
-+# More quirks for Linux 2.4 KBUILD, which doesn't link automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+$(obj)/$(MODULE_NAME).o: $($(MODULE_NAME)-objs)
-+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $($(MODULE_NAME)-objs)
-+endif
-+
-+#
-+# KBUILD build parameters.
-+#
-+
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+
-+#
-+# NVIDIA sanity checks.
-+#
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check $(MODULE_NAME); then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module using Linux KBUILD. This target is used by
-+# the "package-install" target below.
-+#
-+
-+module: cc-sanity-check
-+ @make $(KBUILD_PARAMS) modules; \
-+ if ! [ -f $(MODULE_OBJECT) ]; then \
-+ echo "$(MODULE_OBJECT) failed to build!"; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module with KBUILD. Verify that the user posesses
-+# sufficient privileges. Rebuild the module dependency file.
-+#
-+
-+module-install: suser-sanity-check module
-+ @mkdir -p $(MODULE_ROOT)/video; \
-+ install -m 0664 -o root -g root $(MODULE_OBJECT) $(MODULE_ROOT)/video; \
-+ /sbin/depmod -ae;
-+
-+#
-+# This target builds, then installs, then creates device nodes and inserts
-+# the module, if successful.
-+#
-+
-+package-install: module-install rmmod-sanity-check
-+ @sh makedevices.sh; \
-+ /sbin/modprobe $(MODULE_NAME) && \
-+ echo "$(MODULE_OBJECT) installed successfully.";
-+
-+#
-+# Support hack, KBUILD isn't prepared to clean up after external modules.
-+#
-+
-+clean:
-+ @rm -f $(RESMAN_GLUE_OBJS) .*.{cmd,flags}
-+ @rm -f $(MODULE_NAME).{o,ko,mod.{o,c}} built-in.o $(VERSION_HEADER) *~
-+
-+#
-+# Linux 2.4 KBUILD requires the inclusion of Rules.make; Linux 2.5's KBUILD
-+# includes dependencies automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+include $(KERNEL_SOURCES)/Rules.make
-+endif
-diff -ruN NVIDIA_kernel-1.0-4363/Makefile.nvidia NVIDIA_kernel-1.0-4363-2.5/Makefile.nvidia
---- NVIDIA_kernel-1.0-4363/Makefile.nvidia 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4363-2.5/Makefile.nvidia 2003-06-02 00:10:13.000000000 +0200
-@@ -0,0 +1,154 @@
-+# This Makefile is automatically generated; do not edit
-+# Generated on 'builder3.nvidia.com' on Mon Mar 24 16:36:51 PST 2003
-+
-+LINUX_MODULE=nv-linux.o
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4348 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+INCLUDES=-I.
-+
-+OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-+HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-+
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+
-+RESMAN_KERNEL_MODULE=nv-kernel.o
-+
-+KERNDIR=/lib/modules/$(shell uname -r)
-+
-+# check for newer paths. if found, use them, otherwise use old paths
-+# these wouldn't work with the gnu make included with rh6.2
-+# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-+# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-+
-+# this is slightly more brain-dead, but works..
-+ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-+KERNINC=$(KERNDIR)/build/include
-+else
-+KERNINC=/usr/src/linux/include
-+endif
-+
-+ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-+INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-+else
-+INSTALLDIR=$(KERNDIR)/video
-+endif
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+# this is just plain wrong, get rid of it
-+BROKENDIR=$(KERNDIR)/kernel/video
-+
-+INSTALL=$(shell which install)
-+
-+# allow specification of alternate include file tree on command line and extra defines
-+ifdef SYSINCLUDE
-+INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-+else
-+INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-+ DEFINES += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-+ DEFINES += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+DEFINES+=$(EXTRA_DEFINES)
-+
-+# allow build parameters to be passed in through the environment
-+ifdef BUILD_PARAMS
-+ DEFINES+=-D$(BUILD_PARAMS)
-+endif
-+
-+VERSION_HDR=nv_compiler.h
-+
-+all: install
-+
-+install: package-install
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.o installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+
-+$(VERSION_HDR):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(LINUX_MODULE): $(OBJECTS)
-+ ld -r -o $@ $(OBJECTS)
-+
-+%.o: %.c $(HEADERS)
-+ $(CC) -c $(CFLAGS) $<
-+
-+# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-+%.i: %.c
-+ $(CC) $(CFLAGS) -E $< > $@
-+
-+%.s: %.c
-+ $(CC) $(CFLAGS) -S $< > $@
-+
-+
-+clean:
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+
-+
-+-include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4363/conftest.sh NVIDIA_kernel-1.0-4363-2.5/conftest.sh
---- NVIDIA_kernel-1.0-4363/conftest.sh 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/conftest.sh 2003-06-02 00:10:13.000000000 +0200
-@@ -37,5 +37,78 @@
- exit 1
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH"; then
-+ #
-+ # The user chose to disable this test; this may or may not be
-+ # a wise decision...
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version [^(]* (.*@.*) (\(.*\)) .*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/" | cut -d ' ' -f 3)
-+ MODULE=$($* -v 2>&1 | tail -n 1 | cut -d ' ' -f 3)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -ruN NVIDIA_kernel-1.0-4363/nv-linux.h NVIDIA_kernel-1.0-4363-2.5/nv-linux.h
---- NVIDIA_kernel-1.0-4363/nv-linux.h 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/nv-linux.h 2003-07-14 19:50:22.000000000 +0200
-@@ -20,35 +20,23 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/version.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
- # define KERNEL_2_5
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
-+# define KERNEL_2_5 /* XXX temporary kludge */
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +49,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_5)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +65,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_5
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +82,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -132,70 +124,165 @@
- for (pos = (head)->next; pos != (head); pos = (pos)->next)
- #endif
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18)
--#define vmalloc_32 vmalloc
--#endif
-+#define NV_VMA_OFFSET(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
-+#define NV_VMA_PRIVATE(vma) ((vma)->vm_private_data)
-+
-+#ifdef KERNEL_2_5
-+# define NV_DEVICE_NUMBER(_minor) ((kdev_val(_minor)) & 0x0f)
-+# define NV_IS_CONTROL_DEVICE(_minor) (((kdev_val(_minor)) & 0xff) == 0xff)
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->dev.name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
-+# define NV_IS_CONTROL_DEVICE(_minor) (((_minor) & 0xff) == 0xff)
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#ifndef KERNEL_2_5
-+ typedef void irqreturn_t;
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_5
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define GET_EVENT_QUEUE(nv) ((struct __wait_queue_head *) ((nv)->event_queue))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define GET_EVENT_QUEUE(nv) ((struct wait_queue **) &((nv)->event_queue))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
- #endif
-
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_5
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_5 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
-+ { \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -252,7 +339,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -310,16 +397,17 @@
-
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- U032 vblank_notifier;
- U032 waiting_for_vblank;
-
- /* queue for for NV's OS events */
-- void *event_queue;
-+ wait_queue_head_t waitqueue;
-
- /* get a timer callback every second */
- struct timer_list rc_timer;
-diff -ruN NVIDIA_kernel-1.0-4363/nv.c NVIDIA_kernel-1.0-4363-2.5/nv.c
---- NVIDIA_kernel-1.0-4363/nv.c 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/nv.c 2003-07-14 19:51:20.000000000 +0200
-@@ -16,11 +16,14 @@
- #include "os-agp.h"
-
-
-+MODULE_LICENSE("NVIDIA");
-+
- /*
- * our global state; one per device
- */
-
- nv_linux_state_t nv_linux_devices[NV_MAX_DEVICES] = { { { 0 } } };
-+static int nv_num_devices;
-
- #ifdef CONFIG_PM
- /* XXX PM do we only need one, or one for each device? */
-@@ -36,27 +39,15 @@
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -107,10 +98,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -121,7 +108,7 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -144,6 +131,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -298,8 +286,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x: count %d flags 0x%x\n",
- *page_ptr,
-- (GET_MAP_NR(*page_ptr))->count,
-- (GET_MAP_NR(*page_ptr))->flags);
-+ (virt_to_page(__va(*page_ptr)))->count,
-+ (virt_to_page(__va(*page_ptr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -370,7 +358,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- *page_ptr++ = phys_addr;
- pages_needed--;
-@@ -383,7 +371,7 @@
- while (page_ptr != (unsigned long *) page_list)
- {
- page_ptr--;
-- mem_map_unreserve(GET_MAP_NR(*page_ptr));
-+ ClearPageReserved(virt_to_page(__va(*page_ptr)));
- free_page((unsigned long) phys_to_virt(*page_ptr));
- }
-
-@@ -403,7 +391,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(*page_list));
-+ ClearPageReserved(virt_to_page(__va(*page_list)));
- page_list++;
- pages_left--;
- }
-@@ -569,11 +557,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -635,9 +618,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -726,71 +706,75 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
-- int rc;
-- int num_devices;
-+ int i, rc;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-- num_devices = nvos_probe_devices();
-+ nv_num_devices = nvos_probe_devices();
-
-- if (num_devices == 0) {
-+ if (nv_num_devices == 0) {
- nv_printf(NV_DBG_ERRORS, "nvidia: no NVIDIA graphics adapter found\n");
- return -ENODEV;
- }
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_5)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "init_module: register failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_init_module: register failed\n");
- return rc;
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-- int i;
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
-- for (i = 0; i < num_devices; i++) {
-+ for (i = 0; i < nv_num_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
-+
-+ /*
-+ * Initialize the event queue for this device. This only needs to
-+ * happen once for every device.
-+ */
-+ init_waitqueue_head(&nv_linux_devices[i].waitqueue);
- }
-
- // init the nvidia control device
- {
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
-- nv_ctl_device.event_queue = NULL;
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_device.waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -815,14 +799,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_5)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -830,18 +814,18 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc;
- nv_linux_state_t *nvl;
- nv_linux_state_t *max_devices;
-+ int rc;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
-@@ -866,33 +850,34 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_5)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < nv_num_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -906,11 +891,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -918,8 +903,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -927,11 +910,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -949,22 +932,12 @@
- if (at->page_table)
- nvos_unlock_pages(at->page_table, at->num_pages);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
-
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
-@@ -977,7 +950,7 @@
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1016,7 +989,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1038,14 +1011,11 @@
-
- return page_ptr;
- }
--#endif
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
- nv_kern_vma_nopage,
--#endif
- };
-
-
-@@ -1076,7 +1046,7 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode->i_rdev))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-@@ -1087,9 +1057,6 @@
- goto failed;
- }
-
--
-- MOD_INC_USE_COUNT;
--
- nvl = &nv_linux_devices[devnum];
- nv = NV_STATE_PTR(nvl);
-
-@@ -1137,16 +1104,9 @@
- goto failed;
- }
-
--#if !defined (KERNEL_2_2)
-- NV_KMALLOC(nvl->event_queue, sizeof(struct __wait_queue_head));
-- if (nvl->event_queue == NULL)
-- goto failed;
-- memset(nvl->event_queue, 0, sizeof(struct __wait_queue_head));
--
-- init_waitqueue_head(GET_EVENT_QUEUE(nvl));
--#else
-- nvl->event_queue = NULL;
--#endif
-+ nvl->tasklet.func = (void *) rm_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-@@ -1157,7 +1117,6 @@
- return rc;
-
- failed:
-- MOD_DEC_USE_COUNT;
- nv_unlock_ldata(nv);
- return rc;
- }
-@@ -1179,7 +1138,7 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode->i_rdev))
- return nv_kern_ctl_close(inode, file);
-
- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-@@ -1189,28 +1148,22 @@
- nv_lock_ldata(nv);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1230,12 +1183,6 @@
- }
- }
-
--#if !defined (KERNEL_2_2)
-- /* this only needs to be freed on 2.4 and later kernels */
-- NV_KFREE(nvl->event_queue);
-- nvl->event_queue = NULL;
--#endif
--
- /* leave INIT flag alone so we don't reinit every time */
- nv->flags &= ~(NV_FLAG_OPEN | NV_FLAG_WAITING);
- }
-@@ -1246,8 +1193,6 @@
- NV_KFREE(file->private_data);
- file->private_data = (void *) 0;
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1264,10 +1209,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%lx-0x%lx] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1285,7 +1230,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1293,7 +1238,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1303,7 +1248,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1312,7 +1257,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1322,10 +1267,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock_at(nv);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1343,7 +1288,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1366,13 +1311,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock_at(nv);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1390,7 +1335,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1412,9 +1357,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1439,7 +1381,7 @@
- return nv_kern_ctl_poll (file, wait);
-
- // add us to the list
-- poll_wait(file, GET_EVENT_QUEUE(nvl), wait);
-+ poll_wait(file, &nvl->waitqueue, wait);
-
- nv_lock_ldata(nv);
-
-@@ -1519,12 +1461,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_5)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case _IOC_NR(NV_IOCTL_MODULE_RESET):
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case _IOC_NR(NV_IOCTL_CARD_INFO):
- {
-@@ -1651,7 +1594,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1665,9 +1608,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1760,26 +1704,6 @@
- /* save the nv away in file->private_data */
- NV_HIDE_IN_FILEP(file, nv);
-
-- MOD_INC_USE_COUNT;
--
-- /* if this is the first time the control device has been opened,
-- * allocate the wait queue
-- */
--
-- if (! nvl->event_queue) {
--
--#if !defined (KERNEL_2_2)
-- NV_KMALLOC(nvl->event_queue, sizeof(struct __wait_queue_head));
-- if (nvl->event_queue == NULL)
-- return -ENOMEM;
-- memset(nvl->event_queue, 0, sizeof(struct __wait_queue_head));
--
-- init_waitqueue_head(GET_EVENT_QUEUE(nvl));
--#else
-- nvl->event_queue = NULL;
--#endif
-- }
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1807,15 +1731,7 @@
-
- nv_lock_ldata(nv);
- if (--nv->usage_count == 0)
-- {
--#if !defined (KERNEL_2_2)
-- nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
-- /* this only needs to be freed on 2.4 and later kernels */
-- NV_KFREE(nvl->event_queue);
-- nvl->event_queue = 0;
--#endif
- nv->flags = 0;
-- }
- nv_unlock_ldata(nv);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1825,8 +1741,6 @@
- NV_KFREE(file->private_data);
- file->private_data = (void *) 0;
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1851,7 +1765,7 @@
- if (file->f_flags & O_NONBLOCK)
- return -EAGAIN;
-
-- poll_wait(file, GET_EVENT_QUEUE(nvl), wait);
-+ poll_wait(file, &nvl->waitqueue, wait);
-
- nv_lock_ldata(nv);
-
-@@ -1881,7 +1795,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock_ldata(&(nv_ctl_device.nv_state));
-
-- wake_up_interruptible(GET_EVENT_QUEUE(&nv_ctl_device));
-+ wake_up_interruptible(&nv_ctl_device.waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -1960,7 +1874,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2088,18 +2002,21 @@
- {
- unsigned long retaddr = (unsigned long) at->page_table[i];
-
-- if (retaddr <= MAXMEM)
-- {
-- return __va((retaddr + offset));
-- }
--
-- // if we've allocated via vmalloc on a highmem system, the
-- // physical address may not be accessible via PAGE_OFFSET,
-- // that's ok, we have a simple linear pointer already.
-+ /*
-+ * XXX This routine should be more straight-forward; as it
-+ * is, it returns a pointer into the kernel linear mapping if
-+ * the incoming address belongs to a vmalloc() allocation or
-+ * the kernel logical mapping of the corresponding page if it
-+ * was allocated with alloc_pages(); third case below.
-+ */
- if (at->flags & NV_ALLOC_TYPE_VMALLOC)
- {
- return (void *)((unsigned char *) at->key_mapping + (i << PAGE_SHIFT) + offset);
- }
-+ else if (!(at->flags & NV_ALLOC_TYPE_CONTIG))
-+ {
-+ return __va((retaddr + offset));
-+ }
-
- // ?? this may be a contiguous allocation, fall through
- // to below? or should I just check at->flag here?
-@@ -2169,9 +2086,9 @@
- unsigned long
- nv_get_phys_address(unsigned long address)
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
-
- #if defined(NVCPU_IA64)
- if (address > __IA64_UNCACHED_OFFSET)
-@@ -2184,23 +2101,24 @@
- return __pa(address);
-
- if (address > VMALLOC_START)
-- pg_dir = pgd_offset_k(address);
-+ pgd = pgd_offset_k(address);
- else
-- pg_dir = pgd_offset(current->mm, address);
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
--
-- return ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+
-+ return (NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address);
-
- failed:
- return (unsigned long) NULL;
-@@ -2567,7 +2485,7 @@
-
- nvfp->any_fired_notifiers++;
-
-- wake_up_interruptible(GET_EVENT_QUEUE(nvl));
-+ wake_up_interruptible(&nvl->waitqueue);
- }
-
- /*
-@@ -2584,7 +2502,7 @@
- if (nvl->waiting_for_vblank)
- nvl->vblank_notifier++;
-
-- wake_up_interruptible(GET_EVENT_QUEUE(nvl));
-+ wake_up_interruptible(&nvl->waitqueue);
- }
-
-
-@@ -2633,12 +2551,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else
- status = rm_init_agp(nv);
-diff -ruN NVIDIA_kernel-1.0-4363/os-agp.c NVIDIA_kernel-1.0-4363-2.5/os-agp.c
---- NVIDIA_kernel-1.0-4363/os-agp.c 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/os-agp.c 2003-06-13 23:02:14.000000000 +0200
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -105,13 +70,17 @@
- U032 agp_rate;
- U032 agp_sba;
- U032 agp_fw;
-- char* chipset;
- VOID *bitmap;
- U032 bitmap_size;
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
-@@ -119,48 +88,13 @@
- return 1;
- }
-
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
--
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
- * in some way. This is so we don't try to use nvagp and lock up
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -178,44 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
--
-- switch ( agpinfo.chipset )
-- {
-- case INTEL_GENERIC: chipset = "Intel"; break;
-- case INTEL_LX: chipset = "Intel 440LX"; break;
-- case INTEL_BX: chipset = "Intel 440BX"; break;
-- case INTEL_GX: chipset = "Intel 440GX"; break;
-- case INTEL_I810: chipset = "Intel i810"; break;
-- case INTEL_I840: chipset = "Intel i840"; break;
--#if !defined (KERNEL_2_2)
-- case INTEL_I815: chipset = "Intel i815"; break;
--#if !defined(__rh_config_h__)
-- case INTEL_I850: chipset = "Intel i850"; break;
--#endif
--#endif
--#if defined(NVCPU_IA64)
-- case INTEL_460GX: chipset = "Intel 460GX"; break;
--#endif
-- case VIA_GENERIC: chipset = "VIA"; break;
-- case VIA_VP3: chipset = "VIA VP3"; break;
-- case VIA_MVP3: chipset = "VIA MVP3"; break;
-- case VIA_MVP4: chipset = "VIA MVP4"; break;
--#if !defined (KERNEL_2_2)
-- case VIA_APOLLO_KX133: chipset = "VIA Apollo KX133"; break;
-- case VIA_APOLLO_KT133: chipset = "VIA Apollo KT133"; break;
--#endif
-- case VIA_APOLLO_PRO: chipset = "VIA Apollo Pro"; break;
-- case SIS_GENERIC: chipset = "SiS"; break;
-- case AMD_GENERIC: chipset = "AMD"; break;
-- case AMD_IRONGATE: chipset = "AMD Irongate"; break;
-- case ALI_M1541: chipset = "ALi M1541"; break;
-- case ALI_GENERIC: chipset = "ALi"; break;
-- case NOT_SUPPORTED: chipset = "unsupported"; break;
-- default: chipset = "unknown";
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
- }
--
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: %s chipset\n", chipset);
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -229,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -244,7 +156,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -255,7 +168,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- iounmap(gart.aperture);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -266,39 +180,19 @@
- os_free_mem(bitmap);
- iounmap(gart.aperture);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -332,11 +226,13 @@
- iounmap(gart.aperture);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -383,7 +279,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -391,7 +287,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -408,7 +304,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -423,7 +319,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -462,7 +358,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -480,9 +376,6 @@
- #endif /* AGPGART */
- }
-
--
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -529,9 +422,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -557,8 +447,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -ruN NVIDIA_kernel-1.0-4363/os-interface.c NVIDIA_kernel-1.0-4363-2.5/os-interface.c
---- NVIDIA_kernel-1.0-4363/os-interface.c 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/os-interface.c 2003-06-02 00:10:13.000000000 +0200
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -209,6 +209,11 @@
- U032 size
- )
- {
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -286,7 +291,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -310,7 +315,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -416,7 +421,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -514,8 +519,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -698,14 +703,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -838,16 +843,6 @@
- vaddr = ioremap_nocache(start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- #ifdef DEBUG
- if (mode == NV_MEMORY_WRITECOMBINED) {
- nv_printf(NV_DBG_ERRORS,
-@@ -868,16 +863,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- iounmap(addr);
-- }
-+ iounmap(addr);
- }
-
- VOID* os_map_user_space(
-@@ -981,7 +967,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
-
-@@ -1044,12 +1030,15 @@
- if (sgi_funcs.add_barrier == NULL)
- {
- #if defined(TESTING_SWAP)
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated in Linux 2.5, a
-+ * new mechanism is in place; this code will need to be updated at some
-+ * point.
-+ */
- inter_module_register(ADD_BARRIER_FUNC, THIS_MODULE, sgitest_add_barrier);
- inter_module_register(REMOVE_BARRIER_FUNC, THIS_MODULE, sgitest_remove_barrier);
- inter_module_register(SWAP_READY_FUNC, THIS_MODULE, sgitest_swap_ready);
- #endif
--#endif
- sgi_funcs.add_barrier = GET_MODULE_SYMBOL(0, ADD_BARRIER_FUNC);
- sgi_funcs.remove_barrier = GET_MODULE_SYMBOL(0, REMOVE_BARRIER_FUNC);
- sgi_funcs.swap_ready = GET_MODULE_SYMBOL(0, SWAP_READY_FUNC);
-diff -ruN NVIDIA_kernel-1.0-4363/os-registry.c NVIDIA_kernel-1.0-4363-2.5/os-registry.c
---- NVIDIA_kernel-1.0-4363/os-registry.c 2003-04-20 03:57:19.000000000 +0200
-+++ NVIDIA_kernel-1.0-4363-2.5/os-registry.c 2003-06-02 00:10:13.000000000 +0200
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff b/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff
deleted file mode 100644
index 5e677a81f1bf..000000000000
--- a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff
+++ /dev/null
@@ -1,2538 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile NVIDIA_kernel-1.0-4496-2.6/Makefile
---- NVIDIA_kernel-1.0-4496/Makefile 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,169 +0,0 @@
--# This Makefile is automatically generated; do not edit
--# Generated on 'builder3.nvidia.com' on Wed Jul 16 19:03:10 PDT 2003
--
--LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4496 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
--INCLUDES=-I.
--
--OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
--HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
--
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
--
--RESMAN_KERNEL_MODULE=nv-kernel.o
--
--KERNDIR=/lib/modules/$(shell uname -r)
--
--# check for newer paths. if found, use them, otherwise use old paths
--# these wouldn't work with the gnu make included with rh6.2
--# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
--# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
--
--# this is slightly more brain-dead, but works..
--ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
--KERNINC=$(KERNDIR)/build/include
--else
--KERNINC=/usr/src/linux/include
--endif
--
--ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
--INSTALLDIR=$(KERNDIR)/kernel/drivers/video
--else
--INSTALLDIR=$(KERNDIR)/video
--endif
--
--ifeq ($(shell echo $(NVDEBUG)),1)
-- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-- RMDEBUG=1
-- endif
--endif
--
--ifeq ($(shell echo $(RMDEBUG)),1)
--CFLAGS += -DDEBUG -g -fno-common
--endif
--
--# this is just plain wrong, get rid of it
--BROKENDIR=$(KERNDIR)/kernel/video
--
--INSTALL=$(shell which install)
--
--# determine gcc versions used (kernel, nvidia.o)
--module_cc:=$(shell $(CC) -v 2>&1 | tail -n 1)
--version="^Linux version [^(]* (.*@.*) (\(.*\)) .*"
--kernel_cc:=$(shell cat /proc/version | sed "s/"$(version)"/\1/")
--
--module_cc:=$(shell echo "$(module_cc)" | cut -d ' ' -f 3)
--kernel_cc:=$(shell echo "$(kernel_cc)" | cut -d ' ' -f 3)
--
--# allow specification of alternate include file tree on command line and extra defines
--ifdef SYSINCLUDE
--INCLUDES += -I$(SYSINCLUDE)
--else
--INCLUDES += -I$(KERNINC)
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-- DEFINES += -DREMAP_PAGE_RANGE_5
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-- DEFINES += -DREMAP_PAGE_RANGE_4
--endif
--
--DEFINES+=$(EXTRA_DEFINES)
--
--# allow build parameters to be passed in through the environment
--ifdef BUILD_PARAMS
-- DEFINES+=-D$(BUILD_PARAMS)
--endif
--
--VERSION_HDR=nv_compiler.h
--
--all: install
--
--install: package-install
--
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-- fi
--
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if PATH="$(PATH):/bin:/sbin" lsmod | grep -w nvidia > /dev/null; then \
-- if ! PATH="($PATH):/bin:/sbin" rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if PATH="$(PATH):/bin:/sbin" lsmod | grep -w NVdriver > /dev/null; then \
-- if ! PATH="$(PATH):/bin:/sbin" rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-- fi
--
--gcc-check:
-- @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
-- if [ "$(kernel_cc)" != "$(module_cc)" ]; then \
-- echo " "; \
-- echo "You appear to be compiling the NVIDIA kernel module with "; \
-- echo "a compiler different from the one that was used to compile "; \
-- echo "the running kernel. This may be perfectly fine, but there "; \
-- echo "are cases where this can lead to unexpected behaviour and "; \
-- echo "system crashes. "; \
-- echo " "; \
-- echo "If you know what you are doing and want to override this "; \
-- echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-- echo " "; \
-- echo "In any other case, set the CC environment variable to the "; \
-- echo "name of the compiler that was used to compile the kernel. "; \
-- echo " "; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed cc sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1; \
-- fi \
-- fi
--
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--$(VERSION_HDR):
-- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
--
--$(LINUX_MODULE): $(OBJECTS)
-- ld -r -o $@ $(OBJECTS)
--
--%.o: %.c $(HEADERS)
-- $(CC) -c $(CFLAGS) $<
--
--# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
--%.i: %.c
-- $(CC) $(CFLAGS) -E $< > $@
--
--%.s: %.c
-- $(CC) $(CFLAGS) -S $< > $@
--
--
--clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
--
--
---include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile.kbuild NVIDIA_kernel-1.0-4496-2.6/Makefile.kbuild
---- NVIDIA_kernel-1.0-4496/Makefile.kbuild 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile.kbuild 2003-07-31 19:52:00.000000000 +0200
-@@ -0,0 +1,258 @@
-+#
-+# KBUILD Makefile for the NVIDIA Linux kernel module.
-+#
-+# The motivation for replacing the original Makefile is the hope that this
-+# version will simplify the build and installation process. In the past,
-+# many architectural and cosmetic changes to the Linux kernel have made it
-+# difficult to maintain compatibility or required duplication of logic.
-+#
-+# Linux 2.5 introduces numerous such changes, many of which impact modules.
-+# Relying on KBUILD, some aspects of the build system otherwise difficult
-+# to support (for example, module versioning) are abstracted away and dealt
-+# with elsewhere, making life significantly easier here.
-+#
-+# The new approach currently has its own share of problems, some of which
-+# are architectural difficulties with KBUILD, others minor annoyances. For
-+# this reason, an improved version of the NVIDIA Makefile is available to
-+# those experiencing difficulties.
-+#
-+# Please report any problems you may be experiencing with this experimental
-+# Makefile to either one (or, preferably, both) of us:
-+#
-+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
-+# Christian Zander (zander@mail.minion.de) (enhancements)
-+#
-+
-+all: install
-+install: package-install
-+
-+#
-+# The NVIDIA kernel module base name and static file names. KBUILD will go
-+# ahead and append ".o" or ".ko" to form the final module name.
-+#
-+
-+MODULE_NAME := nvidia
-+VERSION_HEADER := nv_compiler.h
-+
-+#
-+# List of object files to link into NVIDIA kernel module; make sure KBUILD
-+# understands that we want a module.
-+#
-+
-+RESMAN_CORE_OBJS := nv-kernel.o
-+RESMAN_GLUE_OBJS := nv.o os-agp.o os-interface.o os-registry.o
-+
-+$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)
-+
-+#
-+# A bug in KBUILD 2.4 means that leaving obj-m set in top-level context
-+# will cause Rules.make to call pathdown.sh, which is wrong. So, we only
-+# set this conditional of a kernel-level instance.
-+#
-+
-+ifdef TOPDIR
-+obj-m += $(MODULE_NAME).o
-+endif
-+
-+#
-+# Include local source directory in $(CC)'s include path and set disable any
-+# warning types that are of little interest to us.
-+#
-+
-+EXTRA_CFLAGS += -I$(src)
-+EXTRA_CFLAGS += -Wno-cast-qual -Wno-strict-prototypes
-+
-+#
-+# Determine location of the Linux kernel source tree. Allow users to override
-+# the default (i.e. automatically determined) kernel source location with the
-+# KERNDIR directive; this new directive replaces NVIDIA's SYSINCLUDE.
-+#
-+
-+ifdef KERNDIR
-+ KERNEL_SOURCES := $(KERNDIR)
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers # XXX
-+else
-+ KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers
-+endif
-+
-+#
-+# We rely on these two definitions below; if they aren't set, we set them to
-+# reasonable defaults (Linux 2.4's KBUILD, and top-level passes will not set
-+# these).
-+#
-+
-+src ?= .
-+obj ?= .
-+
-+#
-+# Sets any internal variables left unset by KBUILD (e.g. this happens during
-+# a top-level run).
-+#
-+
-+TOPDIR ?= $(KERNEL_SOURCES)
-+PATCHLEVEL ?= $(shell sh $(src)/conftest.sh kernel_patch_level $(TOPDIR))
-+
-+#
-+# Linux 2.4 uses the .o module extension. Linux 2.5, however, uses the .ko
-+# module extension. Handle these gracefully.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+ MODULE_OBJECT := $(MODULE_NAME).o
-+else
-+ MODULE_OBJECT := $(MODULE_NAME).ko
-+endif
-+
-+#
-+# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become
-+# necessary with the introduction of the five argument version to Linux 2.4
-+# distribution kernels; this conflicting change cannot be detected at compile
-+# time.
-+#
-+
-+EXTRA_CFLAGS += -DNTRM -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4496 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+ EXTRA_CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 5)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 4)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+#
-+# NVIDIA binary object file includes .common section.
-+#
-+
-+EXTRA_LDFLAGS := -d
-+
-+#
-+# Miscellaneous NVIDIA kernel module build support targets. They are needed
-+# to satisfy KBUILD requirements and to support NVIDIA specifics.
-+#
-+
-+$(obj)/nv-kernel.o:
-+ cp $(src)/$(RESMAN_CORE_OBJS) $(obj)/$(RESMAN_CORE_OBJS)
-+
-+$(obj)/$(VERSION_HEADER):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(obj)/nv.o: $(obj)/$(VERSION_HEADER)
-+
-+#
-+# More quirks for Linux 2.4 KBUILD, which doesn't link automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+$(obj)/$(MODULE_NAME).o: $($(MODULE_NAME)-objs)
-+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $($(MODULE_NAME)-objs)
-+endif
-+
-+#
-+# KBUILD build parameters.
-+#
-+
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+
-+#
-+# NVIDIA sanity checks.
-+#
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check $(MODULE_NAME); then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module using Linux KBUILD. This target is used by
-+# the "package-install" target below.
-+#
-+
-+module: cc-sanity-check
-+ @make $(KBUILD_PARAMS) modules; \
-+ if ! [ -f $(MODULE_OBJECT) ]; then \
-+ echo "$(MODULE_OBJECT) failed to build!"; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module with KBUILD. Verify that the user posesses
-+# sufficient privileges. Rebuild the module dependency file.
-+#
-+
-+module-install: suser-sanity-check module
-+ @mkdir -p $(MODULE_ROOT)/video; \
-+ install -m 0664 -o root -g root $(MODULE_OBJECT) $(MODULE_ROOT)/video; \
-+ /sbin/depmod -ae;
-+
-+#
-+# This target builds, then installs, then creates device nodes and inserts
-+# the module, if successful.
-+#
-+
-+package-install: module-install rmmod-sanity-check
-+ @sh makedevices.sh; \
-+ /sbin/modprobe $(MODULE_NAME) && \
-+ echo "$(MODULE_OBJECT) installed successfully.";
-+
-+#
-+# Support hack, KBUILD isn't prepared to clean up after external modules.
-+#
-+
-+clean:
-+ @rm -f $(RESMAN_GLUE_OBJS) .*.{cmd,flags}
-+ @rm -f $(MODULE_NAME).{o,ko,mod.{o,c}} built-in.o $(VERSION_HEADER) *~
-+
-+#
-+# Linux 2.4 KBUILD requires the inclusion of Rules.make; Linux 2.5's KBUILD
-+# includes dependencies automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+include $(KERNEL_SOURCES)/Rules.make
-+endif
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile.nvidia NVIDIA_kernel-1.0-4496-2.6/Makefile.nvidia
---- NVIDIA_kernel-1.0-4496/Makefile.nvidia 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile.nvidia 2003-07-31 19:52:06.000000000 +0200
-@@ -0,0 +1,154 @@
-+# This Makefile is automatically generated; do not edit
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-+
-+LINUX_MODULE=nv-linux.o
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4480 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+INCLUDES=-I.
-+
-+OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-+HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-+
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+
-+RESMAN_KERNEL_MODULE=nv-kernel.o
-+
-+KERNDIR=/lib/modules/$(shell uname -r)
-+
-+# check for newer paths. if found, use them, otherwise use old paths
-+# these wouldn't work with the gnu make included with rh6.2
-+# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-+# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-+
-+# this is slightly more brain-dead, but works..
-+ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-+KERNINC=$(KERNDIR)/build/include
-+else
-+KERNINC=/usr/src/linux/include
-+endif
-+
-+ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-+INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-+else
-+INSTALLDIR=$(KERNDIR)/video
-+endif
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+# this is just plain wrong, get rid of it
-+BROKENDIR=$(KERNDIR)/kernel/video
-+
-+INSTALL=$(shell which install)
-+
-+# allow specification of alternate include file tree on command line and extra defines
-+ifdef SYSINCLUDE
-+INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-+else
-+INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-+ DEFINES += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-+ DEFINES += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+DEFINES+=$(EXTRA_DEFINES)
-+
-+# allow build parameters to be passed in through the environment
-+ifdef BUILD_PARAMS
-+ DEFINES+=-D$(BUILD_PARAMS)
-+endif
-+
-+VERSION_HDR=nv_compiler.h
-+
-+all: install
-+
-+install: package-install
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.o installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+
-+$(VERSION_HDR):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(LINUX_MODULE): $(OBJECTS)
-+ ld -r -o $@ $(OBJECTS)
-+
-+%.o: %.c $(HEADERS)
-+ $(CC) -c $(CFLAGS) $<
-+
-+# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-+%.i: %.c
-+ $(CC) $(CFLAGS) -E $< > $@
-+
-+%.s: %.c
-+ $(CC) $(CFLAGS) -S $< > $@
-+
-+
-+clean:
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+
-+
-+-include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4496/conftest.sh NVIDIA_kernel-1.0-4496-2.6/conftest.sh
---- NVIDIA_kernel-1.0-4496/conftest.sh 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/conftest.sh 2003-08-23 22:21:06.000000000 +0200
-@@ -37,5 +37,79 @@
- exit 1
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH" -o -n "$KERNDIR"; then
-+ #
-+ # The user chose to disable the gcc sanity test or is building
-+ # the module for a kernel not currently running, which renders
-+ # our test meaningless.
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version.* (.*) (\(gcc.*\)).*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/")
-+ MODULE=$($* -v 2>&1 | tail -n 1)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -ruN NVIDIA_kernel-1.0-4496/makedevices.sh NVIDIA_kernel-1.0-4496-2.6/makedevices.sh
---- NVIDIA_kernel-1.0-4496/makedevices.sh 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/makedevices.sh 2003-09-03 09:24:38.000000000 +0200
-@@ -8,39 +8,37 @@
- # create a temporary file
- tmp=`(mktemp -q /tmp/nvidia.XXXXXX) 2> /dev/null` || tmp="/tmp/nvidia.$$"
-
--paths=" /etc/modutils/aliases \
-- /etc/modules.conf \
-- /etc/conf.modules "
-+modconfs=" /etc/modutils/aliases \
-+ /etc/modules.conf \
-+ /etc/modprobe.d/aliases \
-+ /etc/modprobe.conf \
-+ /etc/conf.modules "
-
--modconf=""
--for path in $paths; do
-- if [ -f "$path" ]; then
-- modconf=$path
-- break
-+#
-+# Pass the -p option to cp to preserve the permissions of $modconf and
-+# /etc/rc.d/rc.modules across the update. Update all relevant files
-+# including those eventually regenerated to avoid the need for awkward
-+# logic here.
-+#
-+for modconf in $modconfs; do
-+ if [ -f "$modconf" ]; then
-+ cp -p $modconf $tmp
-+ sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-+ if [ -c /dev/.devfsd ]; then
-+ echo "alias /dev/nvidia* nvidia" >> $tmp
-+ else
-+ echo "alias char-major-195 nvidia" >> $tmp
-+ fi
-+ mv -f $tmp $modconf
-+ test -x /sbin/update-modules && /sbin/update-modules
- fi
- done
-
--if [ ! -z $modconf ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of $modconf when we mv it into place
-- cp -p $modconf $tmp
-- sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-- if [ -c /dev/.devfsd ]; then
-- echo "alias /dev/nvidia* nvidia" >> $tmp
-- else
-- echo "alias char-major-195 nvidia" >> $tmp
-- fi
-- mv -f $tmp $modconf
-- test -x /sbin/update-modules && /sbin/update-modules
--else
-- if [ -f /etc/rc.d/rc.modules ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of /etc/rc.d/rc.modules when we mv it into place
-- cp -p /etc/rc.d/rc.modules $tmp
-- sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-- echo -e "\n/sbin/modprobe nvidia" >> $tmp
-- mv -f $tmp /etc/rc.d/rc.modules
-- fi
-+if [ -f /etc/rc.d/rc.modules ]; then
-+ cp -p /etc/rc.d/rc.modules $tmp
-+ sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-+ echo -e "\n/sbin/modprobe nvidia" >> $tmp
-+ mv -f $tmp /etc/rc.d/rc.modules
- fi
-
- if [ ! -c /dev/.devfsd ]; then
-diff -ruN NVIDIA_kernel-1.0-4496/nv-linux.h NVIDIA_kernel-1.0-4496-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-4496/nv-linux.h 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/nv-linux.h 2003-09-05 16:59:47.000000000 +0200
-@@ -20,35 +20,22 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/version.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
--# define KERNEL_2_5
-+# error This driver does not support 2.5.x kernels!
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +48,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_6)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +64,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_6
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +81,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -359,78 +350,172 @@
- free_pages(ptr, order); \
- }
-
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) (inter_module_put((char *) sym))
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define EVENT_QUEUE(ptr) ((struct __wait_queue_head *)(ptr))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--# define INIT_EVENT_QUEUE(ptr) \
-- if (ptr == NULL) { \
-- NV_KMALLOC((ptr), sizeof(struct __wait_queue_head)); \
-- if (ptr) { \
-- memset((ptr), 0, sizeof(struct __wait_queue_head)); \
-- init_waitqueue_head((struct __wait_queue_head *)(ptr)); \
-- } \
-- }
--# define FREE_EVENT_QUEUE(ptr) NV_KFREE((ptr), sizeof(struct __wait_queue_head)); (ptr) = NULL;
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define EVENT_QUEUE(ptr) ((struct wait_queue **) &(ptr))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
--# define INIT_EVENT_QUEUE(ptr) if (ptr) { ((ptr) = NULL); }
--# define FREE_EVENT_QUEUE(ptr)
-+#ifdef KERNEL_2_6
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#define NV_DEVICE_NUMBER(x) minor((x)->i_rdev)
-+#define NV_VMA_OFFSET(x) (((x)->vm_pgoff) << PAGE_SHIFT)
-+#define NV_VMA_PRIVATE(x) ((x)->vm_private_data)
-+#define NV_IS_CONTROL_DEVICE(x) (minor((x)->i_rdev) == 255)
-+
-+#ifndef minor
-+/*
-+ * XXX Is this correct for all possible target kernels? We need this to
-+ * support older 2.4 and some 2.6 kernels.
-+ */
-+# define minor(x) MINOR(x)
- #endif
-
-+#ifndef KERNEL_2_6
-+ typedef void irqreturn_t;
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_6
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
-+#endif
-+
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_6
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_6 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
-+ { \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -487,7 +572,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -545,9 +630,10 @@
-
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- /* get a timer callback every second */
-@@ -583,7 +669,7 @@
- U032 num_events;
- U032 put, get;
- spinlock_t fp_lock;
-- void *wqueue; // wait_queue for polling
-+ wait_queue_head_t waitqueue;
- nv_event_t *event_fifo; // fifo for storing events
- } nv_file_private_t;
-
-diff -ruN NVIDIA_kernel-1.0-4496/nv.c NVIDIA_kernel-1.0-4496-2.6/nv.c
---- NVIDIA_kernel-1.0-4496/nv.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/nv.c 2003-09-05 16:51:55.000000000 +0200
-@@ -15,6 +15,7 @@
- #include "nv_compiler.h"
- #include "os-agp.h"
-
-+MODULE_LICENSE("NVIDIA");
-
- /*
- * our global state; one per device
-@@ -33,32 +34,20 @@
- */
-
- nv_linux_state_t nv_ctl_device = { { 0 } };
--void *nv_ctl_wqueue = NULL;
-+wait_queue_head_t nv_ctl_waitqueue;
-
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -118,10 +107,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -132,7 +117,7 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -155,6 +140,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -325,8 +311,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x: count %d flags 0x%x\n",
- *page_ptr,
-- (GET_MAP_NR(*page_ptr))->count,
-- (GET_MAP_NR(*page_ptr))->flags);
-+ (virt_to_page(__va(*page_ptr)))->count,
-+ (virt_to_page(__va(*page_ptr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -397,7 +383,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- *page_ptr++ = phys_addr;
- pages_needed--;
-@@ -410,7 +396,7 @@
- while (page_ptr != (unsigned long *) page_list)
- {
- page_ptr--;
-- mem_map_unreserve(GET_MAP_NR(*page_ptr));
-+ ClearPageReserved(virt_to_page(__va(*page_ptr)));
- NV_FREE_PAGES((unsigned long) phys_to_virt(*page_ptr), 0);
- }
-
-@@ -430,7 +416,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(*page_list));
-+ ClearPageReserved(virt_to_page(__va(*page_list)));
- page_list++;
- pages_left--;
- }
-@@ -596,11 +582,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -662,9 +643,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -753,9 +731,8 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
- int rc, i;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-@@ -768,7 +745,7 @@
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
-@@ -780,34 +757,35 @@
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
- for (i = 0; i < num_nv_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
- }
-
- // init the nvidia control device
-@@ -815,6 +793,7 @@
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -841,14 +820,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -856,26 +835,27 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc, i;
-- nv_linux_state_t *nvl;
-- nv_linux_state_t *max_devices;
-+ int rc;
-+ nv_linux_state_t *nvl, *max_devices;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
- #ifdef CONFIG_PM
-- for (i = 0; i < num_nv_devices; i++)
-- {
-- pm_unregister(pm_nv_dev[i]);
-- }
-+ do {
-+ int i;
-+ for (i = 0; i < num_nv_devices; i++) {
-+ pm_unregister(pm_nv_dev[i]);
-+ }
-+ } while (0);
- #endif
-
- // Shutdown the resource manager
-@@ -894,30 +874,29 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < num_nv_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
-
- #if NV_ENABLE_MEM_TRACKING
-@@ -929,6 +908,8 @@
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -942,11 +923,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -954,8 +935,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -963,11 +942,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -985,22 +964,12 @@
- if (at->page_table)
- nvos_unlock_pages(at->page_table, at->num_pages);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
-
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
-@@ -1013,7 +982,7 @@
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1052,7 +1021,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1074,14 +1043,11 @@
-
- return page_ptr;
- }
--#endif
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
- nv_kern_vma_nopage,
--#endif
- };
-
- static nv_file_private_t *
-@@ -1096,7 +1062,7 @@
- memset(nvfp, 0, sizeof(nv_file_private_t));
-
- // initialize this file's event queue
-- INIT_EVENT_QUEUE(nvfp->wqueue);
-+ init_waitqueue_head(&nvfp->waitqueue);
-
- nv_init_lock(nvfp->fp_lock);
-
-@@ -1116,7 +1082,6 @@
- if (nvfp == NULL)
- return;
-
-- FREE_EVENT_QUEUE(nvfp->wqueue);
- NV_VFREE(nvfp->event_fifo, sizeof(nv_event_t) * NV_EVENT_FIFO_SIZE);
- NV_VFREE(nvfp, sizeof(nv_file_private_t));
- }
-@@ -1145,11 +1110,11 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-- devnum = NV_DEVICE_NUMBER(inode->i_rdev);
-+ devnum = NV_DEVICE_NUMBER(inode);
- if (devnum >= NV_MAX_DEVICES)
- {
- rc = -ENODEV;
-@@ -1202,12 +1167,14 @@
- goto failed;
- }
-
-+ nvl->tasklet.func = (void *) rm_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-
- nv->usage_count++;
-- MOD_INC_USE_COUNT;
-
- failed:
- nv_unlock(nvl->ldata_lock);
-@@ -1238,38 +1205,32 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_close(inode, file);
-
-- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-+ nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode));
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1300,8 +1261,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1318,10 +1277,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%lx-0x%lx] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1339,7 +1298,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1347,7 +1306,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1357,7 +1316,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1366,7 +1325,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1376,10 +1335,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1397,7 +1356,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1420,13 +1379,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1444,7 +1403,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1466,9 +1425,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1494,7 +1450,7 @@
- {
- nv_printf(NV_DBG_EVENTINFO, "calling poll_wait\n");
- // add us to the list
-- poll_wait(file, EVENT_QUEUE(nvfp->wqueue), wait);
-+ poll_wait(file, &nvfp->waitqueue, wait);
- }
-
- nv_lock(nvfp->fp_lock);
-@@ -1562,12 +1518,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_6)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case NV_ESC_MODULE_RESET:
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case NV_ESC_CARD_INFO:
- {
-@@ -1694,7 +1651,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1708,9 +1665,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1828,11 +1786,9 @@
-
- if (nv->usage_count == 0)
- {
-- INIT_EVENT_QUEUE(nv_ctl_wqueue);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
-- MOD_INC_USE_COUNT;
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1860,10 +1816,8 @@
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
-- {
-- FREE_EVENT_QUEUE(nv_ctl_wqueue);
- nv->flags = 0;
-- }
-+
- nv_unlock(nvl->ldata_lock);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1874,8 +1828,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1899,7 +1851,7 @@
- nv = NV_STATE_PTR(nvl);
-
- if ( !(file->f_flags & O_NONBLOCK) )
-- poll_wait(file, EVENT_QUEUE(nv_ctl_wqueue), wait);
-+ poll_wait(file, &nv_ctl_waitqueue, wait);
-
- nv_lock(nvl->ldata_lock);
-
-@@ -1930,7 +1882,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock(nv_ctl_device.ldata_lock);
-
-- wake_up_interruptible(EVENT_QUEUE(nv_ctl_wqueue));
-+ wake_up_interruptible(&nv_ctl_waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -2009,7 +1961,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2137,18 +2089,21 @@
- {
- unsigned long retaddr = (unsigned long) at->page_table[i];
-
-- if (retaddr <= MAXMEM)
-- {
-- return __va((retaddr + offset));
-- }
--
-- // if we've allocated via vmalloc on a highmem system, the
-- // physical address may not be accessible via PAGE_OFFSET,
-- // that's ok, we have a simple linear pointer already.
-+ /*
-+ * XXX This routine should be more straight-forward; as it
-+ * is, it returns a pointer into the kernel linear mapping if
-+ * the incoming address belongs to a vmalloc() allocation or
-+ * the kernel logical mapping of the corresponding page if it
-+ * was allocated with alloc_pages(); third case below.
-+ */
- if (at->flags & NV_ALLOC_TYPE_VMALLOC)
- {
- return (void *)((unsigned char *) at->key_mapping + (i << PAGE_SHIFT) + offset);
- }
-+ else if (!(at->flags & NV_ALLOC_TYPE_CONTIG))
-+ {
-+ return __va((retaddr + offset));
-+ }
-
- // ?? this may be a contiguous allocation, fall through
- // to below? or should I just check at->flag here?
-@@ -2218,9 +2173,9 @@
- unsigned long
- nv_get_phys_address(unsigned long address)
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
-
- #if defined(NVCPU_IA64)
- if (address > __IA64_UNCACHED_OFFSET)
-@@ -2233,23 +2188,24 @@
- return __pa(address);
-
- if (address > VMALLOC_START)
-- pg_dir = pgd_offset_k(address);
-+ pgd = pgd_offset_k(address);
- else
-- pg_dir = pgd_offset(current->mm, address);
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
-
-- return ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+ return (NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address);
-
- failed:
- return (unsigned long) NULL;
-@@ -2610,8 +2566,7 @@
- nvfp->put = 0;
-
- nv_unlock(nvfp->fp_lock);
--
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- }
-
- int nv_get_event(
-@@ -2696,12 +2651,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else
- status = rm_init_agp(nv);
-diff -ruN NVIDIA_kernel-1.0-4496/os-agp.c NVIDIA_kernel-1.0-4496-2.6/os-agp.c
---- NVIDIA_kernel-1.0-4496/os-agp.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-agp.c 2003-07-29 00:02:15.000000000 +0200
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -105,13 +70,17 @@
- U032 agp_rate;
- U032 agp_sba;
- U032 agp_fw;
-- char* chipset;
- VOID *bitmap;
- U032 bitmap_size;
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
-@@ -119,48 +88,13 @@
- return 1;
- }
-
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
--
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
- * in some way. This is so we don't try to use nvagp and lock up
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -178,44 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
--
-- switch ( agpinfo.chipset )
-- {
-- case INTEL_GENERIC: chipset = "Intel"; break;
-- case INTEL_LX: chipset = "Intel 440LX"; break;
-- case INTEL_BX: chipset = "Intel 440BX"; break;
-- case INTEL_GX: chipset = "Intel 440GX"; break;
-- case INTEL_I810: chipset = "Intel i810"; break;
-- case INTEL_I840: chipset = "Intel i840"; break;
--#if !defined (KERNEL_2_2)
-- case INTEL_I815: chipset = "Intel i815"; break;
--#if !defined(__rh_config_h__)
-- case INTEL_I850: chipset = "Intel i850"; break;
--#endif
--#endif
--#if defined(NVCPU_IA64)
-- case INTEL_460GX: chipset = "Intel 460GX"; break;
--#endif
-- case VIA_GENERIC: chipset = "VIA"; break;
-- case VIA_VP3: chipset = "VIA VP3"; break;
-- case VIA_MVP3: chipset = "VIA MVP3"; break;
-- case VIA_MVP4: chipset = "VIA MVP4"; break;
--#if !defined (KERNEL_2_2)
-- case VIA_APOLLO_KX133: chipset = "VIA Apollo KX133"; break;
-- case VIA_APOLLO_KT133: chipset = "VIA Apollo KT133"; break;
--#endif
-- case VIA_APOLLO_PRO: chipset = "VIA Apollo Pro"; break;
-- case SIS_GENERIC: chipset = "SiS"; break;
-- case AMD_GENERIC: chipset = "AMD"; break;
-- case AMD_IRONGATE: chipset = "AMD Irongate"; break;
-- case ALI_M1541: chipset = "ALi M1541"; break;
-- case ALI_GENERIC: chipset = "ALi"; break;
-- case NOT_SUPPORTED: chipset = "unsupported"; break;
-- default: chipset = "unknown";
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
- }
--
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: %s chipset\n", chipset);
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -229,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -245,7 +157,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -256,7 +169,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -267,39 +181,19 @@
- os_free_mem(bitmap);
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -333,11 +227,13 @@
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -384,7 +280,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -392,7 +288,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -409,7 +305,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -424,7 +320,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -463,7 +359,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -481,9 +377,6 @@
- #endif /* AGPGART */
- }
-
--
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -530,9 +423,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -558,8 +448,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -ruN NVIDIA_kernel-1.0-4496/os-interface.c NVIDIA_kernel-1.0-4496-2.6/os-interface.c
---- NVIDIA_kernel-1.0-4496/os-interface.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-interface.c 2003-07-29 00:02:15.000000000 +0200
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -211,6 +211,11 @@
- {
- NV_MEM_TRACKING_PAD_SIZE(size);
-
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -296,7 +301,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -320,7 +325,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -426,7 +431,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -524,8 +529,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -708,14 +713,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -848,16 +853,6 @@
- NV_IOREMAP_NOCACHE(vaddr, start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- #ifdef DEBUG
- if (mode == NV_MEMORY_WRITECOMBINED) {
- nv_printf(NV_DBG_ERRORS,
-@@ -878,16 +873,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- NV_IOUNMAP(addr, size_bytes);
-- }
-+ NV_IOUNMAP(addr, size_bytes);
- }
-
- VOID* os_map_user_space(
-@@ -991,7 +977,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
-
-@@ -1054,12 +1040,15 @@
- if (sgi_funcs.add_barrier == NULL)
- {
- #if defined(TESTING_SWAP)
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated in Linux 2.5, a
-+ * new mechanism is in place; this code will need to be updated at some
-+ * point.
-+ */
- inter_module_register(ADD_BARRIER_FUNC, THIS_MODULE, sgitest_add_barrier);
- inter_module_register(REMOVE_BARRIER_FUNC, THIS_MODULE, sgitest_remove_barrier);
- inter_module_register(SWAP_READY_FUNC, THIS_MODULE, sgitest_swap_ready);
- #endif
--#endif
- sgi_funcs.add_barrier = GET_MODULE_SYMBOL(0, ADD_BARRIER_FUNC);
- sgi_funcs.remove_barrier = GET_MODULE_SYMBOL(0, REMOVE_BARRIER_FUNC);
- sgi_funcs.swap_ready = GET_MODULE_SYMBOL(0, SWAP_READY_FUNC);
-diff -ruN NVIDIA_kernel-1.0-4496/os-registry.c NVIDIA_kernel-1.0-4496-2.6/os-registry.c
---- NVIDIA_kernel-1.0-4496/os-registry.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-registry.c 2003-07-29 00:02:15.000000000 +0200
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff b/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff
deleted file mode 100644
index f999e3d46dd4..000000000000
--- a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff
+++ /dev/null
@@ -1,2547 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile NVIDIA_kernel-1.0-4496-2.6/Makefile
---- NVIDIA_kernel-1.0-4496/Makefile 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,169 +0,0 @@
--# This Makefile is automatically generated; do not edit
--# Generated on 'builder3.nvidia.com' on Wed Jul 16 19:03:10 PDT 2003
--
--LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4496 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
--INCLUDES=-I.
--
--OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
--HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
--
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
--
--RESMAN_KERNEL_MODULE=nv-kernel.o
--
--KERNDIR=/lib/modules/$(shell uname -r)
--
--# check for newer paths. if found, use them, otherwise use old paths
--# these wouldn't work with the gnu make included with rh6.2
--# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
--# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
--
--# this is slightly more brain-dead, but works..
--ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
--KERNINC=$(KERNDIR)/build/include
--else
--KERNINC=/usr/src/linux/include
--endif
--
--ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
--INSTALLDIR=$(KERNDIR)/kernel/drivers/video
--else
--INSTALLDIR=$(KERNDIR)/video
--endif
--
--ifeq ($(shell echo $(NVDEBUG)),1)
-- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-- RMDEBUG=1
-- endif
--endif
--
--ifeq ($(shell echo $(RMDEBUG)),1)
--CFLAGS += -DDEBUG -g -fno-common
--endif
--
--# this is just plain wrong, get rid of it
--BROKENDIR=$(KERNDIR)/kernel/video
--
--INSTALL=$(shell which install)
--
--# determine gcc versions used (kernel, nvidia.o)
--module_cc:=$(shell $(CC) -v 2>&1 | tail -n 1)
--version="^Linux version [^(]* (.*@.*) (\(.*\)) .*"
--kernel_cc:=$(shell cat /proc/version | sed "s/"$(version)"/\1/")
--
--module_cc:=$(shell echo "$(module_cc)" | cut -d ' ' -f 3)
--kernel_cc:=$(shell echo "$(kernel_cc)" | cut -d ' ' -f 3)
--
--# allow specification of alternate include file tree on command line and extra defines
--ifdef SYSINCLUDE
--INCLUDES += -I$(SYSINCLUDE)
--else
--INCLUDES += -I$(KERNINC)
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-- DEFINES += -DREMAP_PAGE_RANGE_5
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-- DEFINES += -DREMAP_PAGE_RANGE_4
--endif
--
--DEFINES+=$(EXTRA_DEFINES)
--
--# allow build parameters to be passed in through the environment
--ifdef BUILD_PARAMS
-- DEFINES+=-D$(BUILD_PARAMS)
--endif
--
--VERSION_HDR=nv_compiler.h
--
--all: install
--
--install: package-install
--
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-- fi
--
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if PATH="$(PATH):/bin:/sbin" lsmod | grep -w nvidia > /dev/null; then \
-- if ! PATH="($PATH):/bin:/sbin" rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if PATH="$(PATH):/bin:/sbin" lsmod | grep -w NVdriver > /dev/null; then \
-- if ! PATH="$(PATH):/bin:/sbin" rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-- fi
--
--gcc-check:
-- @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
-- if [ "$(kernel_cc)" != "$(module_cc)" ]; then \
-- echo " "; \
-- echo "You appear to be compiling the NVIDIA kernel module with "; \
-- echo "a compiler different from the one that was used to compile "; \
-- echo "the running kernel. This may be perfectly fine, but there "; \
-- echo "are cases where this can lead to unexpected behaviour and "; \
-- echo "system crashes. "; \
-- echo " "; \
-- echo "If you know what you are doing and want to override this "; \
-- echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-- echo " "; \
-- echo "In any other case, set the CC environment variable to the "; \
-- echo "name of the compiler that was used to compile the kernel. "; \
-- echo " "; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed cc sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1; \
-- fi \
-- fi
--
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--$(VERSION_HDR):
-- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
--
--$(LINUX_MODULE): $(OBJECTS)
-- ld -r -o $@ $(OBJECTS)
--
--%.o: %.c $(HEADERS)
-- $(CC) -c $(CFLAGS) $<
--
--# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
--%.i: %.c
-- $(CC) $(CFLAGS) -E $< > $@
--
--%.s: %.c
-- $(CC) $(CFLAGS) -S $< > $@
--
--
--clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
--
--
---include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile.kbuild NVIDIA_kernel-1.0-4496-2.6/Makefile.kbuild
---- NVIDIA_kernel-1.0-4496/Makefile.kbuild 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile.kbuild 2003-07-31 19:52:00.000000000 +0200
-@@ -0,0 +1,258 @@
-+#
-+# KBUILD Makefile for the NVIDIA Linux kernel module.
-+#
-+# The motivation for replacing the original Makefile is the hope that this
-+# version will simplify the build and installation process. In the past,
-+# many architectural and cosmetic changes to the Linux kernel have made it
-+# difficult to maintain compatibility or required duplication of logic.
-+#
-+# Linux 2.5 introduces numerous such changes, many of which impact modules.
-+# Relying on KBUILD, some aspects of the build system otherwise difficult
-+# to support (for example, module versioning) are abstracted away and dealt
-+# with elsewhere, making life significantly easier here.
-+#
-+# The new approach currently has its own share of problems, some of which
-+# are architectural difficulties with KBUILD, others minor annoyances. For
-+# this reason, an improved version of the NVIDIA Makefile is available to
-+# those experiencing difficulties.
-+#
-+# Please report any problems you may be experiencing with this experimental
-+# Makefile to either one (or, preferably, both) of us:
-+#
-+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
-+# Christian Zander (zander@mail.minion.de) (enhancements)
-+#
-+
-+all: install
-+install: package-install
-+
-+#
-+# The NVIDIA kernel module base name and static file names. KBUILD will go
-+# ahead and append ".o" or ".ko" to form the final module name.
-+#
-+
-+MODULE_NAME := nvidia
-+VERSION_HEADER := nv_compiler.h
-+
-+#
-+# List of object files to link into NVIDIA kernel module; make sure KBUILD
-+# understands that we want a module.
-+#
-+
-+RESMAN_CORE_OBJS := nv-kernel.o
-+RESMAN_GLUE_OBJS := nv.o os-agp.o os-interface.o os-registry.o
-+
-+$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)
-+
-+#
-+# A bug in KBUILD 2.4 means that leaving obj-m set in top-level context
-+# will cause Rules.make to call pathdown.sh, which is wrong. So, we only
-+# set this conditional of a kernel-level instance.
-+#
-+
-+ifdef TOPDIR
-+obj-m += $(MODULE_NAME).o
-+endif
-+
-+#
-+# Include local source directory in $(CC)'s include path and set disable any
-+# warning types that are of little interest to us.
-+#
-+
-+EXTRA_CFLAGS += -I$(src)
-+EXTRA_CFLAGS += -Wno-cast-qual -Wno-strict-prototypes
-+
-+#
-+# Determine location of the Linux kernel source tree. Allow users to override
-+# the default (i.e. automatically determined) kernel source location with the
-+# KERNDIR directive; this new directive replaces NVIDIA's SYSINCLUDE.
-+#
-+
-+ifdef KERNDIR
-+ KERNEL_SOURCES := $(KERNDIR)
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers # XXX
-+else
-+ KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers
-+endif
-+
-+#
-+# We rely on these two definitions below; if they aren't set, we set them to
-+# reasonable defaults (Linux 2.4's KBUILD, and top-level passes will not set
-+# these).
-+#
-+
-+src ?= .
-+obj ?= .
-+
-+#
-+# Sets any internal variables left unset by KBUILD (e.g. this happens during
-+# a top-level run).
-+#
-+
-+TOPDIR ?= $(KERNEL_SOURCES)
-+PATCHLEVEL ?= $(shell sh $(src)/conftest.sh kernel_patch_level $(TOPDIR))
-+
-+#
-+# Linux 2.4 uses the .o module extension. Linux 2.5, however, uses the .ko
-+# module extension. Handle these gracefully.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+ MODULE_OBJECT := $(MODULE_NAME).o
-+else
-+ MODULE_OBJECT := $(MODULE_NAME).ko
-+endif
-+
-+#
-+# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become
-+# necessary with the introduction of the five argument version to Linux 2.4
-+# distribution kernels; this conflicting change cannot be detected at compile
-+# time.
-+#
-+
-+EXTRA_CFLAGS += -DNTRM -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4496 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+ EXTRA_CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 5)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 4)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+#
-+# NVIDIA binary object file includes .common section.
-+#
-+
-+EXTRA_LDFLAGS := -d
-+
-+#
-+# Miscellaneous NVIDIA kernel module build support targets. They are needed
-+# to satisfy KBUILD requirements and to support NVIDIA specifics.
-+#
-+
-+$(obj)/nv-kernel.o:
-+ cp $(src)/$(RESMAN_CORE_OBJS) $(obj)/$(RESMAN_CORE_OBJS)
-+
-+$(obj)/$(VERSION_HEADER):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(obj)/nv.o: $(obj)/$(VERSION_HEADER)
-+
-+#
-+# More quirks for Linux 2.4 KBUILD, which doesn't link automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+$(obj)/$(MODULE_NAME).o: $($(MODULE_NAME)-objs)
-+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $($(MODULE_NAME)-objs)
-+endif
-+
-+#
-+# KBUILD build parameters.
-+#
-+
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+
-+#
-+# NVIDIA sanity checks.
-+#
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check $(MODULE_NAME); then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module using Linux KBUILD. This target is used by
-+# the "package-install" target below.
-+#
-+
-+module: cc-sanity-check
-+ @make $(KBUILD_PARAMS) modules; \
-+ if ! [ -f $(MODULE_OBJECT) ]; then \
-+ echo "$(MODULE_OBJECT) failed to build!"; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module with KBUILD. Verify that the user posesses
-+# sufficient privileges. Rebuild the module dependency file.
-+#
-+
-+module-install: suser-sanity-check module
-+ @mkdir -p $(MODULE_ROOT)/video; \
-+ install -m 0664 -o root -g root $(MODULE_OBJECT) $(MODULE_ROOT)/video; \
-+ /sbin/depmod -ae;
-+
-+#
-+# This target builds, then installs, then creates device nodes and inserts
-+# the module, if successful.
-+#
-+
-+package-install: module-install rmmod-sanity-check
-+ @sh makedevices.sh; \
-+ /sbin/modprobe $(MODULE_NAME) && \
-+ echo "$(MODULE_OBJECT) installed successfully.";
-+
-+#
-+# Support hack, KBUILD isn't prepared to clean up after external modules.
-+#
-+
-+clean:
-+ @rm -f $(RESMAN_GLUE_OBJS) .*.{cmd,flags}
-+ @rm -f $(MODULE_NAME).{o,ko,mod.{o,c}} built-in.o $(VERSION_HEADER) *~
-+
-+#
-+# Linux 2.4 KBUILD requires the inclusion of Rules.make; Linux 2.5's KBUILD
-+# includes dependencies automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+include $(KERNEL_SOURCES)/Rules.make
-+endif
-diff -ruN NVIDIA_kernel-1.0-4496/Makefile.nvidia NVIDIA_kernel-1.0-4496-2.6/Makefile.nvidia
---- NVIDIA_kernel-1.0-4496/Makefile.nvidia 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-4496-2.6/Makefile.nvidia 2003-07-31 19:52:06.000000000 +0200
-@@ -0,0 +1,154 @@
-+# This Makefile is automatically generated; do not edit
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-+
-+LINUX_MODULE=nv-linux.o
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4480 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+INCLUDES=-I.
-+
-+OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-+HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-+
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+
-+RESMAN_KERNEL_MODULE=nv-kernel.o
-+
-+KERNDIR=/lib/modules/$(shell uname -r)
-+
-+# check for newer paths. if found, use them, otherwise use old paths
-+# these wouldn't work with the gnu make included with rh6.2
-+# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-+# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-+
-+# this is slightly more brain-dead, but works..
-+ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-+KERNINC=$(KERNDIR)/build/include
-+else
-+KERNINC=/usr/src/linux/include
-+endif
-+
-+ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-+INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-+else
-+INSTALLDIR=$(KERNDIR)/video
-+endif
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+# this is just plain wrong, get rid of it
-+BROKENDIR=$(KERNDIR)/kernel/video
-+
-+INSTALL=$(shell which install)
-+
-+# allow specification of alternate include file tree on command line and extra defines
-+ifdef SYSINCLUDE
-+INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-+else
-+INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-+ DEFINES += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-+ DEFINES += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+DEFINES+=$(EXTRA_DEFINES)
-+
-+# allow build parameters to be passed in through the environment
-+ifdef BUILD_PARAMS
-+ DEFINES+=-D$(BUILD_PARAMS)
-+endif
-+
-+VERSION_HDR=nv_compiler.h
-+
-+all: install
-+
-+install: package-install
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.o installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+
-+$(VERSION_HDR):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(LINUX_MODULE): $(OBJECTS)
-+ ld -r -o $@ $(OBJECTS)
-+
-+%.o: %.c $(HEADERS)
-+ $(CC) -c $(CFLAGS) $<
-+
-+# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-+%.i: %.c
-+ $(CC) $(CFLAGS) -E $< > $@
-+
-+%.s: %.c
-+ $(CC) $(CFLAGS) -S $< > $@
-+
-+
-+clean:
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+
-+
-+-include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-4496/conftest.sh NVIDIA_kernel-1.0-4496-2.6/conftest.sh
---- NVIDIA_kernel-1.0-4496/conftest.sh 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/conftest.sh 2003-08-23 22:21:06.000000000 +0200
-@@ -37,5 +37,79 @@
- exit 1
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH" -o -n "$KERNDIR"; then
-+ #
-+ # The user chose to disable the gcc sanity test or is building
-+ # the module for a kernel not currently running, which renders
-+ # our test meaningless.
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version.* (.*) (\(gcc.*\)).*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/")
-+ MODULE=$($* -v 2>&1 | tail -n 1)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -ruN NVIDIA_kernel-1.0-4496/makedevices.sh NVIDIA_kernel-1.0-4496-2.6/makedevices.sh
---- NVIDIA_kernel-1.0-4496/makedevices.sh 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/makedevices.sh 2003-09-03 09:24:38.000000000 +0200
-@@ -8,39 +8,37 @@
- # create a temporary file
- tmp=`(mktemp -q /tmp/nvidia.XXXXXX) 2> /dev/null` || tmp="/tmp/nvidia.$$"
-
--paths=" /etc/modutils/aliases \
-- /etc/modules.conf \
-- /etc/conf.modules "
-+modconfs=" /etc/modutils/aliases \
-+ /etc/modules.conf \
-+ /etc/modprobe.d/aliases \
-+ /etc/modprobe.conf \
-+ /etc/conf.modules "
-
--modconf=""
--for path in $paths; do
-- if [ -f "$path" ]; then
-- modconf=$path
-- break
-+#
-+# Pass the -p option to cp to preserve the permissions of $modconf and
-+# /etc/rc.d/rc.modules across the update. Update all relevant files
-+# including those eventually regenerated to avoid the need for awkward
-+# logic here.
-+#
-+for modconf in $modconfs; do
-+ if [ -f "$modconf" ]; then
-+ cp -p $modconf $tmp
-+ sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-+ if [ -c /dev/.devfsd ]; then
-+ echo "alias /dev/nvidia* nvidia" >> $tmp
-+ else
-+ echo "alias char-major-195 nvidia" >> $tmp
-+ fi
-+ mv -f $tmp $modconf
-+ test -x /sbin/update-modules && /sbin/update-modules
- fi
- done
-
--if [ ! -z $modconf ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of $modconf when we mv it into place
-- cp -p $modconf $tmp
-- sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-- if [ -c /dev/.devfsd ]; then
-- echo "alias /dev/nvidia* nvidia" >> $tmp
-- else
-- echo "alias char-major-195 nvidia" >> $tmp
-- fi
-- mv -f $tmp $modconf
-- test -x /sbin/update-modules && /sbin/update-modules
--else
-- if [ -f /etc/rc.d/rc.modules ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of /etc/rc.d/rc.modules when we mv it into place
-- cp -p /etc/rc.d/rc.modules $tmp
-- sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-- echo -e "\n/sbin/modprobe nvidia" >> $tmp
-- mv -f $tmp /etc/rc.d/rc.modules
-- fi
-+if [ -f /etc/rc.d/rc.modules ]; then
-+ cp -p /etc/rc.d/rc.modules $tmp
-+ sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-+ echo -e "\n/sbin/modprobe nvidia" >> $tmp
-+ mv -f $tmp /etc/rc.d/rc.modules
- fi
-
- if [ ! -c /dev/.devfsd ]; then
-diff -ruN NVIDIA_kernel-1.0-4496/nv-linux.h NVIDIA_kernel-1.0-4496-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-4496/nv-linux.h 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/nv-linux.h 2003-09-05 16:59:47.000000000 +0200
-@@ -20,35 +20,22 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/version.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
--# define KERNEL_2_5
-+# error This driver does not support 2.5.x kernels!
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +48,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_6)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +64,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_6
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +81,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -359,78 +350,172 @@
- free_pages(ptr, order); \
- }
-
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) (inter_module_put((char *) sym))
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define EVENT_QUEUE(ptr) ((struct __wait_queue_head *)(ptr))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--# define INIT_EVENT_QUEUE(ptr) \
-- if (ptr == NULL) { \
-- NV_KMALLOC((ptr), sizeof(struct __wait_queue_head)); \
-- if (ptr) { \
-- memset((ptr), 0, sizeof(struct __wait_queue_head)); \
-- init_waitqueue_head((struct __wait_queue_head *)(ptr)); \
-- } \
-- }
--# define FREE_EVENT_QUEUE(ptr) NV_KFREE((ptr), sizeof(struct __wait_queue_head)); (ptr) = NULL;
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define EVENT_QUEUE(ptr) ((struct wait_queue **) &(ptr))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
--# define INIT_EVENT_QUEUE(ptr) if (ptr) { ((ptr) = NULL); }
--# define FREE_EVENT_QUEUE(ptr)
-+#ifdef KERNEL_2_6
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#define NV_DEVICE_NUMBER(x) minor((x)->i_rdev)
-+#define NV_VMA_OFFSET(x) (((x)->vm_pgoff) << PAGE_SHIFT)
-+#define NV_VMA_PRIVATE(x) ((x)->vm_private_data)
-+#define NV_IS_CONTROL_DEVICE(x) (minor((x)->i_rdev) == 255)
-+
-+#ifndef minor
-+/*
-+ * XXX Is this correct for all possible target kernels? We need this to
-+ * support older 2.4 and some 2.6 kernels.
-+ */
-+# define minor(x) MINOR(x)
- #endif
-
-+#ifndef KERNEL_2_6
-+ typedef void irqreturn_t;
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_6
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
-+#endif
-+
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_6
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_6 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
-+ { \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -487,7 +572,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -545,9 +630,10 @@
-
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- /* get a timer callback every second */
-@@ -583,7 +669,7 @@
- U032 num_events;
- U032 put, get;
- spinlock_t fp_lock;
-- void *wqueue; // wait_queue for polling
-+ wait_queue_head_t waitqueue;
- nv_event_t *event_fifo; // fifo for storing events
- } nv_file_private_t;
-
-diff -ruN NVIDIA_kernel-1.0-4496/nv.c NVIDIA_kernel-1.0-4496-2.6/nv.c
---- NVIDIA_kernel-1.0-4496/nv.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/nv.c 2003-10-26 09:33:58.000000000 +0100
-@@ -15,6 +15,7 @@
- #include "nv_compiler.h"
- #include "os-agp.h"
-
-+MODULE_LICENSE("NVIDIA");
-
- /*
- * our global state; one per device
-@@ -33,32 +34,20 @@
- */
-
- nv_linux_state_t nv_ctl_device = { { 0 } };
--void *nv_ctl_wqueue = NULL;
-+wait_queue_head_t nv_ctl_waitqueue;
-
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -118,10 +107,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -132,7 +117,7 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -155,6 +140,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -325,8 +311,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x: count %d flags 0x%x\n",
- *page_ptr,
-- (GET_MAP_NR(*page_ptr))->count,
-- (GET_MAP_NR(*page_ptr))->flags);
-+ (virt_to_page(__va(*page_ptr)))->count,
-+ (virt_to_page(__va(*page_ptr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -397,7 +383,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- *page_ptr++ = phys_addr;
- pages_needed--;
-@@ -410,7 +396,7 @@
- while (page_ptr != (unsigned long *) page_list)
- {
- page_ptr--;
-- mem_map_unreserve(GET_MAP_NR(*page_ptr));
-+ ClearPageReserved(virt_to_page(__va(*page_ptr)));
- NV_FREE_PAGES((unsigned long) phys_to_virt(*page_ptr), 0);
- }
-
-@@ -430,7 +416,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(*page_list));
-+ ClearPageReserved(virt_to_page(__va(*page_list)));
- page_list++;
- pages_left--;
- }
-@@ -596,11 +582,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -662,9 +643,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -753,9 +731,8 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
- int rc, i;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-@@ -768,7 +745,7 @@
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
-@@ -780,34 +757,35 @@
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
- for (i = 0; i < num_nv_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
- }
-
- // init the nvidia control device
-@@ -815,6 +793,7 @@
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -841,14 +820,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -856,26 +835,27 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc, i;
-- nv_linux_state_t *nvl;
-- nv_linux_state_t *max_devices;
-+ int rc;
-+ nv_linux_state_t *nvl, *max_devices;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
- #ifdef CONFIG_PM
-- for (i = 0; i < num_nv_devices; i++)
-- {
-- pm_unregister(pm_nv_dev[i]);
-- }
-+ do {
-+ int i;
-+ for (i = 0; i < num_nv_devices; i++) {
-+ pm_unregister(pm_nv_dev[i]);
-+ }
-+ } while (0);
- #endif
-
- // Shutdown the resource manager
-@@ -894,30 +874,29 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < num_nv_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
-
- #if NV_ENABLE_MEM_TRACKING
-@@ -929,6 +908,8 @@
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -942,11 +923,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -954,8 +935,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -963,11 +942,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -985,35 +964,26 @@
- if (at->page_table)
- nvos_unlock_pages(at->page_table, at->num_pages);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
-
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
- */
- struct page *nv_kern_vma_nopage(struct vm_area_struct *vma, unsigned long address, int write_access)
- {
-+#if defined(NVCPU_IA64) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9))
- nv_alloc_t *at, *tmp;
- nv_linux_state_t *nvl;
- nv_state_t *nv;
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1052,7 +1022,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1073,15 +1043,14 @@
- at->page_table[index] = (void *) ((page_ptr - mem_map) << PAGE_SHIFT);
-
- return page_ptr;
--}
- #endif
-+ return NOPAGE_SIGBUS;
-+}
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
- nv_kern_vma_nopage,
--#endif
- };
-
- static nv_file_private_t *
-@@ -1096,7 +1065,7 @@
- memset(nvfp, 0, sizeof(nv_file_private_t));
-
- // initialize this file's event queue
-- INIT_EVENT_QUEUE(nvfp->wqueue);
-+ init_waitqueue_head(&nvfp->waitqueue);
-
- nv_init_lock(nvfp->fp_lock);
-
-@@ -1116,7 +1085,6 @@
- if (nvfp == NULL)
- return;
-
-- FREE_EVENT_QUEUE(nvfp->wqueue);
- NV_VFREE(nvfp->event_fifo, sizeof(nv_event_t) * NV_EVENT_FIFO_SIZE);
- NV_VFREE(nvfp, sizeof(nv_file_private_t));
- }
-@@ -1145,11 +1113,11 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-- devnum = NV_DEVICE_NUMBER(inode->i_rdev);
-+ devnum = NV_DEVICE_NUMBER(inode);
- if (devnum >= NV_MAX_DEVICES)
- {
- rc = -ENODEV;
-@@ -1202,12 +1170,14 @@
- goto failed;
- }
-
-+ nvl->tasklet.func = (void *) rm_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-
- nv->usage_count++;
-- MOD_INC_USE_COUNT;
-
- failed:
- nv_unlock(nvl->ldata_lock);
-@@ -1238,38 +1208,32 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_close(inode, file);
-
-- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-+ nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode));
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1300,8 +1264,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1318,10 +1280,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%lx-0x%lx] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1339,7 +1301,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1347,7 +1309,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1357,7 +1319,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1366,7 +1328,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1376,10 +1338,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1397,7 +1359,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1420,13 +1382,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1444,7 +1406,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1466,9 +1428,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1494,7 +1453,7 @@
- {
- nv_printf(NV_DBG_EVENTINFO, "calling poll_wait\n");
- // add us to the list
-- poll_wait(file, EVENT_QUEUE(nvfp->wqueue), wait);
-+ poll_wait(file, &nvfp->waitqueue, wait);
- }
-
- nv_lock(nvfp->fp_lock);
-@@ -1562,12 +1521,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_6)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case NV_ESC_MODULE_RESET:
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case NV_ESC_CARD_INFO:
- {
-@@ -1694,7 +1654,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1708,9 +1668,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1828,11 +1789,9 @@
-
- if (nv->usage_count == 0)
- {
-- INIT_EVENT_QUEUE(nv_ctl_wqueue);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
-- MOD_INC_USE_COUNT;
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1860,10 +1819,8 @@
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
-- {
-- FREE_EVENT_QUEUE(nv_ctl_wqueue);
- nv->flags = 0;
-- }
-+
- nv_unlock(nvl->ldata_lock);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1874,8 +1831,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1899,7 +1854,7 @@
- nv = NV_STATE_PTR(nvl);
-
- if ( !(file->f_flags & O_NONBLOCK) )
-- poll_wait(file, EVENT_QUEUE(nv_ctl_wqueue), wait);
-+ poll_wait(file, &nv_ctl_waitqueue, wait);
-
- nv_lock(nvl->ldata_lock);
-
-@@ -1930,7 +1885,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock(nv_ctl_device.ldata_lock);
-
-- wake_up_interruptible(EVENT_QUEUE(nv_ctl_wqueue));
-+ wake_up_interruptible(&nv_ctl_waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -2009,7 +1964,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2137,18 +2092,21 @@
- {
- unsigned long retaddr = (unsigned long) at->page_table[i];
-
-- if (retaddr <= MAXMEM)
-- {
-- return __va((retaddr + offset));
-- }
--
-- // if we've allocated via vmalloc on a highmem system, the
-- // physical address may not be accessible via PAGE_OFFSET,
-- // that's ok, we have a simple linear pointer already.
-+ /*
-+ * XXX This routine should be more straight-forward; as it
-+ * is, it returns a pointer into the kernel linear mapping if
-+ * the incoming address belongs to a vmalloc() allocation or
-+ * the kernel logical mapping of the corresponding page if it
-+ * was allocated with alloc_pages(); third case below.
-+ */
- if (at->flags & NV_ALLOC_TYPE_VMALLOC)
- {
- return (void *)((unsigned char *) at->key_mapping + (i << PAGE_SHIFT) + offset);
- }
-+ else if (!(at->flags & NV_ALLOC_TYPE_CONTIG))
-+ {
-+ return __va((retaddr + offset));
-+ }
-
- // ?? this may be a contiguous allocation, fall through
- // to below? or should I just check at->flag here?
-@@ -2218,9 +2176,9 @@
- unsigned long
- nv_get_phys_address(unsigned long address)
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
-
- #if defined(NVCPU_IA64)
- if (address > __IA64_UNCACHED_OFFSET)
-@@ -2233,23 +2191,24 @@
- return __pa(address);
-
- if (address > VMALLOC_START)
-- pg_dir = pgd_offset_k(address);
-+ pgd = pgd_offset_k(address);
- else
-- pg_dir = pgd_offset(current->mm, address);
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
-
-- return ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+ return (NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address);
-
- failed:
- return (unsigned long) NULL;
-@@ -2610,8 +2569,7 @@
- nvfp->put = 0;
-
- nv_unlock(nvfp->fp_lock);
--
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- }
-
- int nv_get_event(
-@@ -2696,12 +2654,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else
- status = rm_init_agp(nv);
-diff -ruN NVIDIA_kernel-1.0-4496/os-agp.c NVIDIA_kernel-1.0-4496-2.6/os-agp.c
---- NVIDIA_kernel-1.0-4496/os-agp.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-agp.c 2003-07-29 00:02:15.000000000 +0200
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -105,13 +70,17 @@
- U032 agp_rate;
- U032 agp_sba;
- U032 agp_fw;
-- char* chipset;
- VOID *bitmap;
- U032 bitmap_size;
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
-@@ -119,48 +88,13 @@
- return 1;
- }
-
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
--
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
- * in some way. This is so we don't try to use nvagp and lock up
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -178,44 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
--
-- switch ( agpinfo.chipset )
-- {
-- case INTEL_GENERIC: chipset = "Intel"; break;
-- case INTEL_LX: chipset = "Intel 440LX"; break;
-- case INTEL_BX: chipset = "Intel 440BX"; break;
-- case INTEL_GX: chipset = "Intel 440GX"; break;
-- case INTEL_I810: chipset = "Intel i810"; break;
-- case INTEL_I840: chipset = "Intel i840"; break;
--#if !defined (KERNEL_2_2)
-- case INTEL_I815: chipset = "Intel i815"; break;
--#if !defined(__rh_config_h__)
-- case INTEL_I850: chipset = "Intel i850"; break;
--#endif
--#endif
--#if defined(NVCPU_IA64)
-- case INTEL_460GX: chipset = "Intel 460GX"; break;
--#endif
-- case VIA_GENERIC: chipset = "VIA"; break;
-- case VIA_VP3: chipset = "VIA VP3"; break;
-- case VIA_MVP3: chipset = "VIA MVP3"; break;
-- case VIA_MVP4: chipset = "VIA MVP4"; break;
--#if !defined (KERNEL_2_2)
-- case VIA_APOLLO_KX133: chipset = "VIA Apollo KX133"; break;
-- case VIA_APOLLO_KT133: chipset = "VIA Apollo KT133"; break;
--#endif
-- case VIA_APOLLO_PRO: chipset = "VIA Apollo Pro"; break;
-- case SIS_GENERIC: chipset = "SiS"; break;
-- case AMD_GENERIC: chipset = "AMD"; break;
-- case AMD_IRONGATE: chipset = "AMD Irongate"; break;
-- case ALI_M1541: chipset = "ALi M1541"; break;
-- case ALI_GENERIC: chipset = "ALi"; break;
-- case NOT_SUPPORTED: chipset = "unsupported"; break;
-- default: chipset = "unknown";
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
- }
--
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: %s chipset\n", chipset);
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -229,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -245,7 +157,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -256,7 +169,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -267,39 +181,19 @@
- os_free_mem(bitmap);
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -333,11 +227,13 @@
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -384,7 +280,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -392,7 +288,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -409,7 +305,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -424,7 +320,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -463,7 +359,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -481,9 +377,6 @@
- #endif /* AGPGART */
- }
-
--
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -530,9 +423,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -558,8 +448,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -ruN NVIDIA_kernel-1.0-4496/os-interface.c NVIDIA_kernel-1.0-4496-2.6/os-interface.c
---- NVIDIA_kernel-1.0-4496/os-interface.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-interface.c 2003-07-29 00:02:15.000000000 +0200
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -211,6 +211,11 @@
- {
- NV_MEM_TRACKING_PAD_SIZE(size);
-
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -296,7 +301,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -320,7 +325,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -426,7 +431,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -524,8 +529,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -708,14 +713,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -848,16 +853,6 @@
- NV_IOREMAP_NOCACHE(vaddr, start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- #ifdef DEBUG
- if (mode == NV_MEMORY_WRITECOMBINED) {
- nv_printf(NV_DBG_ERRORS,
-@@ -878,16 +873,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- NV_IOUNMAP(addr, size_bytes);
-- }
-+ NV_IOUNMAP(addr, size_bytes);
- }
-
- VOID* os_map_user_space(
-@@ -991,7 +977,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
-
-@@ -1054,12 +1040,15 @@
- if (sgi_funcs.add_barrier == NULL)
- {
- #if defined(TESTING_SWAP)
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated in Linux 2.5, a
-+ * new mechanism is in place; this code will need to be updated at some
-+ * point.
-+ */
- inter_module_register(ADD_BARRIER_FUNC, THIS_MODULE, sgitest_add_barrier);
- inter_module_register(REMOVE_BARRIER_FUNC, THIS_MODULE, sgitest_remove_barrier);
- inter_module_register(SWAP_READY_FUNC, THIS_MODULE, sgitest_swap_ready);
- #endif
--#endif
- sgi_funcs.add_barrier = GET_MODULE_SYMBOL(0, ADD_BARRIER_FUNC);
- sgi_funcs.remove_barrier = GET_MODULE_SYMBOL(0, REMOVE_BARRIER_FUNC);
- sgi_funcs.swap_ready = GET_MODULE_SYMBOL(0, SWAP_READY_FUNC);
-diff -ruN NVIDIA_kernel-1.0-4496/os-registry.c NVIDIA_kernel-1.0-4496-2.6/os-registry.c
---- NVIDIA_kernel-1.0-4496/os-registry.c 2003-07-17 04:56:13.000000000 +0200
-+++ NVIDIA_kernel-1.0-4496-2.6/os-registry.c 2003-07-29 00:02:15.000000000 +0200
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff b/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff
deleted file mode 100644
index c2fd733e42b3..000000000000
--- a/media-video/nvidia-kernel/files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff
+++ /dev/null
@@ -1,15 +0,0 @@
---- nv/nv-linux.h.orig 2003-09-07 16:26:25.713736184 +0200
-+++ nv/nv-linux.h 2003-09-07 16:27:06.230576688 +0200
-@@ -355,7 +355,11 @@
-
- #ifdef KERNEL_2_6
- # define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
--# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# ifdef CONFIG_PCI_NAMES
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# else
-+# define NV_PCI_DEVICE_NAME(x) ""
-+# endif
- # define NV_CLI() local_irq_disable()
- # define NV_SAVE_FLAGS(x) local_save_flags(x)
- # define NV_RESTORE_FLAGS(x) local_irq_restore(x)
diff --git a/media-video/nvidia-kernel/files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff b/media-video/nvidia-kernel/files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff
deleted file mode 100644
index 7e4ca64467fb..000000000000
--- a/media-video/nvidia-kernel/files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff
+++ /dev/null
@@ -1,2109 +0,0 @@
-diff -u NVIDIA_kernel-1.0-4499/Makefile NVIDIA_kernel-1.0-4499-2.6/Makefile
---- NVIDIA_kernel-1.0-4499/Makefile 2003-09-18 00:22:12.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/Makefile 2003-10-14 01:56:21.038952024 +0000
-@@ -1,14 +1,14 @@
- # This Makefile is automatically generated; do not edit
--# Generated on 'anji' on Wed Sep 17 17:03:05 PDT 2003
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-
- LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -mcmodel=kernel -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4499 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNV_64_BITS -DNVCPU_X86_64
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4499 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86_64 -DNV_64_BITS -DREMAP_PAGE_RANGE_5 -DKBUILD_MODNAME=nvidia
- INCLUDES=-I.
-
- OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
- HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wno-cast-qual -Wno-multichar -O2 -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -mcmodel=kernel -nostdinc -iwithprefix include -fno-strict-aliasing -fno-common -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -Wno-sign-compare -fno-asynchronous-unwind-tables -fomit-frame-pointer -Wdeclaration-after-statement -Wno-trigraphs -Wno-strict-prototypes
-
- RESMAN_KERNEL_MODULE=nv-kernel.o
-
-@@ -47,19 +47,13 @@
-
- INSTALL=$(shell which install)
-
--# determine gcc versions used (kernel, nvidia.o)
--module_cc:=$(shell $(CC) -v 2>&1 | tail -n 1)
--version="^Linux version [^(]* (.*@.*) (\(.*\)) .*"
--kernel_cc:=$(shell cat /proc/version | sed "s/"$(version)"/\1/")
--
--module_cc:=$(shell echo "$(module_cc)" | cut -d ' ' -f 3)
--kernel_cc:=$(shell echo "$(kernel_cc)" | cut -d ' ' -f 3)
--
- # allow specification of alternate include file tree on command line and extra defines
- ifdef SYSINCLUDE
- INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
- else
- INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
- endif
-
- ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-@@ -83,67 +77,63 @@
-
- install: package-install
-
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
- fi
-
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if PATH="$(PATH):/bin:/sbin" lsmod | grep -w nvidia > /dev/null; then \
-- if ! PATH="($PATH):/bin:/sbin" rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if PATH="$(PATH):/bin:/sbin" lsmod | grep -w NVdriver > /dev/null; then \
-- if ! PATH="$(PATH):/bin:/sbin" rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
- fi
-
--gcc-check:
-- @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
-- if [ "$(kernel_cc)" != "$(module_cc)" ]; then \
-- echo " "; \
-- echo "You appear to be compiling the NVIDIA kernel module with "; \
-- echo "a compiler different from the one that was used to compile "; \
-- echo "the running kernel. This may be perfectly fine, but there "; \
-- echo "are cases where this can lead to unexpected behaviour and "; \
-- echo "system crashes. "; \
-- echo " "; \
-- echo "If you know what you are doing and want to override this "; \
-- echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-- echo " "; \
-- echo "In any other case, set the CC environment variable to the "; \
-- echo "name of the compiler that was used to compile the kernel. "; \
-- echo " "; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed cc sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1; \
-- fi \
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
- fi
-
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.ko $(INSTALLDIR)/nvidia.ko$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.ko installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ if [ -x /usr/src/linux/scripts/modpost ]; then \
-+ /usr/src/linux/scripts/modpost $@; \
-+ $(CC) -c $(CFLAGS) nvidia.mod.c; \
-+ ld -m elf_x86_64 -r -o nvidia.ko $@ nvidia.mod.o; \
-+ fi
-
- $(VERSION_HDR):
- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-@@ -163,7 +153,7 @@
-
-
- clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o nvidia.ko nvidia.mod.c nvidia.mod.o
-
-
- -include $(OBJECTS:%.o=%.d)
-diff -u NVIDIA_kernel-1.0-4499/conftest.sh NVIDIA_kernel-1.0-4499-2.6/conftest.sh
---- NVIDIA_kernel-1.0-4499/conftest.sh 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/conftest.sh 2003-10-12 01:03:01.000000000 +0000
-@@ -37,5 +37,79 @@
- exit 1
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH" -o -n "$KERNDIR"; then
-+ #
-+ # The user chose to disable the gcc sanity test or is building
-+ # the module for a kernel not currently running, which renders
-+ # our test meaningless.
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version.* (.*) (\(gcc.*\)).*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/")
-+ MODULE=$($* -v 2>&1 | tail -n 1)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -u NVIDIA_kernel-1.0-4499/makedevices.sh NVIDIA_kernel-1.0-4499-2.6/makedevices.sh
---- NVIDIA_kernel-1.0-4499/makedevices.sh 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/makedevices.sh 2003-10-12 01:03:01.000000000 +0000
-@@ -8,39 +8,37 @@
- # create a temporary file
- tmp=`(mktemp -q /tmp/nvidia.XXXXXX) 2> /dev/null` || tmp="/tmp/nvidia.$$"
-
--paths=" /etc/modutils/aliases \
-- /etc/modules.conf \
-- /etc/conf.modules "
-+modconfs=" /etc/modutils/aliases \
-+ /etc/modules.conf \
-+ /etc/modprobe.d/aliases \
-+ /etc/modprobe.conf \
-+ /etc/conf.modules "
-
--modconf=""
--for path in $paths; do
-- if [ -f "$path" ]; then
-- modconf=$path
-- break
-+#
-+# Pass the -p option to cp to preserve the permissions of $modconf and
-+# /etc/rc.d/rc.modules across the update. Update all relevant files
-+# including those eventually regenerated to avoid the need for awkward
-+# logic here.
-+#
-+for modconf in $modconfs; do
-+ if [ -f "$modconf" ]; then
-+ cp -p $modconf $tmp
-+ sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-+ if [ -c /dev/.devfsd ]; then
-+ echo "alias /dev/nvidia* nvidia" >> $tmp
-+ else
-+ echo "alias char-major-195 nvidia" >> $tmp
-+ fi
-+ mv -f $tmp $modconf
-+ test -x /sbin/update-modules && /sbin/update-modules
- fi
- done
-
--if [ ! -z $modconf ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of $modconf when we mv it into place
-- cp -p $modconf $tmp
-- sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-- if [ -c /dev/.devfsd ]; then
-- echo "alias /dev/nvidia* nvidia" >> $tmp
-- else
-- echo "alias char-major-195 nvidia" >> $tmp
-- fi
-- mv -f $tmp $modconf
-- test -x /sbin/update-modules && /sbin/update-modules
--else
-- if [ -f /etc/rc.d/rc.modules ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of /etc/rc.d/rc.modules when we mv it into place
-- cp -p /etc/rc.d/rc.modules $tmp
-- sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-- echo -e "\n/sbin/modprobe nvidia" >> $tmp
-- mv -f $tmp /etc/rc.d/rc.modules
-- fi
-+if [ -f /etc/rc.d/rc.modules ]; then
-+ cp -p /etc/rc.d/rc.modules $tmp
-+ sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-+ echo -e "\n/sbin/modprobe nvidia" >> $tmp
-+ mv -f $tmp /etc/rc.d/rc.modules
- fi
-
- if [ ! -c /dev/.devfsd ]; then
-diff -u NVIDIA_kernel-1.0-4499/nv-linux.h NVIDIA_kernel-1.0-4499-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-4499/nv-linux.h 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/nv-linux.h 2003-10-12 01:03:01.000000000 +0000
-@@ -20,35 +20,22 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/version.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
--# define KERNEL_2_5
-+# error This driver does not support 2.5.x kernels!
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +48,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_6)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +64,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_6
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +81,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -359,78 +350,172 @@
- free_pages(ptr, order); \
- }
-
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) (inter_module_put((char *) sym))
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define EVENT_QUEUE(ptr) ((struct __wait_queue_head *)(ptr))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--# define INIT_EVENT_QUEUE(ptr) \
-- if (ptr == NULL) { \
-- NV_KMALLOC((ptr), sizeof(struct __wait_queue_head)); \
-- if (ptr) { \
-- memset((ptr), 0, sizeof(struct __wait_queue_head)); \
-- init_waitqueue_head((struct __wait_queue_head *)(ptr)); \
-- } \
-- }
--# define FREE_EVENT_QUEUE(ptr) NV_KFREE((ptr), sizeof(struct __wait_queue_head)); (ptr) = NULL;
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define EVENT_QUEUE(ptr) ((struct wait_queue **) &(ptr))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
--# define INIT_EVENT_QUEUE(ptr) if (ptr) { ((ptr) = NULL); }
--# define FREE_EVENT_QUEUE(ptr)
-+#ifdef KERNEL_2_6
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#define NV_DEVICE_NUMBER(x) minor((x)->i_rdev)
-+#define NV_VMA_OFFSET(x) (((x)->vm_pgoff) << PAGE_SHIFT)
-+#define NV_VMA_PRIVATE(x) ((x)->vm_private_data)
-+#define NV_IS_CONTROL_DEVICE(x) (minor((x)->i_rdev) == 255)
-+
-+#ifndef minor
-+/*
-+ * XXX Is this correct for all possible target kernels? We need this to
-+ * support older 2.4 and some 2.6 kernels.
-+ */
-+# define minor(x) MINOR(x)
- #endif
-
-+#ifndef KERNEL_2_6
-+ typedef void irqreturn_t;
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_6
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
-+#endif
-+
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_6
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_6 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
-+ { \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -487,7 +572,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -545,9 +630,10 @@
-
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- /* get a timer callback every second */
-@@ -583,7 +669,7 @@
- U032 num_events;
- U032 put, get;
- spinlock_t fp_lock;
-- void *wqueue; // wait_queue for polling
-+ wait_queue_head_t waitqueue;
- nv_event_t *event_fifo; // fifo for storing events
- } nv_file_private_t;
-
-diff -u NVIDIA_kernel-1.0-4499/nv.c NVIDIA_kernel-1.0-4499-2.6/nv.c
---- NVIDIA_kernel-1.0-4499/nv.c 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/nv.c 2003-10-12 01:03:01.000000000 +0000
-@@ -15,6 +15,7 @@
- #include "nv_compiler.h"
- #include "os-agp.h"
-
-+MODULE_LICENSE("NVIDIA");
-
- /*
- * our global state; one per device
-@@ -33,32 +34,20 @@
- */
-
- nv_linux_state_t nv_ctl_device = { { 0 } };
--void *nv_ctl_wqueue = NULL;
-+wait_queue_head_t nv_ctl_waitqueue;
-
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -118,10 +107,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -132,7 +117,7 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -155,6 +140,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -325,8 +311,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x: count %d flags 0x%x\n",
- *page_ptr,
-- (GET_MAP_NR(*page_ptr))->count,
-- (GET_MAP_NR(*page_ptr))->flags);
-+ (virt_to_page(__va(*page_ptr)))->count,
-+ (virt_to_page(__va(*page_ptr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -397,7 +383,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- *page_ptr++ = phys_addr;
- pages_needed--;
-@@ -410,7 +396,7 @@
- while (page_ptr != (unsigned long *) page_list)
- {
- page_ptr--;
-- mem_map_unreserve(GET_MAP_NR(*page_ptr));
-+ ClearPageReserved(virt_to_page(__va(*page_ptr)));
- NV_FREE_PAGES((unsigned long) phys_to_virt(*page_ptr), 0);
- }
-
-@@ -430,7 +416,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(*page_list));
-+ ClearPageReserved(virt_to_page(__va(*page_list)));
- page_list++;
- pages_left--;
- }
-@@ -596,11 +582,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -662,9 +643,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -753,9 +731,8 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
- int rc, i;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-@@ -768,7 +745,7 @@
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
-@@ -780,34 +757,35 @@
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
- for (i = 0; i < num_nv_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
- }
-
- // init the nvidia control device
-@@ -815,6 +793,7 @@
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -841,14 +820,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -856,26 +835,27 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc, i;
-- nv_linux_state_t *nvl;
-- nv_linux_state_t *max_devices;
-+ int rc;
-+ nv_linux_state_t *nvl, *max_devices;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
- #ifdef CONFIG_PM
-- for (i = 0; i < num_nv_devices; i++)
-- {
-- pm_unregister(pm_nv_dev[i]);
-- }
-+ do {
-+ int i;
-+ for (i = 0; i < num_nv_devices; i++) {
-+ pm_unregister(pm_nv_dev[i]);
-+ }
-+ } while (0);
- #endif
-
- // Shutdown the resource manager
-@@ -894,30 +874,29 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < num_nv_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
-
- #if NV_ENABLE_MEM_TRACKING
-@@ -929,6 +908,8 @@
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -942,11 +923,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -954,8 +935,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -963,11 +942,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -985,22 +964,12 @@
- if (at->page_table)
- nvos_unlock_pages(at->page_table, at->num_pages);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
--
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
-+#if 0
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
-@@ -1013,7 +982,7 @@
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1052,7 +1021,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1078,10 +1047,8 @@
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
-- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
-- nv_kern_vma_nopage,
--#endif
-+ nv_kern_vma_release /* "close" */
-+ /* , nv_kern_vma_nopage */
- };
-
- static nv_file_private_t *
-@@ -1096,7 +1063,7 @@
- memset(nvfp, 0, sizeof(nv_file_private_t));
-
- // initialize this file's event queue
-- INIT_EVENT_QUEUE(nvfp->wqueue);
-+ init_waitqueue_head(&nvfp->waitqueue);
-
- nv_init_lock(nvfp->fp_lock);
-
-@@ -1116,7 +1083,6 @@
- if (nvfp == NULL)
- return;
-
-- FREE_EVENT_QUEUE(nvfp->wqueue);
- NV_VFREE(nvfp->event_fifo, sizeof(nv_event_t) * NV_EVENT_FIFO_SIZE);
- NV_VFREE(nvfp, sizeof(nv_file_private_t));
- }
-@@ -1145,11 +1111,11 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-- devnum = NV_DEVICE_NUMBER(inode->i_rdev);
-+ devnum = NV_DEVICE_NUMBER(inode);
- if (devnum >= NV_MAX_DEVICES)
- {
- rc = -ENODEV;
-@@ -1202,12 +1168,14 @@
- goto failed;
- }
-
-+ nvl->tasklet.func = (void *) rm_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-
- nv->usage_count++;
-- MOD_INC_USE_COUNT;
-
- failed:
- nv_unlock(nvl->ldata_lock);
-@@ -1238,38 +1206,32 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_close(inode, file);
-
-- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-+ nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode));
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1300,8 +1262,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1318,10 +1278,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%p-0x%p] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1339,7 +1299,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1347,7 +1307,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1357,7 +1317,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1366,7 +1326,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- LINUX_VMA_OFFS(vma),
-+ NV_VMA_OFFSET(vma),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1376,10 +1336,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1397,7 +1357,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1420,13 +1380,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1444,7 +1404,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1466,9 +1426,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1494,7 +1451,7 @@
- {
- nv_printf(NV_DBG_EVENTINFO, "calling poll_wait\n");
- // add us to the list
-- poll_wait(file, EVENT_QUEUE(nvfp->wqueue), wait);
-+ poll_wait(file, &nvfp->waitqueue, wait);
- }
-
- nv_lock(nvfp->fp_lock);
-@@ -1562,12 +1519,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_6)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case NV_ESC_MODULE_RESET:
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case NV_ESC_CARD_INFO:
- {
-@@ -1694,7 +1652,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1708,9 +1666,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1828,11 +1787,9 @@
-
- if (nv->usage_count == 0)
- {
-- INIT_EVENT_QUEUE(nv_ctl_wqueue);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
-- MOD_INC_USE_COUNT;
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1860,10 +1817,8 @@
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
-- {
-- FREE_EVENT_QUEUE(nv_ctl_wqueue);
- nv->flags = 0;
-- }
-+
- nv_unlock(nvl->ldata_lock);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1874,8 +1829,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1899,7 +1852,7 @@
- nv = NV_STATE_PTR(nvl);
-
- if ( !(file->f_flags & O_NONBLOCK) )
-- poll_wait(file, EVENT_QUEUE(nv_ctl_wqueue), wait);
-+ poll_wait(file, &nv_ctl_waitqueue, wait);
-
- nv_lock(nvl->ldata_lock);
-
-@@ -1930,7 +1883,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock(nv_ctl_device.ldata_lock);
-
-- wake_up_interruptible(EVENT_QUEUE(nv_ctl_wqueue));
-+ wake_up_interruptible(&nv_ctl_waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -2009,7 +1962,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2137,18 +2090,15 @@
- {
- unsigned long retaddr = (unsigned long) at->page_table[i];
-
-- // if we've allocated via vmalloc on a highmem system, the
-- // physical address may not be accessible via PAGE_OFFSET,
-- // that's ok, we have a simple linear pointer already.
- if (at->flags & NV_ALLOC_TYPE_VMALLOC)
- {
- return (void *)((unsigned char *) at->key_mapping + (i << PAGE_SHIFT) + offset);
- }
--
-- if (retaddr <= MAXMEM)
-- {
-- return __va((retaddr + offset));
-- }
-+ else if (!(at->flags & NV_ALLOC_TYPE_CONTIG))
-+ {
-+ return __va((retaddr + offset));
-+ }
-+
-
- // ?? this may be a contiguous allocation, fall through
- // to below? or should I just check at->flag here?
-@@ -2218,9 +2168,9 @@
- unsigned long
- nv_get_phys_address(unsigned long address)
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
- unsigned long retval;
-
- #if defined(NVCPU_IA64)
-@@ -2234,23 +2184,24 @@
- return __pa(address);
-
- if (address > VMALLOC_START)
-- pg_dir = pgd_offset_k(address);
-+ pgd = pgd_offset_k(address);
- else
-- pg_dir = pgd_offset(current->mm, address);
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
-
-- retval = ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+ retval = (NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address);
-
- #if defined(NVCPU_X86_64) && defined(_PAGE_NX)
- // mask out the non-executable page bit for the true physical address
-@@ -2618,8 +2569,7 @@
- nvfp->put = 0;
-
- nv_unlock(nvfp->fp_lock);
--
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- }
-
- int nv_get_event(
-@@ -2704,12 +2654,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else
- status = rm_init_agp(nv);
-diff -u NVIDIA_kernel-1.0-4499/os-agp.c NVIDIA_kernel-1.0-4499-2.6/os-agp.c
---- NVIDIA_kernel-1.0-4499/os-agp.c 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/os-agp.c 2003-10-12 01:03:01.000000000 +0000
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -105,13 +70,17 @@
- U032 agp_rate;
- U032 agp_sba;
- U032 agp_fw;
-- char* chipset;
- VOID *bitmap;
- U032 bitmap_size;
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
-@@ -119,48 +88,13 @@
- return 1;
- }
-
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
--
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
- * in some way. This is so we don't try to use nvagp and lock up
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -178,44 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
--
-- switch ( agpinfo.chipset )
-- {
-- case INTEL_GENERIC: chipset = "Intel"; break;
-- case INTEL_LX: chipset = "Intel 440LX"; break;
-- case INTEL_BX: chipset = "Intel 440BX"; break;
-- case INTEL_GX: chipset = "Intel 440GX"; break;
-- case INTEL_I810: chipset = "Intel i810"; break;
-- case INTEL_I840: chipset = "Intel i840"; break;
--#if !defined (KERNEL_2_2)
-- case INTEL_I815: chipset = "Intel i815"; break;
--#if !defined(__rh_config_h__)
-- case INTEL_I850: chipset = "Intel i850"; break;
--#endif
--#endif
--#if defined(NVCPU_IA64)
-- case INTEL_460GX: chipset = "Intel 460GX"; break;
--#endif
-- case VIA_GENERIC: chipset = "VIA"; break;
-- case VIA_VP3: chipset = "VIA VP3"; break;
-- case VIA_MVP3: chipset = "VIA MVP3"; break;
-- case VIA_MVP4: chipset = "VIA MVP4"; break;
--#if !defined (KERNEL_2_2)
-- case VIA_APOLLO_KX133: chipset = "VIA Apollo KX133"; break;
-- case VIA_APOLLO_KT133: chipset = "VIA Apollo KT133"; break;
--#endif
-- case VIA_APOLLO_PRO: chipset = "VIA Apollo Pro"; break;
-- case SIS_GENERIC: chipset = "SiS"; break;
-- case AMD_GENERIC: chipset = "AMD"; break;
-- case AMD_IRONGATE: chipset = "AMD Irongate"; break;
-- case ALI_M1541: chipset = "ALi M1541"; break;
-- case ALI_GENERIC: chipset = "ALi"; break;
-- case NOT_SUPPORTED: chipset = "unsupported"; break;
-- default: chipset = "unknown";
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
- }
--
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: %s chipset\n", chipset);
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -229,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -245,7 +157,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -256,7 +169,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -267,39 +181,19 @@
- os_free_mem(bitmap);
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -333,11 +227,13 @@
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -384,7 +280,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -392,7 +288,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -409,7 +305,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -424,7 +320,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -463,7 +359,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -481,9 +377,6 @@
- #endif /* AGPGART */
- }
-
--
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -530,9 +423,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -558,8 +448,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -u NVIDIA_kernel-1.0-4499/os-interface.c NVIDIA_kernel-1.0-4499-2.6/os-interface.c
---- NVIDIA_kernel-1.0-4499/os-interface.c 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/os-interface.c 2003-10-12 01:03:01.000000000 +0000
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -211,6 +211,11 @@
- {
- NV_MEM_TRACKING_PAD_SIZE(size);
-
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -296,7 +301,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -320,7 +325,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -426,7 +431,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -524,8 +529,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -708,14 +713,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -848,16 +853,6 @@
- NV_IOREMAP_NOCACHE(vaddr, start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- #ifdef DEBUG
- if (mode == NV_MEMORY_WRITECOMBINED) {
- nv_printf(NV_DBG_ERRORS,
-@@ -878,16 +873,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- NV_IOUNMAP(addr, size_bytes);
-- }
-+ NV_IOUNMAP(addr, size_bytes);
- }
-
- VOID* os_map_user_space(
-@@ -991,7 +977,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
-
-@@ -1054,12 +1040,15 @@
- if (sgi_funcs.add_barrier == NULL)
- {
- #if defined(TESTING_SWAP)
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated in Linux 2.5, a
-+ * new mechanism is in place; this code will need to be updated at some
-+ * point.
-+ */
- inter_module_register(ADD_BARRIER_FUNC, THIS_MODULE, sgitest_add_barrier);
- inter_module_register(REMOVE_BARRIER_FUNC, THIS_MODULE, sgitest_remove_barrier);
- inter_module_register(SWAP_READY_FUNC, THIS_MODULE, sgitest_swap_ready);
- #endif
--#endif
- sgi_funcs.add_barrier = GET_MODULE_SYMBOL(0, ADD_BARRIER_FUNC);
- sgi_funcs.remove_barrier = GET_MODULE_SYMBOL(0, REMOVE_BARRIER_FUNC);
- sgi_funcs.swap_ready = GET_MODULE_SYMBOL(0, SWAP_READY_FUNC);
-diff -u NVIDIA_kernel-1.0-4499/os-registry.c NVIDIA_kernel-1.0-4499-2.6/os-registry.c
---- NVIDIA_kernel-1.0-4499/os-registry.c 2003-09-18 00:22:11.000000000 +0000
-+++ NVIDIA_kernel-1.0-4499-2.6/os-registry.c 2003-10-12 01:03:01.000000000 +0000
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch b/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch
deleted file mode 100644
index 611dd2efc4f5..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- NVIDIA-Linux-x86-1.0-5328-pkg1/usr/src/nv/os-interface.c.orig 2003-12-17 17:54:59.000000000 -0500
-+++ NVIDIA-Linux-x86-1.0-5328-pkg1/usr/src/nv/os-interface.c 2003-12-25 15:19:29.000000000 -0500
-@@ -618,12 +618,28 @@
- return value;
- }
-
-+struct pci_dev* nvos_find_agp_by_class(unsigned int);
-+
- U032 os_pci_read_dword(
- VOID *handle,
- U008 offset
- )
- {
- U032 value;
-+ if (!handle) {
-+ /*
-+ * XXX: This hack works around a bug in the NVIDIA AGP
-+ * GART driver, which calls us with an invalid handle
-+ * on newer Via chipsets. What we need here instead is
-+ * a handle for the AGP graphics card.
-+ */
-+ handle = nvos_find_agp_by_class(PCI_CLASS_DISPLAY_VGA);
-+
-+ if (!handle) {
-+ printk("NVRM: os_pci_read_dword(): bad handle!\n");
-+ return 0;
-+ }
-+ }
- pci_read_config_dword( (struct pci_dev *) handle, offset, (u32 *) &value);
- return value;
- }
diff --git a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff b/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff
deleted file mode 100644
index 05de47d58eda..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff
+++ /dev/null
@@ -1,2479 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile NVIDIA_kernel-1.0-5328-2.6/Makefile
---- NVIDIA_kernel-1.0-5328/Makefile 2003-12-17 23:55:01.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,141 +0,0 @@
--# This Makefile is automatically generated; do not edit
--# Generated on 'builder3.nvidia.com' on Wed Dec 17 13:54:52 PST 2003
--
--LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
--INCLUDES=-I.
--
--OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
--HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
--
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-multichar -Werror -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
--
--RESMAN_KERNEL_MODULE=nv-kernel.o
--
--KERNDIR=/lib/modules/$(shell uname -r)
--
--# check for newer paths. if found, use them, otherwise use old paths
--# these wouldn't work with the gnu make included with rh6.2
--# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
--# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
--
--# this is slightly more brain-dead, but works..
--ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
--KERNINC=$(KERNDIR)/build/include
--else
--KERNINC=/usr/src/linux/include
--endif
--
--ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
--INSTALLDIR=$(KERNDIR)/kernel/drivers/video
--else
--INSTALLDIR=$(KERNDIR)/video
--endif
--
--ifeq ($(shell echo $(NVDEBUG)),1)
-- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-- RMDEBUG=1
-- endif
--endif
--
--ifeq ($(shell echo $(RMDEBUG)),1)
--CFLAGS += -DDEBUG -g -fno-common
--endif
--
--# this is just plain wrong, get rid of it
--BROKENDIR=$(KERNDIR)/kernel/video
--
--INSTALL=$(shell which install)
--
--# allow specification of alternate include file tree on command line and extra defines
--ifdef SYSINCLUDE
--INCLUDES += -I$(SYSINCLUDE)
--else
--INCLUDES += -I$(KERNINC)
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-- DEFINES += -DREMAP_PAGE_RANGE_5
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-- DEFINES += -DREMAP_PAGE_RANGE_4
--endif
--
--DEFINES+=$(EXTRA_DEFINES)
--
--# allow build parameters to be passed in through the environment
--ifdef BUILD_PARAMS
-- DEFINES+=-D$(BUILD_PARAMS)
--endif
--
--VERSION_HDR=nv_compiler.h
--
--all: install
--
--install: package-install
--
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-- fi
--
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if PATH="$(PATH):/bin:/sbin" lsmod | grep -w nvidia > /dev/null; then \
-- if ! PATH="($PATH):/bin:/sbin" rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if PATH="$(PATH):/bin:/sbin" lsmod | grep -w NVdriver > /dev/null; then \
-- if ! PATH="$(PATH):/bin:/sbin" rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-- fi
--
--gcc-check:
-- @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
--
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--$(VERSION_HDR):
-- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
--
--$(LINUX_MODULE): $(OBJECTS)
-- ld -r -o $@ $(OBJECTS)
--
--%.o: %.c $(HEADERS)
-- $(CC) -c $(CFLAGS) $<
--
--# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
--%.i: %.c
-- $(CC) $(CFLAGS) -E $< > $@
--
--%.s: %.c
-- $(CC) $(CFLAGS) -S $< > $@
--
--
--clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
--
--
---include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile.kbuild NVIDIA_kernel-1.0-5328-2.6/Makefile.kbuild
---- NVIDIA_kernel-1.0-5328/Makefile.kbuild 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile.kbuild 2003-12-22 10:52:22.000000000 +0100
-@@ -0,0 +1,245 @@
-+#
-+# KBUILD Makefile for the NVIDIA Linux kernel module.
-+#
-+# The motivation for replacing the original Makefile is the hope that this
-+# version will simplify the build and installation process. In the past,
-+# many architectural and cosmetic changes to the Linux kernel have made it
-+# difficult to maintain compatibility or required duplication of logic.
-+#
-+# Linux 2.5 introduces numerous such changes, many of which impact modules.
-+# Relying on KBUILD, some aspects of the build system otherwise difficult
-+# to support (for example, module versioning) are abstracted away and dealt
-+# with elsewhere, making life significantly easier here.
-+#
-+# The new approach currently has its own share of problems, some of which
-+# are architectural difficulties with KBUILD, others minor annoyances. For
-+# this reason, an improved version of the NVIDIA Makefile is available to
-+# those experiencing difficulties.
-+#
-+# Please report any problems you may be experiencing with this experimental
-+# Makefile to either one (or, preferably, both) of us:
-+#
-+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
-+# Christian Zander (zander@mail.minion.de) (enhancements)
-+#
-+
-+all: install
-+install: package-install
-+
-+#
-+# The NVIDIA kernel module base name and static file names. KBUILD will go
-+# ahead and append ".o" or ".ko" to form the final module name.
-+#
-+
-+MODULE_NAME := nvidia
-+VERSION_HEADER := nv_compiler.h
-+
-+#
-+# List of object files to link into NVIDIA kernel module; make sure KBUILD
-+# understands that we want a module.
-+#
-+
-+RESMAN_CORE_OBJS := nv-kernel.o
-+RESMAN_GLUE_OBJS := nv.o os-agp.o os-interface.o os-registry.o
-+
-+$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)
-+
-+#
-+# A bug in KBUILD 2.4 means that leaving obj-m set in top-level context
-+# will cause Rules.make to call pathdown.sh, which is wrong. So, we only
-+# set this conditional of a kernel-level instance.
-+#
-+
-+ifdef TOPDIR
-+obj-m += $(MODULE_NAME).o
-+endif
-+
-+#
-+# Include local source directory in $(CC)'s include path and set disable any
-+# warning types that are of little interest to us.
-+#
-+
-+EXTRA_CFLAGS += -I$(src)
-+EXTRA_CFLAGS += -Wno-cast-qual -Wno-strict-prototypes
-+
-+#
-+# Determine location of the Linux kernel source tree. Allow users to override
-+# the default (i.e. automatically determined) kernel source location with the
-+# KERNDIR directive; this new directive replaces NVIDIA's SYSINCLUDE.
-+#
-+
-+ifdef KERNDIR
-+ KERNEL_SOURCES := $(KERNDIR)
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers # XXX
-+else
-+ KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers
-+endif
-+
-+#
-+# We rely on these two definitions below; if they aren't set, we set them to
-+# reasonable defaults (Linux 2.4's KBUILD, and top-level passes will not set
-+# these).
-+#
-+
-+src ?= .
-+obj ?= .
-+
-+#
-+# Sets any internal variables left unset by KBUILD (e.g. this happens during
-+# a top-level run).
-+#
-+
-+TOPDIR ?= $(KERNEL_SOURCES)
-+PATCHLEVEL ?= $(shell sh $(src)/conftest.sh kernel_patch_level $(TOPDIR))
-+
-+#
-+# Linux 2.4 uses the .o module extension. Linux 2.5, however, uses the .ko
-+# module extension. Handle these gracefully.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+ MODULE_OBJECT := $(MODULE_NAME).o
-+else
-+ MODULE_OBJECT := $(MODULE_NAME).ko
-+endif
-+
-+#
-+# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become
-+# necessary with the introduction of the five argument version to Linux 2.4
-+# distribution kernels; this conflicting change cannot be detected at compile
-+# time.
-+#
-+
-+EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+ EXTRA_CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 5)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 4)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+#
-+# NVIDIA binary object file includes .common section.
-+#
-+
-+EXTRA_LDFLAGS := -d
-+
-+#
-+# Miscellaneous NVIDIA kernel module build support targets. They are needed
-+# to satisfy KBUILD requirements and to support NVIDIA specifics.
-+#
-+
-+$(obj)/nv-kernel.o:
-+ cp $(src)/$(RESMAN_CORE_OBJS) $(obj)/$(RESMAN_CORE_OBJS)
-+
-+$(obj)/$(VERSION_HEADER):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(obj)/nv.o: $(obj)/$(VERSION_HEADER)
-+
-+#
-+# More quirks for Linux 2.4 KBUILD, which doesn't link automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+$(obj)/$(MODULE_NAME).o: $($(MODULE_NAME)-objs)
-+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $($(MODULE_NAME)-objs)
-+endif
-+
-+#
-+# KBUILD build parameters.
-+#
-+
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+
-+#
-+# NVIDIA sanity checks.
-+#
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check $(MODULE_NAME); then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check full_output $(CC); then \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module using Linux KBUILD. This target is used by
-+# the "package-install" target below.
-+#
-+
-+module: cc-sanity-check
-+ @make $(KBUILD_PARAMS) modules; \
-+ if ! [ -f $(MODULE_OBJECT) ]; then \
-+ echo "$(MODULE_OBJECT) failed to build!"; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module with KBUILD. Verify that the user posesses
-+# sufficient privileges. Rebuild the module dependency file.
-+#
-+
-+module-install: suser-sanity-check module
-+ @mkdir -p $(MODULE_ROOT)/video; \
-+ install -m 0664 -o root -g root $(MODULE_OBJECT) $(MODULE_ROOT)/video; \
-+ /sbin/depmod -ae;
-+
-+#
-+# This target builds, then installs, then creates device nodes and inserts
-+# the module, if successful.
-+#
-+
-+package-install: module-install rmmod-sanity-check
-+ @sh makedevices.sh; \
-+ /sbin/modprobe $(MODULE_NAME) && \
-+ echo "$(MODULE_OBJECT) installed successfully.";
-+
-+#
-+# Support hack, KBUILD isn't prepared to clean up after external modules.
-+#
-+
-+clean:
-+ @rm -f $(RESMAN_GLUE_OBJS) .*.{cmd,flags}
-+ @rm -f $(MODULE_NAME).{o,ko,mod.{o,c}} built-in.o $(VERSION_HEADER) *~
-+
-+#
-+# Linux 2.4 KBUILD requires the inclusion of Rules.make; Linux 2.5's KBUILD
-+# includes dependencies automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+include $(KERNEL_SOURCES)/Rules.make
-+endif
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile.nvidia NVIDIA_kernel-1.0-5328-2.6/Makefile.nvidia
---- NVIDIA_kernel-1.0-5328/Makefile.nvidia 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile.nvidia 2003-12-18 13:24:15.000000000 +0100
-@@ -0,0 +1,139 @@
-+# This Makefile is automatically generated; do not edit
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-+
-+LINUX_MODULE=nv-linux.o
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+INCLUDES=-I.
-+
-+OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-+HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-+
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+
-+RESMAN_KERNEL_MODULE=nv-kernel.o
-+
-+KERNDIR=/lib/modules/$(shell uname -r)
-+
-+# check for newer paths. if found, use them, otherwise use old paths
-+# these wouldn't work with the gnu make included with rh6.2
-+# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-+# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-+
-+# this is slightly more brain-dead, but works..
-+ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-+KERNINC=$(KERNDIR)/build/include
-+else
-+KERNINC=/usr/src/linux/include
-+endif
-+
-+ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-+INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-+else
-+INSTALLDIR=$(KERNDIR)/video
-+endif
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+# this is just plain wrong, get rid of it
-+BROKENDIR=$(KERNDIR)/kernel/video
-+
-+INSTALL=$(shell which install)
-+
-+# allow specification of alternate include file tree on command line and extra defines
-+ifdef SYSINCLUDE
-+INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-+else
-+INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-+ DEFINES += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-+ DEFINES += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+DEFINES+=$(EXTRA_DEFINES)
-+
-+# allow build parameters to be passed in through the environment
-+ifdef BUILD_PARAMS
-+ DEFINES+=-D$(BUILD_PARAMS)
-+endif
-+
-+VERSION_HDR=nv_compiler.h
-+
-+all: install
-+
-+install: package-install
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.o installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+
-+$(VERSION_HDR):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(LINUX_MODULE): $(OBJECTS)
-+ ld -r -o $@ $(OBJECTS)
-+
-+%.o: %.c $(HEADERS)
-+ $(CC) -c $(CFLAGS) $<
-+
-+# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-+%.i: %.c
-+ $(CC) $(CFLAGS) -E $< > $@
-+
-+%.s: %.c
-+ $(CC) $(CFLAGS) -S $< > $@
-+
-+
-+clean:
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+
-+
-+-include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-5328/conftest.sh NVIDIA_kernel-1.0-5328-2.6/conftest.sh
---- NVIDIA_kernel-1.0-5328/conftest.sh 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/conftest.sh 2003-12-18 13:22:54.000000000 +0100
-@@ -104,5 +104,79 @@
- exit 0
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH" -o -n "$KERNDIR"; then
-+ #
-+ # The user chose to disable the gcc sanity test or is building
-+ # the module for a kernel not currently running, which renders
-+ # our test meaningless.
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version.* (.*) (\(gcc.*\)).*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/")
-+ MODULE=$($* -v 2>&1 | tail -n 1)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -ruN NVIDIA_kernel-1.0-5328/makedevices.sh NVIDIA_kernel-1.0-5328-2.6/makedevices.sh
---- NVIDIA_kernel-1.0-5328/makedevices.sh 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/makedevices.sh 2003-12-18 13:22:54.000000000 +0100
-@@ -8,47 +8,49 @@
- # create a temporary file
- tmp=`(mktemp -q /tmp/nvidia.XXXXXX) 2> /dev/null` || tmp="/tmp/nvidia.$$"
-
--paths=" /etc/modutils/aliases \
-- /etc/modules.conf \
-- /etc/conf.modules "
--
--modconf=""
--for path in $paths; do
-- if [ -f "$path" ]; then
-- modconf=$path
-- break
-+modconfs=" /etc/modutils/aliases \
-+ /etc/modules.conf \
-+ /etc/modprobe.d/aliases \
-+ /etc/modprobe.conf \
-+ /etc/conf.modules "
-+
-+#
-+# Pass the -p option to cp to preserve the permissions of $modconf and
-+# /etc/rc.d/rc.modules across the update. Update all relevant files
-+# including those eventually regenerated to avoid the need for awkward
-+# logic here.
-+#
-+for modconf in $modconfs; do
-+ if [ -f "$modconf" ]; then
-+ cp -p $modconf $tmp
-+ sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-+
-+ # make sure the last character in the file is a newline
-+ [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
-+
-+ if [ -c /dev/.devfsd ]; then
-+ echo "alias /dev/nvidia* nvidia" >> $tmp
-+ else
-+ if [ `uname -r | cut -d '.' -f 2` = 6 ]; then
-+ echo "alias char-major-195* nvidia" >> $tmp
-+ else
-+ echo "alias char-major-195 nvidia" >> $tmp
-+ fi
-+ fi
-+ mv -f $tmp $modconf
-+ test -x /sbin/update-modules && /sbin/update-modules
- fi
- done
-
--if [ ! -z $modconf ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of $modconf when we mv it into place
-- cp -p $modconf $tmp
-- sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
--
-- # make sure the last character in the file is a newline
-- [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
--
-- if [ -c /dev/.devfsd ]; then
-- echo "alias /dev/nvidia* nvidia" >> $tmp
-- else
-- echo "alias char-major-195 nvidia" >> $tmp
-- fi
-- mv -f $tmp $modconf
-- test -x /sbin/update-modules && /sbin/update-modules
--else
-- if [ -f /etc/rc.d/rc.modules ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of /etc/rc.d/rc.modules when we mv it into place
-- cp -p /etc/rc.d/rc.modules $tmp
-- sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
--
-- # make sure the last character in the file is a newline
-- [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
--
-- echo "/sbin/modprobe nvidia" >> $tmp
-- mv -f $tmp /etc/rc.d/rc.modules
-- fi
-+if [ -f /etc/rc.d/rc.modules ]; then
-+ cp -p /etc/rc.d/rc.modules $tmp
-+ sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-+
-+ # make sure the last character in the file is a newline
-+ [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
-+
-+ echo -e "\n/sbin/modprobe nvidia" >> $tmp
-+ mv -f $tmp /etc/rc.d/rc.modules
- fi
-
- if [ ! -c /dev/.devfsd ]; then
-diff -ruN NVIDIA_kernel-1.0-5328/nv-linux.h NVIDIA_kernel-1.0-5328-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-5328/nv-linux.h 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv-linux.h 2003-12-23 10:50:21.000000000 +0100
-@@ -21,34 +21,21 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
--# define KERNEL_2_5
-+# error This driver does not support 2.5.x kernels!
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +48,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_6)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +64,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_6
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +81,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -299,13 +290,7 @@
- * DMA use with the hardware. This has to be done differently for
- * different platforms and kernel versions.
- */
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18)
--#define NV_VMALLOC(ptr, size) \
-- { \
-- (void *) (ptr) = vmalloc(size); \
-- VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
-- }
--#elif defined(NVCPU_IA64)
-+#if defined(NVCPU_IA64)
- #define NV_VMALLOC(ptr, size) \
- { \
- (void *) (ptr) = vmalloc_dma(size); \
-@@ -377,78 +362,174 @@
-
- #endif /* !defined NVWATCH */
-
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) (inter_module_put((char *) sym))
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define EVENT_QUEUE(ptr) ((struct __wait_queue_head *)(ptr))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--# define INIT_EVENT_QUEUE(ptr) \
-- if (ptr == NULL) { \
-- NV_KMALLOC((ptr), sizeof(struct __wait_queue_head)); \
-- if (ptr) { \
-- memset((ptr), 0, sizeof(struct __wait_queue_head)); \
-- init_waitqueue_head((struct __wait_queue_head *)(ptr)); \
-- } \
-- }
--# define FREE_EVENT_QUEUE(ptr) NV_KFREE((ptr), sizeof(struct __wait_queue_head)); (ptr) = NULL;
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define EVENT_QUEUE(ptr) ((struct wait_queue **) &(ptr))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
--# define INIT_EVENT_QUEUE(ptr) if (ptr) { ((ptr) = NULL); }
--# define FREE_EVENT_QUEUE(ptr)
-+#ifdef KERNEL_2_6
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#define NV_DEVICE_NUMBER(x) minor((x)->i_rdev)
-+#define NV_VMA_OFFSET(x) (((x)->vm_pgoff) << PAGE_SHIFT)
-+#define NV_VMA_PRIVATE(x) ((x)->vm_private_data)
-+#define NV_IS_CONTROL_DEVICE(x) (minor((x)->i_rdev) == 255)
-+
-+#ifndef minor
-+/*
-+ * XXX Is this correct for all possible target kernels? We need this to
-+ * support older 2.4 and some 2.6 kernels.
-+ */
-+# define minor(x) MINOR(x)
-+#endif
-+
-+#ifndef KERNEL_2_6
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 23)
-+ typedef void irqreturn_t;
-+#endif
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_6
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
- #endif
-
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_6
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_6 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
-+ { \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -475,7 +556,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -557,9 +638,10 @@
- struct pci_dev *dev;
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- /* get a timer callback every second */
-@@ -597,7 +679,7 @@
- U032 num_events;
- U032 put, get;
- spinlock_t fp_lock;
-- void *wqueue; // wait_queue for polling
-+ wait_queue_head_t waitqueue;
- nv_event_t *event_fifo; // fifo for storing events
- } nv_file_private_t;
-
-diff -ruN NVIDIA_kernel-1.0-5328/nv.c NVIDIA_kernel-1.0-5328-2.6/nv.c
---- NVIDIA_kernel-1.0-5328/nv.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv.c 2003-12-22 23:31:31.000000000 +0100
-@@ -15,6 +15,7 @@
- #include "nv_compiler.h"
- #include "os-agp.h"
-
-+MODULE_LICENSE("NVIDIA");
-
- /*
- * our global state; one per device
-@@ -33,32 +34,20 @@
- */
-
- nv_linux_state_t nv_ctl_device = { { 0 } };
--void *nv_ctl_wqueue = NULL;
-+wait_queue_head_t nv_ctl_waitqueue;
-
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -121,10 +110,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -135,7 +120,7 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -158,6 +143,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -329,8 +315,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x (0x%x): count %d flags 0x%x\n",
- page_ptr->phys_addr, page_ptr->dma_addr,
-- (GET_MAP_NR(page_ptr->phys_addr))->count,
-- (GET_MAP_NR(page_ptr->phys_addr))->flags);
-+ (virt_to_page(__va(page_ptr->phys_addr)))->count,
-+ (virt_to_page(__va(page_ptr->phys_addr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -401,7 +387,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- page_ptr->phys_addr = phys_addr;
- page_ptr->virt_addr = virt_addr;
-@@ -447,7 +433,7 @@
- // but if we failed pci_map_sg, make sure to free this page
- if (page_ptr->virt_addr)
- {
-- mem_map_unreserve(GET_MAP_NR(page_ptr->phys_addr));
-+ ClearPageReserved(virt_to_page(__va(page_ptr->phys_addr)));
- NV_SET_PAGE_ATTRIB_CACHED(page_ptr);
- #if defined(NVCPU_X86_64)
- // only unmap the page if it really was mapped through
-@@ -481,7 +467,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(page_ptr->phys_addr));
-+ ClearPageReserved(virt_to_page(__va(page_ptr->phys_addr)));
- page_ptr++;
- pages_left--;
- }
-@@ -616,7 +602,7 @@
- return 0;
- }
-
--static struct pci_dev* nvos_find_agp_by_class(unsigned int class)
-+struct pci_dev* nvos_find_agp_by_class(unsigned int class)
- {
- struct pci_dev *dev, *fn;
- u8 cap_ptr;
-@@ -674,11 +660,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -740,9 +721,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -831,9 +809,8 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
- int rc, i;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-@@ -846,7 +823,7 @@
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
-@@ -858,34 +835,35 @@
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
- for (i = 0; i < num_nv_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
- }
-
- // init the nvidia control device
-@@ -893,6 +871,7 @@
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -919,14 +898,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -934,26 +913,27 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc, i;
-- nv_linux_state_t *nvl;
-- nv_linux_state_t *max_devices;
-+ int rc;
-+ nv_linux_state_t *nvl, *max_devices;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
- #ifdef CONFIG_PM
-- for (i = 0; i < num_nv_devices; i++)
-- {
-- pm_unregister(pm_nv_dev[i]);
-- }
-+ do {
-+ int i;
-+ for (i = 0; i < num_nv_devices; i++) {
-+ pm_unregister(pm_nv_dev[i]);
-+ }
-+ } while (0);
- #endif
-
- // Shutdown the resource manager
-@@ -972,30 +952,29 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < num_nv_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
-
- #if NV_ENABLE_MEM_TRACKING
-@@ -1007,6 +986,8 @@
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -1020,11 +1001,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -1032,8 +1013,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -1041,11 +1020,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -1063,35 +1042,26 @@
- if (at->page_table)
- nvos_unlock_pages(at);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
-
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
- */
- struct page *nv_kern_vma_nopage(struct vm_area_struct *vma, unsigned long address, int write_access)
- {
-+#if defined(NVCPU_IA64) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9))
- nv_alloc_t *at, *tmp;
- nv_linux_state_t *nvl;
- nv_state_t *nv;
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1130,7 +1100,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1154,15 +1124,14 @@
- at->page_table[index].virt_addr = (unsigned long) __va(page_to_pfn(page_ptr) << PAGE_SHIFT);
-
- return page_ptr;
--}
- #endif
-+ return NOPAGE_SIGBUS;
-+}
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
- nv_kern_vma_nopage,
--#endif
- };
-
- static nv_file_private_t *
-@@ -1177,7 +1146,7 @@
- memset(nvfp, 0, sizeof(nv_file_private_t));
-
- // initialize this file's event queue
-- INIT_EVENT_QUEUE(nvfp->wqueue);
-+ init_waitqueue_head(&nvfp->waitqueue);
-
- nv_init_lock(nvfp->fp_lock);
-
-@@ -1197,7 +1166,6 @@
- if (nvfp == NULL)
- return;
-
-- FREE_EVENT_QUEUE(nvfp->wqueue);
- NV_VFREE(nvfp->event_fifo, sizeof(nv_event_t) * NV_EVENT_FIFO_SIZE);
- NV_VFREE(nvfp, sizeof(nv_file_private_t));
- }
-@@ -1226,11 +1194,11 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-- devnum = NV_DEVICE_NUMBER(inode->i_rdev);
-+ devnum = NV_DEVICE_NUMBER(inode);
- if (devnum >= NV_MAX_DEVICES)
- {
- rc = -ENODEV;
-@@ -1283,12 +1251,14 @@
- goto failed;
- }
-
-+ nvl->tasklet.func = (void *) rm_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-
- nv->usage_count++;
-- MOD_INC_USE_COUNT;
-
- failed:
- nv_unlock(nvl->ldata_lock);
-@@ -1319,38 +1289,32 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_close(inode, file);
-
-- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-+ nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode));
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1381,8 +1345,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1399,10 +1361,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%p-0x%p] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1420,7 +1382,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1428,7 +1390,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- phys_to_uncached(LINUX_VMA_OFFS(vma)),
-+ phys_to_uncached(NV_VMA_OFFSET(vma)),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1438,7 +1400,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1447,7 +1409,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- phys_to_uncached(LINUX_VMA_OFFS(vma)),
-+ phys_to_uncached(NV_VMA_OFFSET(vma)),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1457,10 +1419,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1478,7 +1440,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1502,13 +1464,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1526,7 +1488,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1548,9 +1510,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1577,7 +1536,7 @@
- {
- nv_printf(NV_DBG_EVENTINFO, "calling poll_wait\n");
- // add us to the list
-- poll_wait(file, EVENT_QUEUE(nvfp->wqueue), wait);
-+ poll_wait(file, &nvfp->waitqueue, wait);
- }
-
- nv_lock_irq(nvfp->fp_lock, eflags);
-@@ -1645,12 +1604,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_6)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case NV_ESC_MODULE_RESET:
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case NV_ESC_CARD_INFO:
- {
-@@ -1777,7 +1737,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1791,9 +1751,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1911,11 +1872,9 @@
-
- if (nv->usage_count == 0)
- {
-- INIT_EVENT_QUEUE(nv_ctl_wqueue);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
-- MOD_INC_USE_COUNT;
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1943,10 +1902,8 @@
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
-- {
-- FREE_EVENT_QUEUE(nv_ctl_wqueue);
- nv->flags = 0;
-- }
-+
- nv_unlock(nvl->ldata_lock);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1957,8 +1914,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1982,7 +1937,7 @@
- nv = NV_STATE_PTR(nvl);
-
- if ( !(file->f_flags & O_NONBLOCK) )
-- poll_wait(file, EVENT_QUEUE(nv_ctl_wqueue), wait);
-+ poll_wait(file, &nv_ctl_waitqueue, wait);
-
- nv_lock(nvl->ldata_lock);
-
-@@ -2013,7 +1968,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock(nv_ctl_device.ldata_lock);
-
-- wake_up_interruptible(EVENT_QUEUE(nv_ctl_wqueue));
-+ wake_up_interruptible(&nv_ctl_waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -2092,7 +2047,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2304,27 +2259,30 @@
- int kern
- )
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
- unsigned long retval;
-
-- if (kern) pg_dir = pgd_offset_k(address);
-- else pg_dir = pgd_offset(current->mm, address);
-+ if (kern)
-+ pgd = pgd_offset_k(address);
-+ else
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
-
-- retval = ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+ retval = ((NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-
- #if defined(NVCPU_X86_64) && defined(_PAGE_NX)
- // mask out the non-executable page bit for the true physical address
-@@ -2759,7 +2717,7 @@
-
- if (nvfp->num_events == NV_EVENT_FIFO_SIZE)
- {
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- nv_unlock_irq(nvfp->fp_lock, eflags);
- return;
- }
-@@ -2776,7 +2734,7 @@
- if (nvfp->put >= NV_EVENT_FIFO_SIZE)
- nvfp->put = 0;
-
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- nv_unlock_irq(nvfp->fp_lock, eflags);
- }
-
-@@ -2866,12 +2824,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else {
- #if defined(CONFIG_X86_64) && defined(CONFIG_GART_IOMMU)
-diff -ruN NVIDIA_kernel-1.0-5328/os-agp.c NVIDIA_kernel-1.0-5328-2.6/os-agp.c
---- NVIDIA_kernel-1.0-5328/os-agp.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-agp.c 2003-12-18 13:22:54.000000000 +0100
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -110,48 +75,18 @@
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to retrieve symbol table\n");
- return 1;
- }
--
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
-
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
-@@ -159,7 +94,7 @@
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -177,7 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
-+ }
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -191,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -207,7 +157,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -218,7 +169,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -229,39 +181,19 @@
- os_free_mem(bitmap);
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -295,11 +227,13 @@
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -346,7 +280,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -354,7 +288,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -371,7 +305,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -386,7 +320,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -426,7 +360,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -445,8 +379,6 @@
- }
- #endif
-
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -501,9 +433,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -529,8 +458,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -ruN NVIDIA_kernel-1.0-5328/os-interface.c NVIDIA_kernel-1.0-5328-2.6/os-interface.c
---- NVIDIA_kernel-1.0-5328/os-interface.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-interface.c 2003-12-23 10:46:50.000000000 +0100
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -211,6 +211,11 @@
- {
- NV_MEM_TRACKING_PAD_SIZE(size);
-
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -296,7 +301,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -320,7 +325,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -426,7 +431,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -524,8 +529,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -618,12 +623,28 @@
- return value;
- }
-
-+struct pci_dev* nvos_find_agp_by_class(unsigned int);
-+
- U032 os_pci_read_dword(
- VOID *handle,
- U008 offset
- )
- {
- U032 value;
-+ if (!handle) {
-+ /*
-+ * XXX: This hack works around a bug in the NVIDIA AGP
-+ * GART driver, which calls us with an invalid handle
-+ * on newer Via chipsets. What we need here instead is
-+ * a handle for the AGP graphics card.
-+ */
-+ handle = nvos_find_agp_by_class(PCI_CLASS_DISPLAY_VGA);
-+
-+ if (!handle) {
-+ printk("NVRM: os_pci_read_dword(): bad handle!\n");
-+ return 0;
-+ }
-+ }
- pci_read_config_dword( (struct pci_dev *) handle, offset, (u32 *) &value);
- return value;
- }
-@@ -708,14 +729,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -848,16 +869,6 @@
- NV_IOREMAP_NOCACHE(vaddr, start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- return vaddr;
- }
-
-@@ -866,16 +877,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- NV_IOUNMAP(addr, size_bytes);
-- }
-+ NV_IOUNMAP(addr, size_bytes);
- }
-
- VOID* os_map_user_space(
-@@ -979,7 +981,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
- #if defined(DEBUG) && !defined(NVCPU_IA64)
-diff -ruN NVIDIA_kernel-1.0-5328/os-registry.c NVIDIA_kernel-1.0-5328-2.6/os-registry.c
---- NVIDIA_kernel-1.0-5328/os-registry.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-registry.c 2003-12-18 13:22:54.000000000 +0100
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff b/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff
deleted file mode 100644
index 300cbd0b96cb..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff
+++ /dev/null
@@ -1,2808 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile NVIDIA_kernel-1.0-5328-2.6/Makefile
---- NVIDIA_kernel-1.0-5328/Makefile 2003-12-17 23:55:01.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,141 +0,0 @@
--# This Makefile is automatically generated; do not edit
--# Generated on 'builder3.nvidia.com' on Wed Dec 17 13:54:52 PST 2003
--
--LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
--INCLUDES=-I.
--
--OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
--HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
--
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-multichar -Werror -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
--
--RESMAN_KERNEL_MODULE=nv-kernel.o
--
--KERNDIR=/lib/modules/$(shell uname -r)
--
--# check for newer paths. if found, use them, otherwise use old paths
--# these wouldn't work with the gnu make included with rh6.2
--# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
--# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
--
--# this is slightly more brain-dead, but works..
--ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
--KERNINC=$(KERNDIR)/build/include
--else
--KERNINC=/usr/src/linux/include
--endif
--
--ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
--INSTALLDIR=$(KERNDIR)/kernel/drivers/video
--else
--INSTALLDIR=$(KERNDIR)/video
--endif
--
--ifeq ($(shell echo $(NVDEBUG)),1)
-- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-- RMDEBUG=1
-- endif
--endif
--
--ifeq ($(shell echo $(RMDEBUG)),1)
--CFLAGS += -DDEBUG -g -fno-common
--endif
--
--# this is just plain wrong, get rid of it
--BROKENDIR=$(KERNDIR)/kernel/video
--
--INSTALL=$(shell which install)
--
--# allow specification of alternate include file tree on command line and extra defines
--ifdef SYSINCLUDE
--INCLUDES += -I$(SYSINCLUDE)
--else
--INCLUDES += -I$(KERNINC)
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-- DEFINES += -DREMAP_PAGE_RANGE_5
--endif
--
--ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-- DEFINES += -DREMAP_PAGE_RANGE_4
--endif
--
--DEFINES+=$(EXTRA_DEFINES)
--
--# allow build parameters to be passed in through the environment
--ifdef BUILD_PARAMS
-- DEFINES+=-D$(BUILD_PARAMS)
--endif
--
--VERSION_HDR=nv_compiler.h
--
--all: install
--
--install: package-install
--
--package-install: nvidia.o rmmod-check
-- @if [ `id -ur` != 0 ]; then \
-- echo Please run \"make install\" as root.; \
-- else \
-- if [ -d $(BROKENDIR) ]; then \
-- rm -f $(BROKENDIR)/NVdriver; \
-- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-- fi && \
-- mkdir -p $(INSTALLDIR) && \
-- rm -f $(INSTALLDIR)/NVdriver && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-- fi
--
--RMMOD_ERROR=\
-- echo ""; \
-- echo "Unable to remove existing NVIDIA kernel module."; \
-- echo "Please be sure you have exited X before attempting"; \
-- echo "to install the NVIDIA kernel module."; \
-- echo ""; \
-- echo -en "\033[1;31m"; \
-- echo -e "*** Failed rmmod sanity check. Bailing out! ***"; \
-- echo -en "\033[0m"; \
-- exit 1;
--
--rmmod-check:
-- @if PATH="$(PATH):/bin:/sbin" lsmod | grep -w nvidia > /dev/null; then \
-- if ! PATH="($PATH):/bin:/sbin" rmmod nvidia > /dev/null; then $(RMMOD_ERROR) fi \
-- fi; \
-- if PATH="$(PATH):/bin:/sbin" lsmod | grep -w NVdriver > /dev/null; then \
-- if ! PATH="$(PATH):/bin:/sbin" rmmod NVdriver > /dev/null; then $(RMMOD_ERROR) fi \
-- fi
--
--gcc-check:
-- @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
--
--nvidia.o: gcc-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--$(VERSION_HDR):
-- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
--
--$(LINUX_MODULE): $(OBJECTS)
-- ld -r -o $@ $(OBJECTS)
--
--%.o: %.c $(HEADERS)
-- $(CC) -c $(CFLAGS) $<
--
--# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
--%.i: %.c
-- $(CC) $(CFLAGS) -E $< > $@
--
--%.s: %.c
-- $(CC) $(CFLAGS) -S $< > $@
--
--
--clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
--
--
---include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile.kbuild NVIDIA_kernel-1.0-5328-2.6/Makefile.kbuild
---- NVIDIA_kernel-1.0-5328/Makefile.kbuild 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile.kbuild 2003-12-31 12:44:13.000000000 +0100
-@@ -0,0 +1,261 @@
-+#
-+# KBUILD Makefile for the NVIDIA Linux kernel module.
-+#
-+# The motivation for replacing the original Makefile is the hope that this
-+# version will simplify the build and installation process. In the past,
-+# many architectural and cosmetic changes to the Linux kernel have made it
-+# difficult to maintain compatibility or required duplication of logic.
-+#
-+# Linux 2.5 introduces numerous such changes, many of which impact modules.
-+# Relying on KBUILD, some aspects of the build system otherwise difficult
-+# to support (for example, module versioning) are abstracted away and dealt
-+# with elsewhere, making life significantly easier here.
-+#
-+# The new approach currently has its own share of problems, some of which
-+# are architectural difficulties with KBUILD, others minor annoyances. For
-+# this reason, an improved version of the NVIDIA Makefile is available to
-+# those experiencing difficulties.
-+#
-+# Please report any problems you may be experiencing with this experimental
-+# Makefile to either one (or, preferably, both) of us:
-+#
-+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
-+# Christian Zander (zander@mail.minion.de) (enhancements)
-+#
-+
-+all: install
-+install: package-install
-+
-+#
-+# The NVIDIA kernel module base name and static file names. KBUILD will go
-+# ahead and append ".o" or ".ko" to form the final module name.
-+#
-+
-+MODULE_NAME := nvidia
-+VERSION_HEADER := nv_compiler.h
-+
-+#
-+# List of object files to link into NVIDIA kernel module; make sure KBUILD
-+# understands that we want a module.
-+#
-+
-+RESMAN_CORE_OBJS := nv-kernel.o
-+RESMAN_GLUE_OBJS := nv.o os-agp.o os-interface.o os-registry.o
-+
-+$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)
-+
-+#
-+# The precompiled kernel module build process requires a separation of the
-+# closed source and open source object files.
-+#
-+
-+KERNEL_GLUE_NAME := nv-linux.o
-+KERNEL_GLUE_OBJS := $(RESMAN_GLUE_OBJS) $(MODULE_NAME).mod.o
-+
-+#
-+# A bug in KBUILD 2.4 means that leaving obj-m set in top-level context
-+# will cause Rules.make to call pathdown.sh, which is wrong. So, we only
-+# set this conditional of a kernel-level instance.
-+#
-+
-+ifdef TOPDIR
-+obj-m += $(MODULE_NAME).o
-+endif
-+
-+#
-+# Include local source directory in $(CC)'s include path and set disable any
-+# warning types that are of little interest to us.
-+#
-+
-+EXTRA_CFLAGS += -I$(src)
-+EXTRA_CFLAGS += -Wno-cast-qual -Wno-strict-prototypes
-+
-+#
-+# Determine location of the Linux kernel source tree. Allow users to override
-+# the default (i.e. automatically determined) kernel source location with the
-+# SYSSRC directive; this new directive replaces NVIDIA's SYSINCLUDE.
-+#
-+
-+ifdef SYSSRC
-+ KERNEL_SOURCES := $(SYSSRC)
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers # XXX
-+else
-+ KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-+ KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ MODULE_ROOT := /lib/modules/$(shell uname -r)/kernel/drivers
-+endif
-+
-+#
-+# We rely on these two definitions below; if they aren't set, we set them to
-+# reasonable defaults (Linux 2.4's KBUILD, and top-level passes will not set
-+# these).
-+#
-+
-+src ?= .
-+obj ?= .
-+
-+#
-+# Sets any internal variables left unset by KBUILD (e.g. this happens during
-+# a top-level run).
-+#
-+
-+TOPDIR ?= $(KERNEL_SOURCES)
-+PATCHLEVEL ?= $(shell sh $(src)/conftest.sh kernel_patch_level $(TOPDIR))
-+
-+#
-+# Linux 2.4 uses the .o module extension. Linux 2.5, however, uses the .ko
-+# module extension. Handle these gracefully.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+ MODULE_OBJECT := $(MODULE_NAME).o
-+else
-+ MODULE_OBJECT := $(MODULE_NAME).ko
-+endif
-+
-+#
-+# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become
-+# necessary with the introduction of the five argument version to Linux 2.4
-+# distribution kernels; this conflicting change cannot be detected at compile
-+# time.
-+#
-+
-+EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+ EXTRA_CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 5)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)), 4)
-+ EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+#
-+# NVIDIA binary object file includes .common section.
-+#
-+
-+EXTRA_LDFLAGS := -d
-+
-+#
-+# Miscellaneous NVIDIA kernel module build support targets. They are needed
-+# to satisfy KBUILD requirements and to support NVIDIA specifics.
-+#
-+
-+$(obj)/nv-kernel.o:
-+ cp $(src)/$(RESMAN_CORE_OBJS) $(obj)/$(RESMAN_CORE_OBJS)
-+
-+$(obj)/$(VERSION_HEADER):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(obj)/nv.o: $(obj)/$(VERSION_HEADER)
-+
-+#
-+# More quirks for Linux 2.4 KBUILD, which doesn't link automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+$(obj)/$(MODULE_NAME).o: $($(MODULE_NAME)-objs)
-+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $($(MODULE_NAME)-objs)
-+endif
-+
-+#
-+# KBUILD build parameters.
-+#
-+
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+
-+#
-+# NVIDIA sanity checks.
-+#
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check $(MODULE_NAME); then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check full_output $(CC); then \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module using Linux KBUILD. This target is used by
-+# the "package-install" target below.
-+#
-+
-+$(MODULE_OBJECT): cc-sanity-check
-+ @make $(KBUILD_PARAMS) modules; \
-+ if ! [ -f $(MODULE_OBJECT) ]; then \
-+ echo "$(MODULE_OBJECT) failed to build!"; \
-+ exit 1; \
-+ fi
-+
-+#
-+# Build the NVIDIA kernel module with KBUILD. Verify that the user posesses
-+# sufficient privileges. Rebuild the module dependency file.
-+#
-+
-+module-install: suser-sanity-check $(MODULE_OBJECT)
-+ @mkdir -p $(MODULE_ROOT)/video; \
-+ install -m 0664 -o root -g root $(MODULE_OBJECT) $(MODULE_ROOT)/video; \
-+ /sbin/depmod -ae;
-+
-+#
-+# This target builds, then installs, then creates device nodes and inserts
-+# the module, if successful.
-+#
-+
-+package-install: module-install rmmod-sanity-check
-+ @sh makedevices.sh; \
-+ /sbin/modprobe $(MODULE_NAME) && \
-+ echo "$(MODULE_OBJECT) installed successfully.";
-+
-+#
-+# Build an object file suitable for further processing by the installer and
-+# inclusion as a precompiled kernel interface file.
-+#
-+
-+$(KERNEL_GLUE_NAME): $(MODULE_OBJECT)
-+ @ld -r -o $(KERNEL_GLUE_NAME) $(KERNEL_GLUE_OBJS)
-+
-+#
-+# Support hack, KBUILD isn't prepared to clean up after external modules.
-+#
-+
-+clean:
-+ @rm -f $(RESMAN_GLUE_OBJS) .*.{cmd,flags}
-+ @rm -f $(MODULE_NAME).{o,ko,mod.{o,c}} built-in.o $(VERSION_HEADER) *~
-+
-+#
-+# Linux 2.4 KBUILD requires the inclusion of Rules.make; Linux 2.5's KBUILD
-+# includes dependencies automatically.
-+#
-+
-+ifeq ($(PATCHLEVEL), 4)
-+include $(KERNEL_SOURCES)/Rules.make
-+endif
-diff -ruN NVIDIA_kernel-1.0-5328/Makefile.nvidia NVIDIA_kernel-1.0-5328-2.6/Makefile.nvidia
---- NVIDIA_kernel-1.0-5328/Makefile.nvidia 1970-01-01 01:00:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/Makefile.nvidia 2003-12-18 13:24:15.000000000 +0100
-@@ -0,0 +1,139 @@
-+# This Makefile is automatically generated; do not edit
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-+
-+LINUX_MODULE=nv-linux.o
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-+INCLUDES=-I.
-+
-+OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-+HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-+
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-+
-+RESMAN_KERNEL_MODULE=nv-kernel.o
-+
-+KERNDIR=/lib/modules/$(shell uname -r)
-+
-+# check for newer paths. if found, use them, otherwise use old paths
-+# these wouldn't work with the gnu make included with rh6.2
-+# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-+# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-+
-+# this is slightly more brain-dead, but works..
-+ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-+KERNINC=$(KERNDIR)/build/include
-+else
-+KERNINC=/usr/src/linux/include
-+endif
-+
-+ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-+INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-+else
-+INSTALLDIR=$(KERNDIR)/video
-+endif
-+
-+ifeq ($(shell echo $(NVDEBUG)),1)
-+ ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
-+ RMDEBUG=1
-+ endif
-+endif
-+
-+ifeq ($(shell echo $(RMDEBUG)),1)
-+CFLAGS += -DDEBUG -g -fno-common
-+endif
-+
-+# this is just plain wrong, get rid of it
-+BROKENDIR=$(KERNDIR)/kernel/video
-+
-+INSTALL=$(shell which install)
-+
-+# allow specification of alternate include file tree on command line and extra defines
-+ifdef SYSINCLUDE
-+INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-+else
-+INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-+ DEFINES += -DREMAP_PAGE_RANGE_5
-+endif
-+
-+ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
-+ DEFINES += -DREMAP_PAGE_RANGE_4
-+endif
-+
-+DEFINES+=$(EXTRA_DEFINES)
-+
-+# allow build parameters to be passed in through the environment
-+ifdef BUILD_PARAMS
-+ DEFINES+=-D$(BUILD_PARAMS)
-+endif
-+
-+VERSION_HDR=nv_compiler.h
-+
-+all: install
-+
-+install: package-install
-+
-+suser-sanity-check:
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+rmmod-sanity-check:
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
-+ mkdir -p $(INSTALLDIR) && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
-+ sh makedevices.sh && \
-+ echo "nvidia.o installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+
-+$(VERSION_HDR):
-+ echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-+
-+$(LINUX_MODULE): $(OBJECTS)
-+ ld -r -o $@ $(OBJECTS)
-+
-+%.o: %.c $(HEADERS)
-+ $(CC) -c $(CFLAGS) $<
-+
-+# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-+%.i: %.c
-+ $(CC) $(CFLAGS) -E $< > $@
-+
-+%.s: %.c
-+ $(CC) $(CFLAGS) -S $< > $@
-+
-+
-+clean:
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+
-+
-+-include $(OBJECTS:%.o=%.d)
-diff -ruN NVIDIA_kernel-1.0-5328/conftest.sh NVIDIA_kernel-1.0-5328-2.6/conftest.sh
---- NVIDIA_kernel-1.0-5328/conftest.sh 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/conftest.sh 2003-12-18 13:22:54.000000000 +0100
-@@ -104,5 +104,79 @@
- exit 0
- fi
- ;;
-+
-+ cc_sanity_check)
-+ shift
-+ #
-+ # Verify that the same compiler is used for the kernel and kernel
-+ # module.
-+ #
-+ if test -n "$IGNORE_CC_MISMATCH" -o -n "$KERNDIR"; then
-+ #
-+ # The user chose to disable the gcc sanity test or is building
-+ # the module for a kernel not currently running, which renders
-+ # our test meaningless.
-+ #
-+ exit 0
-+ fi
-+
-+ VERSION="^Linux version.* (.*) (\(gcc.*\)).*"
-+ KERNEL=$(cat /proc/version | sed "s/$VERSION/\1/")
-+ MODULE=$($* -v 2>&1 | tail -n 1)
-+
-+ if test "$KERNEL" != "$MODULE"; then
-+ #
-+ # The kernel seems to have been built with a different version
-+ # of the C compiler, which may be a problem.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ kernel_patch_level)
-+ shift
-+ #
-+ # Determine the kernel's major patch level; this is only done if we
-+ # aren't told by KBUILD.
-+ #
-+ echo $(cat "$1"/Makefile | grep "PATCHLEVEL =" | cut -d " " -f 3)
-+ exit 0
-+ ;;
-+
-+ suser_sanity_check)
-+ shift
-+ #
-+ # Determine the caller's user id to determine if we have sufficient
-+ # privileges for the requested operation.
-+ #
-+ if test $(id -ur) != 0; then
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
-+
-+ rmmod_sanity_check)
-+ shift
-+ #
-+ # Make sure that any currently loaded NVIDIA kernel module can be
-+ # unloaded.
-+ #
-+ if /sbin/lsmod | grep -q "$1"; then
-+ /sbin/rmmod "$1" >& /dev/null
-+ fi
-+
-+ if /sbin/lsmod | grep -q "$1"; then
-+ #
-+ # The NVIDIA kernel module is still loaded, most likely because
-+ # it is busy.
-+ #
-+ exit 1
-+ else
-+ exit 0
-+ fi
-+ ;;
- esac
-
-diff -ruN NVIDIA_kernel-1.0-5328/makedevices.sh NVIDIA_kernel-1.0-5328-2.6/makedevices.sh
---- NVIDIA_kernel-1.0-5328/makedevices.sh 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/makedevices.sh 2003-12-18 13:22:54.000000000 +0100
-@@ -8,47 +8,49 @@
- # create a temporary file
- tmp=`(mktemp -q /tmp/nvidia.XXXXXX) 2> /dev/null` || tmp="/tmp/nvidia.$$"
-
--paths=" /etc/modutils/aliases \
-- /etc/modules.conf \
-- /etc/conf.modules "
--
--modconf=""
--for path in $paths; do
-- if [ -f "$path" ]; then
-- modconf=$path
-- break
-+modconfs=" /etc/modutils/aliases \
-+ /etc/modules.conf \
-+ /etc/modprobe.d/aliases \
-+ /etc/modprobe.conf \
-+ /etc/conf.modules "
-+
-+#
-+# Pass the -p option to cp to preserve the permissions of $modconf and
-+# /etc/rc.d/rc.modules across the update. Update all relevant files
-+# including those eventually regenerated to avoid the need for awkward
-+# logic here.
-+#
-+for modconf in $modconfs; do
-+ if [ -f "$modconf" ]; then
-+ cp -p $modconf $tmp
-+ sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
-+
-+ # make sure the last character in the file is a newline
-+ [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
-+
-+ if [ -c /dev/.devfsd ]; then
-+ echo "alias /dev/nvidia* nvidia" >> $tmp
-+ else
-+ if [ `uname -r | cut -d '.' -f 2` = 6 ]; then
-+ echo "alias char-major-195* nvidia" >> $tmp
-+ else
-+ echo "alias char-major-195 nvidia" >> $tmp
-+ fi
-+ fi
-+ mv -f $tmp $modconf
-+ test -x /sbin/update-modules && /sbin/update-modules
- fi
- done
-
--if [ ! -z $modconf ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of $modconf when we mv it into place
-- cp -p $modconf $tmp
-- sed '/^alias.*\(NVdriver\|nvidia\)/d' < $modconf > $tmp
--
-- # make sure the last character in the file is a newline
-- [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
--
-- if [ -c /dev/.devfsd ]; then
-- echo "alias /dev/nvidia* nvidia" >> $tmp
-- else
-- echo "alias char-major-195 nvidia" >> $tmp
-- fi
-- mv -f $tmp $modconf
-- test -x /sbin/update-modules && /sbin/update-modules
--else
-- if [ -f /etc/rc.d/rc.modules ]; then
-- # Initialize the permissions on $tmp so that we don't change the
-- # permissions of /etc/rc.d/rc.modules when we mv it into place
-- cp -p /etc/rc.d/rc.modules $tmp
-- sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
--
-- # make sure the last character in the file is a newline
-- [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
--
-- echo "/sbin/modprobe nvidia" >> $tmp
-- mv -f $tmp /etc/rc.d/rc.modules
-- fi
-+if [ -f /etc/rc.d/rc.modules ]; then
-+ cp -p /etc/rc.d/rc.modules $tmp
-+ sed '/.*\(NVdriver\|nvidia\).*/d' < /etc/rc.d/rc.modules > $tmp
-+
-+ # make sure the last character in the file is a newline
-+ [ `tail -n 1 $tmp | wc -l` = 0 ] && echo "" >> $tmp
-+
-+ echo -e "\n/sbin/modprobe nvidia" >> $tmp
-+ mv -f $tmp /etc/rc.d/rc.modules
- fi
-
- if [ ! -c /dev/.devfsd ]; then
-diff -ruN NVIDIA_kernel-1.0-5328/nv-linux.h NVIDIA_kernel-1.0-5328-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-5328/nv-linux.h 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv-linux.h 2003-12-23 10:50:21.000000000 +0100
-@@ -21,34 +21,21 @@
- # define MODVERSIONS
- #endif
-
--#if defined (MODVERSIONS)
--#include <linux/modversions.h>
--#endif
--
- #include <linux/kernel.h>
- #include <linux/module.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12)
--# error This driver does not support 2.2.11 or earlier kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
--# define KERNEL_2_2
--# warning NVIDIA is considering dropping support for linux-2.2
--# warning kernels. While end users are free to maintain their
--# warning own patches, or stick with current drivers, our new
--# warning drivers will not work "out of the box." If you are
--# warning concerned about lack of support for 2.2 kernels,
--# warning please let us know at linux-bugs@nvidia.com; we would
--# warning like to know how many users would be seriously
--# warning impacted by this decision.
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
-+# error This driver does not support 2.2.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
--# error This driver does not support 2.3.x development kernels!
-+# error This driver does not support 2.3.x kernels!
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
--# error This driver does not support 2.5.x development kernels!
--# define KERNEL_2_5
-+# error This driver does not support 2.5.x kernels!
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
-+# define KERNEL_2_6
- #else
--# error This driver does not support 2.6.x or newer kernels!
-+# error This driver does not support development kernels!
- #endif
-
- #if defined (__ia64)
-@@ -61,12 +48,15 @@
- #define __SMP__
- #endif
-
-+#if defined (MODVERSIONS) && !defined (KERNEL_2_6)
-+#include <linux/modversions.h>
-+#endif
-+
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
- #include <linux/list.h> /* circular linked list */
- #include <linux/stddef.h> /* NULL, offsetof */
- #include <linux/wait.h> /* wait queues */
--#include <linux/tqueue.h> /* struct tq_struct */
-
- #include <linux/slab.h> /* kmalloc, kfree, etc */
- #include <linux/vmalloc.h> /* vmalloc, vfree, etc */
-@@ -74,9 +64,15 @@
- #include <linux/poll.h> /* poll_wait */
- #include <linux/delay.h> /* mdelay, udelay */
-
-+#ifdef KERNEL_2_6
-+#include <linux/sched.h> /* suser(), capable() replacement */
-+#include <linux/moduleparam.h> /* module_param() */
-+#include <linux/smp_lock.h> /* kernel_locked */
-+#include <asm/kmap_types.h> /* page table entry lookup */
-+#endif
-+
- #include <linux/pci.h> /* pci_find_class, etc */
--#include <linux/wrapper.h> /* mem_map_reserve */
--#include <linux/interrupt.h> /* mark_bh, init_bh, remove_bh */
-+#include <linux/interrupt.h> /* tasklets, interrupt helpers */
- #include <linux/timer.h>
-
- #include <asm/system.h> /* cli, sli, save_flags */
-@@ -85,14 +81,9 @@
- #include <asm/page.h> /* PAGE_OFFSET */
- #include <asm/pgtable.h> /* pte bit definitions */
-
--#if !defined (KERNEL_2_2)
- #include <linux/spinlock.h>
- #include <asm/semaphore.h>
- #include <linux/highmem.h>
--#else
--#include <asm/spinlock.h>
--#include <asm/semaphore.h>
--#endif
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-@@ -299,13 +290,7 @@
- * DMA use with the hardware. This has to be done differently for
- * different platforms and kernel versions.
- */
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18)
--#define NV_VMALLOC(ptr, size) \
-- { \
-- (void *) (ptr) = vmalloc(size); \
-- VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
-- }
--#elif defined(NVCPU_IA64)
-+#if defined(NVCPU_IA64)
- #define NV_VMALLOC(ptr, size) \
- { \
- (void *) (ptr) = vmalloc_dma(size); \
-@@ -377,78 +362,174 @@
-
- #endif /* !defined NVWATCH */
-
-+#define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
-+#define PUT_MODULE_SYMBOL(sym) (inter_module_put((char *) sym))
-
--#if !defined (KERNEL_2_2)
--# define LINUX_VMA_OFFS(vma) (((vma)->vm_pgoff) << PAGE_SHIFT)
--# define GET_MODULE_SYMBOL(mod,sym) (const void *) inter_module_get(sym)
--# define PUT_MODULE_SYMBOL(sym) inter_module_put((char *) sym)
--# define GET_MAP_NR(phys_page) virt_to_page(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&(map_nr)->count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&(map_nr)->count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&(map_nr)->count))
--# define EVENT_QUEUE(ptr) ((struct __wait_queue_head *)(ptr))
--# define VMA_PRIVATE(vma) ((vma)->vm_private_data)
--# define INIT_EVENT_QUEUE(ptr) \
-- if (ptr == NULL) { \
-- NV_KMALLOC((ptr), sizeof(struct __wait_queue_head)); \
-- if (ptr) { \
-- memset((ptr), 0, sizeof(struct __wait_queue_head)); \
-- init_waitqueue_head((struct __wait_queue_head *)(ptr)); \
-- } \
-- }
--# define FREE_EVENT_QUEUE(ptr) NV_KFREE((ptr), sizeof(struct __wait_queue_head)); (ptr) = NULL;
--#else
--# define in_irq() (local_irq_count[smp_processor_id()])
--# define LINUX_VMA_OFFS(vma) ((vma)->vm_offset)
--# define GET_MODULE_SYMBOL(mod, sym) (void*) get_module_symbol((mod), (sym))
--# define PUT_MODULE_SYMBOL(sym)
--# define GET_MAP_NR(phys_page) MAP_NR(__va(phys_page))
--# define MEM_MAP_READ_COUNT(map_nr) (atomic_read(&mem_map[map_nr].count))
--# define MEM_MAP_INC_COUNT(map_nr) (atomic_inc(&mem_map[map_nr].count))
--# define MEM_MAP_DEC_COUNT(map_nr) (atomic_dec(&mem_map[map_nr].count))
--# define EVENT_QUEUE(ptr) ((struct wait_queue **) &(ptr))
--# define VMA_PRIVATE(vma) ((void*)((vma)->vm_pte))
--# define INIT_EVENT_QUEUE(ptr) if (ptr) { ((ptr) = NULL); }
--# define FREE_EVENT_QUEUE(ptr)
-+#ifdef KERNEL_2_6
-+# define NV_IS_SUSER() capable(CAP_SYS_ADMIN)
-+# define NV_PCI_DEVICE_NAME(x) ((x)->pretty_name)
-+# define NV_CLI() local_irq_disable()
-+# define NV_SAVE_FLAGS(x) local_save_flags(x)
-+# define NV_RESTORE_FLAGS(x) local_irq_restore(x)
-+# define NV_MAY_SLEEP() (!in_interrupt() && !in_atomic())
-+# define NV_SMP_NUM_CPUS num_online_cpus()
-+# define NV_MODULE_PARAMETER(x) module_param(x, int, 0)
-+#else
-+# define NV_IS_SUSER() suser()
-+# define NV_PCI_DEVICE_NAME(x) ((x)->name)
-+# define NV_CLI() cli()
-+# define NV_SAVE_FLAGS(x) save_flags(x)
-+# define NV_RESTORE_FLAGS(x) restore_flags(x)
-+# define NV_MAY_SLEEP() (!in_interrupt())
-+# define NV_SMP_NUM_CPUS smp_num_cpus
-+# define NV_MODULE_PARAMETER(x) MODULE_PARM(x, "i")
-+#endif
-+
-+#define NV_DEVICE_NUMBER(x) minor((x)->i_rdev)
-+#define NV_VMA_OFFSET(x) (((x)->vm_pgoff) << PAGE_SHIFT)
-+#define NV_VMA_PRIVATE(x) ((x)->vm_private_data)
-+#define NV_IS_CONTROL_DEVICE(x) (minor((x)->i_rdev) == 255)
-+
-+#ifndef minor
-+/*
-+ * XXX Is this correct for all possible target kernels? We need this to
-+ * support older 2.4 and some 2.6 kernels.
-+ */
-+# define minor(x) MINOR(x)
-+#endif
-+
-+#ifndef KERNEL_2_6
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 23)
-+ typedef void irqreturn_t;
-+#endif
-+# define IRQ_NONE
-+# define IRQ_RETVAL(x)
-+# define IRQ_HANDLED
-+#else
-+#ifdef AGPGART
-+ typedef struct agp_kern_info agp_kern_info;
-+ typedef struct agp_memory agp_memory;
-+#endif
-+ typedef void* devfs_handle_t;
-+#endif
-+
-+#ifdef KERNEL_2_6
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = NULL; \
-+ devfs_mk_cdev(MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ S_IFCHR | S_IRUGO | S_IWUGO, _name); \
-+ __handle; \
-+})
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_remove("nvidia%d", i)
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_remove("nvidiactl")
-+#else
-+#define NV_DEVFS_REGISTER(_name, _minor) \
-+({ \
-+ devfs_handle_t __handle = \
-+ devfs_register(NULL, _name, DEVFS_FL_DEFAULT, \
-+ NV_MAJOR_DEVICE_NUMBER, _minor, \
-+ S_IFCHR | S_IRUGO | S_IWUGO, &nv_fops, NULL); \
-+ __handle; \
-+ })
-+
-+#define NV_DEVFS_REMOVE_DEVICE(i) devfs_unregister(nv_devfs_handles[i+1])
-+#define NV_DEVFS_REMOVE_CONTROL() devfs_unregister(nv_devfs_handles[0])
- #endif
-
-+/*
-+ * Linux 2.5 introduced the five argument version of remap_page_range, all
-+ * relevant releases to date use it. This version was backported to 2.4 by
-+ * RedHat without means to identify the change, hence this hack.
-+ */
-+#ifdef KERNEL_2_6
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#else
- #if defined(REMAP_PAGE_RANGE_5)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(vma, a, ## b)
- #elif defined(REMAP_PAGE_RANGE_4)
--#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #else
--#error "Couldn't determine number of arguments expected by remap_page_range!"
-+#warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!"
-+
-+#define NV_REMAP_PAGE_RANGE(a, b...) remap_page_range(a, ## b)
- #endif
-+#endif /* KERNEL_2_6 */
-
--#if defined(pte_offset_atomic)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#if defined(pmd_offset_map)
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
-+ { \
-+ pmd = pmd_offset_map(pgd, address); \
-+ }
-+#define NV_PMD_UNMAP(pmd) \
- { \
-- pte_t *pte__ = pte_offset_atomic(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_kunmap(pte__); \
-+ pmd_unmap(pmd); \
- }
--#elif defined(pte_offset)
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-- pte = *pte_offset(pg_mid_dir, address)
- #else
--#define NV_PTE_OFFSET(addres, pg_mid_dir, pte) \
-+#define NV_PMD_OFFSET(address, pgd, pmd) \
- { \
-- pte_t *pte__ = pte_offset_map(pg_mid_dir, address); \
-- pte = *pte__; \
-- pte_unmap(pte__); \
-+ pmd = pmd_offset(pgd, address); \
- }
-+#define NV_PMD_UNMAP(pmd)
- #endif
-
--#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
--#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-+#define NV_PMD_PRESENT(pmd) \
-+ ({ \
-+ if (pmd) { \
-+ if (pmd_none(*pmd)) { \
-+ NV_PMD_UNMAP(pmd); pmd = NULL; \
-+ } \
-+ } pmd != NULL; \
-+ })
-
--#ifndef MAXMEM /* temporary define for 2.2 kernels */
--#define MAXMEM (-PAGE_OFFSET - (64 * 1024 * 1024))
-+#if defined (pte_offset_atomic)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_atomic(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_kunmap(pte); \
-+ }
-+#elif defined (pte_offset)
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte)
-+#else
-+#define NV_PTE_OFFSET(address, pmd, pte) \
-+ { \
-+ pte = pte_offset_map(pmd, address); \
-+ NV_PMD_UNMAP(pmd); \
-+ }
-+#define NV_PTE_UNMAP(pte) \
-+ { \
-+ pte_unmap(pte); \
-+ }
- #endif
-
--#ifndef NV01_ROOT
--#define NV01_ROOT 0x00000000
--#endif
-+#define NV_PTE_PRESENT(pte) \
-+ ({ \
-+ if (pte) { \
-+ if (!pte_present(*pte)) { \
-+ NV_PTE_UNMAP(pte); pte = NULL; \
-+ } \
-+ } pte != NULL; \
-+ })
-+
-+#define NV_PTE_VALUE(pte) \
-+ ({ \
-+ unsigned long __pte_value = pte_val(*pte); \
-+ NV_PTE_UNMAP(pte); \
-+ __pte_value; \
-+ })
-+
-+#define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE)
-+#define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) )
-
- #if defined(NVCPU_IA64)
- #define NV_GFP_HW (GFP_KERNEL | __GFP_DMA)
-@@ -475,7 +556,7 @@
- static inline int NV_IRQL_IS_RAISED()
- {
- unsigned long int eflags;
-- __save_flags(eflags);
-+ NV_SAVE_FLAGS(eflags);
- return !(eflags & NV_CPU_INTERRUPT_FLAGS_BIT);
- }
-
-@@ -557,9 +638,10 @@
- struct pci_dev *dev;
- nv_alloc_t *alloc_queue;
-
-- // bottom half interrupt handler info; per device
-- /* keep track of any pending bottom-halves */
-- struct tq_struct *bh;
-+ /* keep track of any pending bottom halfes */
-+ struct tasklet_struct tasklet;
-+
-+ /* active bottom half counter */
- atomic_t bh_count;
-
- /* get a timer callback every second */
-@@ -597,7 +679,7 @@
- U032 num_events;
- U032 put, get;
- spinlock_t fp_lock;
-- void *wqueue; // wait_queue for polling
-+ wait_queue_head_t waitqueue;
- nv_event_t *event_fifo; // fifo for storing events
- } nv_file_private_t;
-
-diff -ruN NVIDIA_kernel-1.0-5328/nv-misc.h NVIDIA_kernel-1.0-5328-2.6/nv-misc.h
---- NVIDIA_kernel-1.0-5328/nv-misc.h 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv-misc.h 2003-12-31 11:45:04.000000000 +0100
-@@ -53,5 +53,11 @@
-
- typedef void *PHWINFO;
-
-+/*
-+ * XXX: Make sure that arguments to and from the core resource
-+ * manager are passed and expected on the stack. Is this a good
-+ * place for this?
-+ */
-+#define NV_API_CALL __attribute__((regparm(0)))
-
- #endif /* _NV_MISC_H_ */
-diff -ruN NVIDIA_kernel-1.0-5328/nv.c NVIDIA_kernel-1.0-5328-2.6/nv.c
---- NVIDIA_kernel-1.0-5328/nv.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv.c 2003-12-31 14:01:09.000000000 +0100
-@@ -15,6 +15,7 @@
- #include "nv_compiler.h"
- #include "os-agp.h"
-
-+MODULE_LICENSE("NVIDIA");
-
- /*
- * our global state; one per device
-@@ -33,32 +34,20 @@
- */
-
- nv_linux_state_t nv_ctl_device = { { 0 } };
--void *nv_ctl_wqueue = NULL;
-+wait_queue_head_t nv_ctl_waitqueue;
-
- // keep track of opened clients and their process id so they
- // can be free'd up on abnormal close
- nv_client_t nv_clients[NV_MAX_CLIENTS];
--struct tq_struct nv_bottom_halves[NV_MAX_CLIENTS];
-
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_nvidia;
- #endif
-
- #ifdef CONFIG_DEVFS_FS
--devfs_handle_t nv_dev_handle[NV_MAX_DEVICES];
--devfs_handle_t nv_ctl_handle;
-+devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
--/*
-- * pick apart our minor device number
-- * low 3 bits is NV device
-- * if 255, then its the control device
-- */
--
--#define NV_DEVICE_NUMBER(_minor) ((_minor) & 0x0f)
--#define NV_DEVICE_IS_CONTROL_DEVICE(_minor) \
-- (((_minor) & 0xFF) == 0xFF)
--
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -121,10 +110,6 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--/* linux module interface functions (called by linux kernel) */
--int init_module(void);
--void cleanup_module(void);
--
- /* nv_kern_ functions, interfaces used by linux kernel */
- void nv_kern_vma_open(struct vm_area_struct *vma);
- void nv_kern_vma_release(struct vm_area_struct *vma);
-@@ -135,7 +120,8 @@
- unsigned int nv_kern_poll(struct file *, poll_table *);
- int nv_kern_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
- void nv_kern_bh(void *);
--void nv_kern_isr(int, void *, struct pt_regs *);
-+void nv_kern_isr_bh(unsigned long);
-+irqreturn_t nv_kern_isr(int, void *, struct pt_regs *);
- void nv_kern_rc_timer(unsigned long);
- #ifdef CONFIG_PM
- int nv_kern_pm(struct pm_dev *dev, pm_request_t rqst, void *data);
-@@ -158,6 +144,7 @@
- /* character driver entry points */
-
- static struct file_operations nv_fops = {
-+ owner: THIS_MODULE,
- poll: nv_kern_poll,
- ioctl: nv_kern_ioctl,
- mmap: nv_kern_mmap,
-@@ -329,8 +316,8 @@
- {
- nv_printf(NV_DBG_MEMINFO, " 0x%x (0x%x): count %d flags 0x%x\n",
- page_ptr->phys_addr, page_ptr->dma_addr,
-- (GET_MAP_NR(page_ptr->phys_addr))->count,
-- (GET_MAP_NR(page_ptr->phys_addr))->flags);
-+ (virt_to_page(__va(page_ptr->phys_addr)))->count,
-+ (virt_to_page(__va(page_ptr->phys_addr)))->flags);
- num_pages--;
- page_ptr++;
- }
-@@ -401,7 +388,7 @@
- phys_addr = virt_to_phys((void *) virt_addr);
-
- /* lock the page for dma purposes */
-- mem_map_reserve(GET_MAP_NR(phys_addr));
-+ SetPageReserved(virt_to_page(__va(phys_addr)));
-
- page_ptr->phys_addr = phys_addr;
- page_ptr->virt_addr = virt_addr;
-@@ -447,7 +434,7 @@
- // but if we failed pci_map_sg, make sure to free this page
- if (page_ptr->virt_addr)
- {
-- mem_map_unreserve(GET_MAP_NR(page_ptr->phys_addr));
-+ ClearPageReserved(virt_to_page(__va(page_ptr->phys_addr)));
- NV_SET_PAGE_ATTRIB_CACHED(page_ptr);
- #if defined(NVCPU_X86_64)
- // only unmap the page if it really was mapped through
-@@ -481,7 +468,7 @@
-
- while (pages_left)
- {
-- mem_map_unreserve(GET_MAP_NR(page_ptr->phys_addr));
-+ ClearPageReserved(virt_to_page(__va(page_ptr->phys_addr)));
- page_ptr++;
- pages_left--;
- }
-@@ -616,7 +603,7 @@
- return 0;
- }
-
--static struct pci_dev* nvos_find_agp_by_class(unsigned int class)
-+struct pci_dev* nvos_find_agp_by_class(unsigned int class)
- {
- struct pci_dev *dev, *fn;
- u8 cap_ptr;
-@@ -674,11 +661,6 @@
- nv_linux_state_t *nvl;
- nv_linux_state_t *nv_max_devices;
-
--#if defined (KERNEL_2_2)
-- struct proc_dir_entry *proc_root_driver;
-- proc_root_driver = create_proc_entry("driver", flags, &proc_root);
--#endif
--
- proc_nvidia = create_proc_entry("nvidia", flags, proc_root_driver);
- proc_nvidia_cards = create_proc_entry("cards", flags, proc_nvidia);
- proc_nvidia_agp = create_proc_entry("agp", flags, proc_nvidia);
-@@ -740,9 +722,6 @@
- {
- #ifdef CONFIG_PROC_FS
- nvos_proc_remove_all(proc_nvidia);
--#if defined (KERNEL_2_2)
-- remove_proc_entry("driver", &proc_root);
--#endif
- #endif
- }
-
-@@ -831,9 +810,8 @@
- *** EXPORTS to Linux Kernel
- ***/
-
--int init_module(void)
-+static int __init nvidia_init_module(void)
- {
-- nv_linux_state_t *nvl;
- int rc, i;
-
- memset(nv_linux_devices, 0, sizeof(nv_linux_devices));
-@@ -846,7 +824,7 @@
-
- nv_printf(NV_DBG_ERRORS, "nvidia: loading %s\n", pNVRM_ID);
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
- #else
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
-@@ -858,34 +836,35 @@
- }
-
- #ifdef CONFIG_DEVFS_FS
-- memset(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
- do {
-+ /*
-+ * XXX This code isn't pretty, but neither is dealing with the
-+ * various Linux devfs implemenation(s). While Linux APIs are
-+ * known to be anything but stable and oftentimes anything but
-+ * well designed, the devfs interface has been more painful to
-+ * deal with than most other APIs.
-+ */
- char name[10];
-
-- nv_ctl_handle = devfs_register(NULL, "nvidiactl",
-- DEVFS_FL_DEFAULT, nv_major, 255,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-
- for (i = 0; i < num_nv_devices; i++) {
- sprintf(name, "nvidia%d", i);
-- nv_dev_handle[i] = devfs_register(NULL, name,
-- DEVFS_FL_DEFAULT, nv_major, i,
-- S_IFCHR | S_IRUGO | S_IWUGO,
-- &nv_fops, NULL);
-+ nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
- }
- } while(0);
- #endif
-
-- nv_printf(NV_DBG_INFO, "init_module: major number %d\n", nv_major);
-+ nv_printf(NV_DBG_INFO, "nvidia_init_module: major number %d\n", nv_major);
-
-- // init all the bottom half structures
-- for (nvl = nv_linux_devices; nvl < nv_linux_devices + NV_MAX_DEVICES; nvl++)
-- {
-- nvl->bh = &nv_bottom_halves[nvl - nv_linux_devices];
-- nvl->bh->routine = nv_kern_bh;
-- nvl->bh->data = (void *) nvl;
-- nvl->bh->sync = 0;
-+ /* instantiate tasklets */
-+ for (i = 0; i < NV_MAX_DEVICES; i++) {
-+ /*
-+ * We keep one tasklet per card to avoid latency issues with more
-+ * than one device; no two instances of a single tasklet are ever
-+ * executed concurrently.
-+ */
-+ atomic_set(&nv_linux_devices[i].tasklet.count, 1);
- }
-
- // init the nvidia control device
-@@ -893,6 +872,7 @@
- nv_state_t *nv_ctl = NV_STATE_PTR(&nv_ctl_device);
- nv_ctl->os_state = (void *) &nv_ctl_device;
- nv_lock_init_locks(nv_ctl);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
- #ifdef CONFIG_PM
-@@ -919,14 +899,14 @@
- /* create /proc/driver/nvidia */
- nvos_proc_create();
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices);
- #endif
-
- return 0;
-
- failed:
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- unregister_chrdev(nv_major, "nvidia");
-@@ -934,26 +914,27 @@
- return rc;
- }
-
--void cleanup_module(void)
-+static void __exit nvidia_exit_module(void)
- {
-- int rc, i;
-- nv_linux_state_t *nvl;
-- nv_linux_state_t *max_devices;
-+ int rc;
-+ nv_linux_state_t *nvl, *max_devices;
-
- /* remove /proc/driver/nvidia */
- nvos_proc_remove();
-
-- nv_printf(NV_DBG_INFO, "cleanup_module\n");
-+ nv_printf(NV_DBG_INFO, "nvidia_exit_module\n");
-
--#if defined(DEBUG) && !defined(KERNEL_2_2)
-+#if defined(DEBUG)
- inter_module_unregister("nv_linux_devices");
- #endif
-
- #ifdef CONFIG_PM
-- for (i = 0; i < num_nv_devices; i++)
-- {
-- pm_unregister(pm_nv_dev[i]);
-- }
-+ do {
-+ int i;
-+ for (i = 0; i < num_nv_devices; i++) {
-+ pm_unregister(pm_nv_dev[i]);
-+ }
-+ } while (0);
- #endif
-
- // Shutdown the resource manager
-@@ -972,30 +953,29 @@
- continue;
-
- nv_printf(NV_DBG_ERRORS,
-- "still have vm que at cleanup_module(): 0x%x to 0x%x\n",
-+ "still have vm que at nvidia_exit_module(): 0x%x to 0x%x\n",
- nvl->alloc_queue->vma->vm_start,
- nvl->alloc_queue->vma->vm_end);
- }
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) && !defined(KERNEL_2_6)
- rc = devfs_unregister_chrdev(nv_major, "nvidia");
- #else
- rc = unregister_chrdev(nv_major, "nvidia");
- #endif
-
- if (rc < 0) {
-- nv_printf(NV_DBG_ERRORS, "cleanup_module: unregister nv failed\n");
-+ nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
- #ifdef CONFIG_DEVFS_FS
- do {
- int i;
-- for (i = 0; nv_dev_handle[i] != 0; i++) {
-- devfs_unregister(nv_dev_handle[i]);
-- }
-- } while(0);
-- devfs_unregister(nv_ctl_handle);
-+ NV_DEVFS_REMOVE_CONTROL();
-+ for (i = 0; i < num_nv_devices; i++)
-+ NV_DEVFS_REMOVE_DEVICE(i);
-+ } while (0);
- #endif
-
- #if NV_ENABLE_MEM_TRACKING
-@@ -1007,6 +987,8 @@
- #endif
- }
-
-+module_init(nvidia_init_module);
-+module_exit(nvidia_exit_module);
-
- /* this is only called when the vmas are duplicated.
- * this appears to only happen when the process is cloned to create
-@@ -1020,11 +1002,11 @@
- nv_kern_vma_open(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_open for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
- at->usage_count++;
-
- nv_printf(NV_DBG_MEMINFO, " at 0x%x, usage count %d, page_table 0x%x\n",
-@@ -1032,8 +1014,6 @@
-
- nvos_list_page_count(at->page_table, at->num_pages);
- }
--
-- MOD_INC_USE_COUNT;
- }
-
-
-@@ -1041,11 +1021,11 @@
- nv_kern_vma_release(struct vm_area_struct *vma)
- {
- nv_printf(NV_DBG_MEMINFO, "vma_release for 0x%x - 0x%x, offset 0x%x\n",
-- vma->vm_start, vma->vm_end, LINUX_VMA_OFFS(vma));
-+ vma->vm_start, vma->vm_end, NV_VMA_OFFSET(vma));
-
-- if (VMA_PRIVATE(vma))
-+ if (NV_VMA_PRIVATE(vma))
- {
-- nv_alloc_t *at = (nv_alloc_t *) VMA_PRIVATE(vma);
-+ nv_alloc_t *at = (nv_alloc_t *) NV_VMA_PRIVATE(vma);
-
- at->usage_count--;
-
-@@ -1063,35 +1043,26 @@
- if (at->page_table)
- nvos_unlock_pages(at);
- nvos_free_alloc(at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- }
- }
--
-- MOD_DEC_USE_COUNT;
- }
-
-
--/* at this point, this code just plain won't work with 2.2 kernels.
-- * additionally, only ia64 & the 460GX need a nopage handler, and 2.2 doesn't
-- * work on ia64 anyways. It's expected that at some point other agp chipsets
-- * will work similar to the 460GX (AGP 3.0 spec), so pre-emptively make sure
-- * this works on our standard ia32 driver.
-- */
--#if !defined(KERNEL_2_2)
--
- /* AGP allocations under the 460GX are not mapped to the aperture
- * addresses by the CPU. This nopage handler will fault on CPU
- * accesses to AGP memory and map the address to the correct page.
- */
- struct page *nv_kern_vma_nopage(struct vm_area_struct *vma, unsigned long address, int write_access)
- {
-+#if defined(NVCPU_IA64) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9))
- nv_alloc_t *at, *tmp;
- nv_linux_state_t *nvl;
- nv_state_t *nv;
- struct page *page_ptr;
- int rm_status, index;
-
-- at = VMA_PRIVATE(vma);
-+ at = NV_VMA_PRIVATE(vma);
- if (at == NULL)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called without an at: "
-@@ -1130,7 +1101,7 @@
- // far again
- nv_printf(NV_DBG_ERRORS, "NVRM: nopage handler called on a freed"
- "address: vm_start 0x%x, at 0x%x\n", vma->vm_start, at);
-- VMA_PRIVATE(vma) = NULL;
-+ NV_VMA_PRIVATE(vma) = NULL;
- return NOPAGE_SIGBUS;
- }
-
-@@ -1154,15 +1125,14 @@
- at->page_table[index].virt_addr = (unsigned long) __va(page_to_pfn(page_ptr) << PAGE_SHIFT);
-
- return page_ptr;
--}
- #endif
-+ return NOPAGE_SIGBUS;
-+}
-
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
--#if !defined(KERNEL_2_2)
- nv_kern_vma_nopage,
--#endif
- };
-
- static nv_file_private_t *
-@@ -1177,7 +1147,7 @@
- memset(nvfp, 0, sizeof(nv_file_private_t));
-
- // initialize this file's event queue
-- INIT_EVENT_QUEUE(nvfp->wqueue);
-+ init_waitqueue_head(&nvfp->waitqueue);
-
- nv_init_lock(nvfp->fp_lock);
-
-@@ -1197,11 +1167,19 @@
- if (nvfp == NULL)
- return;
-
-- FREE_EVENT_QUEUE(nvfp->wqueue);
- NV_VFREE(nvfp->event_fifo, sizeof(nv_event_t) * NV_EVENT_FIFO_SIZE);
- NV_VFREE(nvfp, sizeof(nv_file_private_t));
- }
-
-+void nv_kern_isr_bh(unsigned long data)
-+{
-+ /*
-+ * XXX: This level of indirection is necessary to work around
-+ * problems with Linux kernels using a non-standard calling
-+ * convention, i.e. Arjan van de Ven's/RedHat's 2.6.0 kernels.
-+ */
-+ rm_isr_bh((VOID *) data);
-+}
-
- /*
- ** nv_kern_open
-@@ -1226,11 +1204,11 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_open(inode, file);
-
- /* what device are we talking about? */
-- devnum = NV_DEVICE_NUMBER(inode->i_rdev);
-+ devnum = NV_DEVICE_NUMBER(inode);
- if (devnum >= NV_MAX_DEVICES)
- {
- rc = -ENODEV;
-@@ -1283,12 +1261,14 @@
- goto failed;
- }
-
-+ nvl->tasklet.func = nv_kern_isr_bh;
-+ nvl->tasklet.data = (unsigned long) nv->pdev;
-+ tasklet_enable(&nvl->tasklet);
-
- nv->flags |= NV_FLAG_OPEN;
- }
-
- nv->usage_count++;
-- MOD_INC_USE_COUNT;
-
- failed:
- nv_unlock(nvl->ldata_lock);
-@@ -1319,38 +1299,32 @@
-
- /* for control device, just jump to its open routine */
- /* after setting up the private data */
-- if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
-+ if (NV_IS_CONTROL_DEVICE(inode))
- return nv_kern_ctl_close(inode, file);
-
-- nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode->i_rdev));
-+ nv_printf(NV_DBG_INFO, "nv_kern_close on device %d\n", NV_DEVICE_NUMBER(inode));
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
- {
-- int counter = 0;
--
-- /* turn off interrupts.
-- ** be careful to make sure any pending bottom half gets run
-- ** or disabled before calling rm_shutdown_adapter() since
-- ** it will free up the pdev. This is hard to see on single
-- ** cpu systems, but easy on dual cpu :-)
-- */
-+ /*
-+ * The usage count for this device has dropped to zero, it can be shut
-+ * down safely; disable its interrupts.
-+ */
- rm_disable_adapter(nv);
-
-- /* give it a moment to allow any bottom half to run */
--
--#define MAX_BH_TASKS 10
-- while (NV_ATOMIC_READ(nvl->bh_count) && (counter < MAX_BH_TASKS))
-- {
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(HZ/50);
-- counter++;
-- }
-+ /*
-+ * Disable this device's tasklet to make sure that no bottom half will
-+ * run with undefined device state.
-+ */
-+ tasklet_disable(&nvl->tasklet);
-
-- /* free the irq, which may block until any pending interrupts */
-- /* are done being processed. */
-+ /*
-+ * Free the IRQ, which may block until all pending interrupt processing
-+ * has completed.
-+ */
- free_irq(nv->interrupt_line, (void *) nv);
-
- rm_shutdown_adapter(nv);
-@@ -1381,8 +1355,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1399,10 +1371,10 @@
- nv_printf(NV_DBG_INFO, "mmap([0x%p-0x%p] off=0x%lx)\n",
- vma->vm_start,
- vma->vm_end,
-- LINUX_VMA_OFFS(vma));
-+ NV_VMA_OFFSET(vma));
-
- // be a bit paranoid for now
-- if ((NV_MASK_OFFSET(LINUX_VMA_OFFS(vma))) ||
-+ if ((NV_MASK_OFFSET(NV_VMA_OFFSET(vma))) ||
- (NV_MASK_OFFSET(vma->vm_start)) ||
- (NV_MASK_OFFSET(vma->vm_end)))
- {
-@@ -1420,7 +1392,7 @@
-
-
- /* NV reg space */
-- if (IS_REG_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ if (IS_REG_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- /* truncate to size of registers */
- if (pages > nv->regs->size / PAGE_SIZE)
-@@ -1428,7 +1400,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- phys_to_uncached(LINUX_VMA_OFFS(vma)),
-+ phys_to_uncached(NV_VMA_OFFSET(vma)),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1438,7 +1410,7 @@
- }
-
- /* NV fb space */
-- else if (IS_FB_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_FB_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
-
- /* truncate to size of framebuffer */
-@@ -1447,7 +1419,7 @@
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (NV_REMAP_PAGE_RANGE(vma->vm_start,
-- phys_to_uncached(LINUX_VMA_OFFS(vma)),
-+ phys_to_uncached(NV_VMA_OFFSET(vma)),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot))
- return -EAGAIN;
-@@ -1457,10 +1429,10 @@
- }
-
- /* AGP allocator */
-- else if (IS_AGP_OFFSET(nv, LINUX_VMA_OFFS(vma), vma->vm_end - vma->vm_start))
-+ else if (IS_AGP_OFFSET(nv, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start))
- {
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_AGP);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_AGP);
-
- if (at == NULL)
- {
-@@ -1478,7 +1450,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- if (NV_OSAGP_ENABLED(nv))
-@@ -1502,13 +1474,13 @@
- }
-
- /* Magic allocator */
-- else // if (LINUX_VMA_OFFS(vma) == NV_MMAP_ALLOCATION_OFFSET)
-+ else // if (NV_VMA_OFFSET(vma) == NV_MMAP_ALLOCATION_OFFSET)
- {
- unsigned long page = 0, pos, start;
- int i = 0;
-
- nv_lock(nvl->at_lock);
-- at = nvl_find_alloc(nvl, LINUX_VMA_OFFS(vma), NV_ALLOC_TYPE_PCI);
-+ at = nvl_find_alloc(nvl, NV_VMA_OFFSET(vma), NV_ALLOC_TYPE_PCI);
-
- if (at == NULL)
- {
-@@ -1526,7 +1498,7 @@
- }
-
- at->vma = vma;
-- VMA_PRIVATE(vma) = at;
-+ NV_VMA_PRIVATE(vma) = at;
- at->usage_count++;
-
- nv_printf(NV_DBG_INFO, "remapping %d system pages for at 0x%x\n", pages, at);
-@@ -1548,9 +1520,6 @@
-
- vma->vm_file = file;
-
-- /* just increment usage count, rather than calling vma_open */
-- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1577,7 +1546,7 @@
- {
- nv_printf(NV_DBG_EVENTINFO, "calling poll_wait\n");
- // add us to the list
-- poll_wait(file, EVENT_QUEUE(nvfp->wqueue), wait);
-+ poll_wait(file, &nvfp->waitqueue, wait);
- }
-
- nv_lock_irq(nvfp->fp_lock, eflags);
-@@ -1645,12 +1614,13 @@
-
- switch (_IOC_NR(cmd))
- {
-+#if !defined(KERNEL_2_6)
- /* debug tool; zap the module use count so we can unload driver */
- /* even if it is confused */
- case NV_ESC_MODULE_RESET:
- atomic_set(&__this_module.uc.usecount, 1);
- break;
--
-+#endif
- /* pass out info about the card */
- case NV_ESC_CARD_INFO:
- {
-@@ -1777,7 +1747,7 @@
- * driver receives an interrupt
- * if someone waiting, then hand it off.
- */
--void nv_kern_isr(
-+irqreturn_t nv_kern_isr(
- int irq,
- void *arg,
- struct pt_regs *regs
-@@ -1791,9 +1761,10 @@
- if (need_to_run_bottom_half)
- {
- NV_ATOMIC_INC(nvl->bh_count);
-- queue_task(nvl->bh, &tq_immediate);
-- mark_bh(IMMEDIATE_BH);
-+ tasklet_schedule(&nvl->tasklet);
- }
-+
-+ return IRQ_HANDLED;
- }
-
- void nv_kern_bh(
-@@ -1911,11 +1882,9 @@
-
- if (nv->usage_count == 0)
- {
-- INIT_EVENT_QUEUE(nv_ctl_wqueue);
-+ init_waitqueue_head(&nv_ctl_waitqueue);
- }
-
-- MOD_INC_USE_COUNT;
--
- nv->flags |= NV_FLAG_OPEN + NV_FLAG_CONTROL;
-
- /* turn off the hotkey occurred bit */
-@@ -1943,10 +1912,8 @@
-
- nv_lock(nvl->ldata_lock);
- if (--nv->usage_count == 0)
-- {
-- FREE_EVENT_QUEUE(nv_ctl_wqueue);
- nv->flags = 0;
-- }
-+
- nv_unlock(nvl->ldata_lock);
-
- rm_free_unused_clients(nv, current->pid, (void *) file);
-@@ -1957,8 +1924,6 @@
- FILE_PRIVATE(file) = NULL;
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
-@@ -1982,7 +1947,7 @@
- nv = NV_STATE_PTR(nvl);
-
- if ( !(file->f_flags & O_NONBLOCK) )
-- poll_wait(file, EVENT_QUEUE(nv_ctl_wqueue), wait);
-+ poll_wait(file, &nv_ctl_waitqueue, wait);
-
- nv_lock(nvl->ldata_lock);
-
-@@ -2013,7 +1978,7 @@
- nv_ctl_device.nv_state.flags |= NV_FLAG_HOTKEY_OCCURRED;
- nv_unlock(nv_ctl_device.ldata_lock);
-
-- wake_up_interruptible(EVENT_QUEUE(nv_ctl_wqueue));
-+ wake_up_interruptible(&nv_ctl_waitqueue);
- }
-
- int nv_kern_read_cardinfo(char *page, char **start, off_t off,
-@@ -2092,7 +2057,7 @@
- len += sprintf(page+len, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", dev->name);
-+ len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
- len += sprintf(page+len, "PCI device %04x:%04x\n",
- dev->vendor, dev->device);
-@@ -2304,27 +2269,30 @@
- int kern
- )
- {
-- pgd_t *pg_dir;
-- pmd_t *pg_mid_dir;
-- pte_t pte;
-+ pgd_t *pgd;
-+ pmd_t *pmd;
-+ pte_t *pte;
- unsigned long retval;
-
-- if (kern) pg_dir = pgd_offset_k(address);
-- else pg_dir = pgd_offset(current->mm, address);
-+ if (kern)
-+ pgd = pgd_offset_k(address);
-+ else
-+ pgd = pgd_offset(current->mm, address);
-
-- if (pgd_none(*pg_dir))
-+ if (!pgd || pgd_none(*pgd))
- goto failed;
-
-- pg_mid_dir = pmd_offset(pg_dir, address);
-- if (pmd_none(*pg_mid_dir))
-+ NV_PMD_OFFSET(address, pgd, pmd);
-+
-+ if (!NV_PMD_PRESENT(pmd))
- goto failed;
-
-- NV_PTE_OFFSET(address, pg_mid_dir, pte);
-+ NV_PTE_OFFSET(address, pmd, pte);
-
-- if (!pte_present(pte))
-+ if (!NV_PTE_PRESENT(pte))
- goto failed;
-
-- retval = ((pte_val(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-+ retval = ((NV_PTE_VALUE(pte) & KERN_PAGE_MASK) | NV_MASK_OFFSET(address));
-
- #if defined(NVCPU_X86_64) && defined(_PAGE_NX)
- // mask out the non-executable page bit for the true physical address
-@@ -2759,7 +2727,7 @@
-
- if (nvfp->num_events == NV_EVENT_FIFO_SIZE)
- {
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- nv_unlock_irq(nvfp->fp_lock, eflags);
- return;
- }
-@@ -2776,7 +2744,7 @@
- if (nvfp->put >= NV_EVENT_FIFO_SIZE)
- nvfp->put = 0;
-
-- wake_up_interruptible(EVENT_QUEUE(nvfp->wqueue));
-+ wake_up_interruptible(&nvfp->waitqueue);
- nv_unlock_irq(nvfp->fp_lock, eflags);
- }
-
-@@ -2866,12 +2834,8 @@
- if ( (NV_AGP_DISABLED(nv)) && (config & NVOS_AGP_CONFIG_NVAGP) )
- {
- /* make sure the user does not have agpgart loaded */
--#if !defined (KERNEL_2_2)
- if (inter_module_get("drm_agp")) {
- inter_module_put("drm_agp");
--#else
-- if (GET_MODULE_SYMBOL(0, __MODULE_STRING(agp_enable))) {
--#endif
- nv_printf(NV_DBG_WARNINGS, "NVRM: not using NVAGP, AGPGART is loaded!!\n");
- } else {
- #if defined(CONFIG_X86_64) && defined(CONFIG_GART_IOMMU)
-diff -ruN NVIDIA_kernel-1.0-5328/nv.h NVIDIA_kernel-1.0-5328-2.6/nv.h
---- NVIDIA_kernel-1.0-5328/nv.h 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/nv.h 2003-12-31 11:38:22.000000000 +0100
-@@ -327,31 +327,31 @@
- * ---------------------------------------------------------------------------
- */
-
--VOID* nv_find_nv_mapping (nv_state_t *, unsigned long);
--VOID* nv_find_agp_kernel_mapping (nv_state_t *, unsigned long);
--ULONG nv_get_kern_phys_address (ULONG);
--ULONG nv_get_user_phys_address (ULONG);
--
--VOID nv_lock_rm (nv_state_t *);
--VOID nv_unlock_rm (nv_state_t *);
--VOID nv_lock_heap (nv_state_t *);
--VOID nv_unlock_heap (nv_state_t *);
--
--VOID nv_set_hotkey_occurred_flag (VOID);
--S032 nv_int10h_call (nv_state_t *, U032 *, U032 *, U032 *, U032 *, VOID *);
--
--S032 nv_alloc_pages (nv_state_t *, VOID **, U032, U032, U032, U032, U032, U032, VOID **);
--S032 nv_free_pages (nv_state_t *, VOID **, U032, U032, VOID *);
--
--S032 nv_agp_init (nv_state_t *, VOID **, VOID **, VOID *, U032);
--S032 nv_agp_teardown (nv_state_t *);
--S032 nv_agp_translate_address (nv_state_t *, VOID *, U032, U032 *);
-+VOID* NV_API_CALL nv_find_nv_mapping (nv_state_t *, unsigned long);
-+VOID* NV_API_CALL nv_find_agp_kernel_mapping (nv_state_t *, unsigned long);
-+ULONG NV_API_CALL nv_get_kern_phys_address (ULONG);
-+ULONG NV_API_CALL nv_get_user_phys_address (ULONG);
-+
-+VOID NV_API_CALL nv_lock_rm (nv_state_t *);
-+VOID NV_API_CALL nv_unlock_rm (nv_state_t *);
-+VOID NV_API_CALL nv_lock_heap (nv_state_t *);
-+VOID NV_API_CALL nv_unlock_heap (nv_state_t *);
-+
-+VOID NV_API_CALL nv_set_hotkey_occurred_flag (VOID);
-+S032 NV_API_CALL nv_int10h_call (nv_state_t *, U032 *, U032 *, U032 *, U032 *, VOID *);
-+
-+S032 NV_API_CALL nv_alloc_pages (nv_state_t *, VOID **, U032, U032, U032, U032, U032, U032, VOID **);
-+S032 NV_API_CALL nv_free_pages (nv_state_t *, VOID **, U032, U032, VOID *);
-+
-+S032 NV_API_CALL nv_agp_init (nv_state_t *, VOID **, VOID **, VOID *, U032);
-+S032 NV_API_CALL nv_agp_teardown (nv_state_t *);
-+S032 NV_API_CALL nv_agp_translate_address (nv_state_t *, VOID *, U032, U032 *);
-
--S032 nv_start_rc_timer (nv_state_t *);
--S032 nv_stop_rc_timer (nv_state_t *);
-+S032 NV_API_CALL nv_start_rc_timer (nv_state_t *);
-+S032 NV_API_CALL nv_stop_rc_timer (nv_state_t *);
-
--VOID nv_post_event (nv_state_t *, nv_event_t *, U032, U032);
--S032 nv_get_event (nv_state_t *, VOID *, nv_event_t *, U032 *);
-+VOID NV_API_CALL nv_post_event (nv_state_t *, nv_event_t *, U032, U032);
-+S032 NV_API_CALL nv_get_event (nv_state_t *, VOID *, nv_event_t *, U032 *);
-
-
- /*
-@@ -362,41 +362,41 @@
- * ---------------------------------------------------------------------------
- */
-
--BOOL rm_init_rm (VOID);
--BOOL rm_shutdown_rm (VOID);
--BOOL rm_init_adapter (nv_state_t *);
--BOOL rm_disable_adapter (nv_state_t *);
--BOOL rm_shutdown_adapter (nv_state_t *);
--BOOL rm_ioctl (nv_state_t *, VOID *, U032, VOID *);
--BOOL rm_isr (U032, U032 *);
--VOID rm_isr_bh (VOID *);
--RM_STATUS rm_power_management (nv_state_t *, U032, U032);
--U032 rm_get_vbios_version (nv_state_t *, U032 *, U032 *, U032 *, U032 *, U032 *);
--VOID rm_free_unused_clients (nv_state_t *, U032, VOID *);
--
--VOID rm_update_agp_config (nv_state_t *);
--RM_STATUS rm_init_agp (nv_state_t *);
--RM_STATUS rm_teardown_agp (nv_state_t *);
--
--RM_STATUS rm_alloc_agp_pages (nv_state_t *, VOID **, U032, U032, VOID **, U032 *);
--RM_STATUS rm_map_agp_pages (nv_state_t *, VOID **, U032, VOID *);
--RM_STATUS rm_free_agp_pages (nv_state_t *, VOID **, VOID *);
--
--RM_STATUS rm_alloc_agp_bitmap (nv_state_t *, U032, U032 *);
--RM_STATUS rm_free_agp_bitmap (nv_state_t *, U032, U032);
--RM_STATUS rm_set_agp_bitmap (nv_state_t *, VOID *);
--RM_STATUS rm_clear_agp_bitmap (nv_state_t *, VOID **);
--
--RM_STATUS rm_load_registry (nv_parm_t *);
--RM_STATUS rm_read_registry_dword (nv_state_t *, U008 *, U008 *, U032 *);
--RM_STATUS rm_write_registry_dword (nv_state_t *, U008 *, U008 *, U032);
--RM_STATUS rm_read_registry_binary (nv_state_t *, U008 *, U008 *, U008 *, U032 *);
--RM_STATUS rm_write_registry_binary (nv_state_t *, U008 *, U008 *, U008 *, U032);
-+BOOL NV_API_CALL rm_init_rm (VOID);
-+BOOL NV_API_CALL rm_shutdown_rm (VOID);
-+BOOL NV_API_CALL rm_init_adapter (nv_state_t *);
-+BOOL NV_API_CALL rm_disable_adapter (nv_state_t *);
-+BOOL NV_API_CALL rm_shutdown_adapter (nv_state_t *);
-+BOOL NV_API_CALL rm_ioctl (nv_state_t *, VOID *, U032, VOID *);
-+BOOL NV_API_CALL rm_isr (U032, U032 *);
-+VOID NV_API_CALL rm_isr_bh (VOID *);
-+RM_STATUS NV_API_CALL rm_power_management (nv_state_t *, U032, U032);
-+U032 NV_API_CALL rm_get_vbios_version (nv_state_t *, U032 *, U032 *, U032 *, U032 *, U032 *);
-+VOID NV_API_CALL rm_free_unused_clients (nv_state_t *, U032, VOID *);
-+
-+VOID NV_API_CALL rm_update_agp_config (nv_state_t *);
-+RM_STATUS NV_API_CALL rm_init_agp (nv_state_t *);
-+RM_STATUS NV_API_CALL rm_teardown_agp (nv_state_t *);
-+
-+RM_STATUS NV_API_CALL rm_alloc_agp_pages (nv_state_t *, VOID **, U032, U032, VOID **, U032 *);
-+RM_STATUS NV_API_CALL rm_map_agp_pages (nv_state_t *, VOID **, U032, VOID *);
-+RM_STATUS NV_API_CALL rm_free_agp_pages (nv_state_t *, VOID **, VOID *);
-+
-+RM_STATUS NV_API_CALL rm_alloc_agp_bitmap (nv_state_t *, U032, U032 *);
-+RM_STATUS NV_API_CALL rm_free_agp_bitmap (nv_state_t *, U032, U032);
-+RM_STATUS NV_API_CALL rm_set_agp_bitmap (nv_state_t *, VOID *);
-+RM_STATUS NV_API_CALL rm_clear_agp_bitmap (nv_state_t *, VOID **);
-+
-+RM_STATUS NV_API_CALL rm_load_registry (nv_parm_t *);
-+RM_STATUS NV_API_CALL rm_read_registry_dword (nv_state_t *, U008 *, U008 *, U032 *);
-+RM_STATUS NV_API_CALL rm_write_registry_dword (nv_state_t *, U008 *, U008 *, U032);
-+RM_STATUS NV_API_CALL rm_read_registry_binary (nv_state_t *, U008 *, U008 *, U008 *, U032 *);
-+RM_STATUS NV_API_CALL rm_write_registry_binary (nv_state_t *, U008 *, U008 *, U008 *, U032);
-
--RM_STATUS rm_run_rc_callback (nv_state_t *);
--RM_STATUS rm_get_device_name (U032, U032, U008*);
-+RM_STATUS NV_API_CALL rm_run_rc_callback (nv_state_t *);
-+RM_STATUS NV_API_CALL rm_get_device_name (U032, U032, U008*);
-
--NvUI64 nv_rdtsc (VOID);
-+NvUI64 NV_API_CALL nv_rdtsc (VOID);
-
- #endif /* NVWATCH */
-
-diff -ruN NVIDIA_kernel-1.0-5328/os-agp.c NVIDIA_kernel-1.0-5328-2.6/os-agp.c
---- NVIDIA_kernel-1.0-5328/os-agp.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-agp.c 2003-12-18 13:22:54.000000000 +0100
-@@ -45,44 +45,9 @@
- int ready;
- } agp_gart;
-
--typedef struct {
-- int (*backend_acquire)(void);
-- void (*backend_release)(void);
-- void (*copy_info)(agp_kern_info *);
-- agp_memory * (*allocate_memory)(size_t, unsigned int);
-- void (*free_memory)(agp_memory *);
-- int (*bind_memory)(agp_memory *, off_t);
-- int (*unbind_memory)(agp_memory *);
-- void (*enable)(unsigned int);
--} agp_operations_struct;
--
--agp_operations_struct agp_ops;
- agp_kern_info agpinfo;
- agp_gart gart;
--#if !defined (KERNEL_2_2)
- const drm_agp_t *drm_agp_p;
--#endif
--
--#if defined (KERNEL_2_2)
-- #define GET_AGPGART_SYMBOL(sym, sym_string) \
-- sym = (void*) GET_MODULE_SYMBOL(0, sym_string); \
-- if (sym == NULL) \
-- { \
-- nv_printf(NV_DBG_ERRORS, \
-- "NVRM: AGPGART: unable to retrieve symbol %s\n", \
-- sym_string); \
-- return 1; \
-- }
--
-- #define AGP_BACKEND_ACQUIRE_SYM __MODULE_STRING(agp_backend_acquire)
-- #define AGP_BACKEND_RELEASE_SYM __MODULE_STRING(agp_backend_release)
-- #define AGP_COPY_INFO_SYM __MODULE_STRING(agp_copy_info)
-- #define AGP_ALLOCATE_MEMORY_SYM __MODULE_STRING(agp_allocate_memory)
-- #define AGP_FREE_MEMORY_SYM __MODULE_STRING(agp_free_memory)
-- #define AGP_BIND_MEMORY_SYM __MODULE_STRING(agp_bind_memory)
-- #define AGP_UNBIND_MEMORY_SYM __MODULE_STRING(agp_unbind_memory)
-- #define AGP_ENABLE_SYM __MODULE_STRING(agp_enable)
--#endif
-
- #if defined(CONFIG_MTRR)
- #define MTRR_DEL(gart) if ((gart).mtrr > 0) mtrr_del((gart).mtrr, 0, 0);
-@@ -110,48 +75,18 @@
-
- memset( (void *) &gart, 0, sizeof(agp_gart));
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX The inter_module_* mechanism has been deprecated and replaced with
-+ * a different mechanism in Linux 2.5; it will go away eventually.
-+ * Also, the Linux 2.5 AGP GART driver is modularized, agpgart.o does not
-+ * include backend drivers.
-+ */
- if (!(drm_agp_p = inter_module_get_request("drm_agp", "agpgart")))
- {
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to retrieve symbol table\n");
- return 1;
- }
--
-- agp_ops.backend_acquire = drm_agp_p->acquire;
-- agp_ops.backend_release = drm_agp_p->release;
-- agp_ops.allocate_memory = drm_agp_p->allocate_memory;
-- agp_ops.free_memory = drm_agp_p->free_memory;
-- agp_ops.bind_memory = drm_agp_p->bind_memory;
-- agp_ops.unbind_memory = drm_agp_p->unbind_memory;
-- agp_ops.enable = drm_agp_p->enable;
--
-- // looks like some newer kernels (for example mandrake 9.0's 2.4.19-16mdk)
-- // have updated copy_info to return an integer value, and of course didn't
-- // bother bumping the agpgart revision up. The return value is pretty
-- // harmless (backend_acquire would have already failed and caused us to
-- // bail), so cast the function pointer to avoid compiler warnings.
-- // we may need to revisit this in the future.
-- agp_ops.copy_info = (void (*)(agp_kern_info *)) drm_agp_p->copy_info;
--
--#else
--#if defined(CONFIG_KMOD)
-- if ( request_module("agpgart") )
-- {
-- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: not loading agpgart.o\n");
-- return 1;
-- }
--#endif
--
-- GET_AGPGART_SYMBOL(agp_ops.backend_acquire, AGP_BACKEND_ACQUIRE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.backend_release, AGP_BACKEND_RELEASE_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.copy_info, AGP_COPY_INFO_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.allocate_memory, AGP_ALLOCATE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.free_memory, AGP_FREE_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.bind_memory, AGP_BIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.unbind_memory, AGP_UNBIND_MEMORY_SYM);
-- GET_AGPGART_SYMBOL(agp_ops.enable, AGP_ENABLE_SYM);
--#endif
-
- /* NOTE: from here down, return an error code of '-1'
- * that indicates that agpgart is loaded, but we failed to use it
-@@ -159,7 +94,7 @@
- * the memory controller.
- */
-
-- if ( (*(agp_ops.backend_acquire))() )
-+ if (drm_agp_p->acquire())
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: backend in use\n");
- return -1;
-@@ -177,7 +112,21 @@
- agp_fw = 1;
- agp_fw &= 0x00000001;
-
-- (*(agp_ops.copy_info))(&agpinfo);
-+#if defined(KERNEL_2_4)
-+ /*
-+ * The original Linux 2.4 AGP GART driver interface declared copy_info to
-+ * return nothing. This changed in Linux 2.5, which reports unsupported
-+ * chipsets via this function. If this Linux 2.4 kernels behaves the same
-+ * way, we have no way to know.
-+ */
-+ drm_agp_p->copy_info(&agpinfo);
-+#else
-+ if (drm_agp_p->copy_info(&agpinfo)) {
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
-+ return -1;
-+ }
-+#endif
-
- #ifdef CONFIG_MTRR
- if ((gart.mtrr = mtrr_add(agpinfo.aper_base,
-@@ -191,7 +140,8 @@
- */
- nv_printf(NV_DBG_ERRORS,
- "NVRM: AGPGART: unable to set MTRR write-combining\n");
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
- #endif
-@@ -207,7 +157,8 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap aperture\n");
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -218,7 +169,8 @@
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to allocate bitmap\n");
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-@@ -229,39 +181,19 @@
- os_free_mem(bitmap);
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- MTRR_DEL(gart);
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-+ inter_module_put("drm_agp");
- return -1;
- }
-
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture: %ldM @ 0x%08lx\n",
-- (unsigned long)agpinfo.aper_size,
-- (unsigned long)agpinfo.aper_base);
--
-- nv_printf(NV_DBG_SETUP,
-- "NVRM: AGPGART: aperture mapped from 0x%08lx to 0x%08lx\n",
-- agpinfo.aper_base,
-- (unsigned long) gart.aperture);
--
- if (!agp_sba) agpinfo.mode &= ~0x00000200;
- if (!agp_fw) agpinfo.mode &= ~0x00000010;
-
- if (!(agp_rate & 0x00000004)) agpinfo.mode &= ~0x00000004;
- if (!(agp_rate & 0x00000002)) agpinfo.mode &= ~0x00000002;
-
-- (*(agp_ops.enable))(agpinfo.mode);
-+ drm_agp_p->enable(agpinfo.mode);
-
-- if (agpinfo.mode & 0x00000200)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports sba\n");
-- if (agpinfo.mode & 0x00000010)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: backend supports fw\n");
-- if (agpinfo.mode & 0x00000004)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 4x\n");
-- else if (agpinfo.mode & 0x00000002)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 2x\n");
-- else if (agpinfo.mode & 0x00000001)
-- nv_printf(NV_DBG_SETUP, "NVRM: AGPGART: mode 1x\n");
--
- *ap_phys_base = (void*) agpinfo.aper_base;
- *ap_mapped_base = (void*) gart.aperture;
- *apsize = (agpinfo.aper_size * 0x100000) - 1;
-@@ -295,11 +227,13 @@
- NV_IOUNMAP(gart.aperture, RM_PAGE_SIZE);
- }
-
-- (*(agp_ops.backend_release))();
-+ drm_agp_p->release();
-
--#if !defined (KERNEL_2_2)
-+ /*
-+ * XXX Same as above; the inter_module_* mechanism will go away at some
-+ * point, it has been deprecated in Linux 2.5.
-+ */
- inter_module_put("drm_agp");
--#endif
-
- if (rm_clear_agp_bitmap(nv, &bitmap))
- {
-@@ -346,7 +280,7 @@
- return RM_ERROR;
- }
-
-- ptr = (*agp_ops.allocate_memory)(PageCount, AGP_NORMAL_MEMORY);
-+ ptr = drm_agp_p->allocate_memory(PageCount, AGP_NORMAL_MEMORY);
- if (ptr == NULL)
- {
- *pAddress = (void*) 0;
-@@ -354,7 +288,7 @@
- return RM_ERR_NO_FREE_MEM;
- }
-
-- err = (*(agp_ops.bind_memory))(ptr, *Offset);
-+ err = drm_agp_p->bind_memory(ptr, *Offset);
- if (err)
- {
- // this happens a lot when the aperture itself fills up..
-@@ -371,7 +305,7 @@
- if (status != RM_OK)
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: memory allocation failed\n");
-- (*(agp_ops.unbind_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
- goto fail;
- }
-
-@@ -386,7 +320,7 @@
- return RM_OK;
-
- fail:
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->free_memory(ptr);
- *pAddress = (void*) 0;
-
- return RM_ERROR;
-@@ -426,7 +360,7 @@
- {
- nv_printf(NV_DBG_ERRORS, "NVRM: AGPGART: unable to remap %lu pages\n",
- (unsigned long)agp_data->num_pages);
-- (*(agp_ops.unbind_memory))(agp_data->ptr);
-+ drm_agp_p->unbind_memory(agp_data->ptr);
- goto fail;
- }
-
-@@ -445,8 +379,6 @@
- }
- #endif
-
--#if !defined(KERNEL_2_2)
--
- RM_STATUS
- KernMapAGPNopage(
- VOID *address,
-@@ -501,9 +433,6 @@
- #endif
- }
-
--#endif /* !defined(KERNEL_2_2) */
--
--
- RM_STATUS KernFreeAGPPages(
- nv_state_t *nv,
- VOID **pAddress,
-@@ -529,8 +458,8 @@
- {
- size_t pages = ptr->page_count;
-
-- (*(agp_ops.unbind_memory))(ptr);
-- (*(agp_ops.free_memory))(ptr);
-+ drm_agp_p->unbind_memory(ptr);
-+ drm_agp_p->free_memory(ptr);
-
- nv_printf(NV_DBG_INFO, "NVRM: AGPGART: freed %ld pages\n",
- (unsigned long)pages);
-diff -ruN NVIDIA_kernel-1.0-5328/os-interface.c NVIDIA_kernel-1.0-5328-2.6/os-interface.c
---- NVIDIA_kernel-1.0-5328/os-interface.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-interface.c 2003-12-23 10:46:50.000000000 +0100
-@@ -56,7 +56,7 @@
- PHWINFO pDev
- )
- {
-- return suser();
-+ return NV_IS_SUSER();
- }
-
- U032 os_get_page_size(VOID)
-@@ -211,6 +211,11 @@
- {
- NV_MEM_TRACKING_PAD_SIZE(size);
-
-+ /*
-+ * XXX This needs to be !NV_MAY_SLEEP() rather than in_interrupt(); that
-+ * requires quite a bit of locking to be rearranged, however, which is why
-+ * I'll leave it alone for now.
-+ */
- if (in_interrupt()) {
- if (size <= KMALLOC_LIMIT) {
- /*
-@@ -296,7 +301,7 @@
- *address = (void *) va;
-
- for (i = 0; i < count; i++) {
-- mem_map_reserve(GET_MAP_NR(__pa((va))));
-+ SetPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -320,7 +325,7 @@
- unsigned long va = (unsigned long) address;
-
- for (i = 0; i < count; i++) {
-- mem_map_unreserve(GET_MAP_NR(__pa((va))));
-+ ClearPageReserved(virt_to_page(va));
- va += PAGE_SIZE;
- }
-
-@@ -426,7 +431,7 @@
- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY)
- return RM_ERROR;
-
-- if (in_interrupt())
-+ if (!NV_MAY_SLEEP())
- {
- mdelay(MilliSeconds);
- return RM_OK;
-@@ -524,8 +529,8 @@
- // The current debug display level (default to maximum debug level)
- int cur_debuglevel = 0xaaaaaaaa;
-
--MODULE_PARM(silence_nvidia_output, "1i");
- static int silence_nvidia_output = 0;
-+NV_MODULE_PARAMETER(silence_nvidia_output);
-
-
- //
-@@ -618,12 +623,28 @@
- return value;
- }
-
-+struct pci_dev* nvos_find_agp_by_class(unsigned int);
-+
- U032 os_pci_read_dword(
- VOID *handle,
- U008 offset
- )
- {
- U032 value;
-+ if (!handle) {
-+ /*
-+ * XXX: This hack works around a bug in the NVIDIA AGP
-+ * GART driver, which calls us with an invalid handle
-+ * on newer Via chipsets. What we need here instead is
-+ * a handle for the AGP graphics card.
-+ */
-+ handle = nvos_find_agp_by_class(PCI_CLASS_DISPLAY_VGA);
-+
-+ if (!handle) {
-+ printk("NVRM: os_pci_read_dword(): bad handle!\n");
-+ return 0;
-+ }
-+ }
- pci_read_config_dword( (struct pci_dev *) handle, offset, (u32 *) &value);
- return value;
- }
-@@ -708,14 +729,14 @@
-
- ULONG os_cli(ULONG flags)
- {
-- save_flags(flags);
-- cli();
-+ NV_SAVE_FLAGS(flags);
-+ NV_CLI();
- return flags;
- }
-
- ULONG os_sti(ULONG flags)
- {
-- restore_flags(flags);
-+ NV_RESTORE_FLAGS(flags);
- return flags;
- }
-
-@@ -848,16 +869,6 @@
- NV_IOREMAP_NOCACHE(vaddr, start, size_bytes);
- }
-
--#if defined (KERNEL_2_2)
-- if ((vaddr == NULL)) // && (mode == NV_MEMORY_DEFAULT))
-- {
-- unsigned long map_nr = MAP_NR(__va(start));
-- if (map_nr < max_mapnr) {
-- vaddr = __va(start);
-- }
-- }
--#endif
--
- return vaddr;
- }
-
-@@ -866,16 +877,7 @@
- U032 size_bytes
- )
- {
--#if defined (KERNEL_2_2)
-- if (MAP_NR(addr) < max_mapnr) {
-- // if we didn't want the memory cached, this isn't necessary
-- // but we shouldn't be in a timing critical piece of code.
-- asm volatile("wbinvd":::"memory");
-- } else
--#endif
-- {
-- NV_IOUNMAP(addr, size_bytes);
-- }
-+ NV_IOUNMAP(addr, size_bytes);
- }
-
- VOID* os_map_user_space(
-@@ -979,7 +981,7 @@
-
- U032 os_get_cpu_count()
- {
-- return smp_num_cpus;
-+ return NV_SMP_NUM_CPUS;
- }
-
- #if defined(DEBUG) && !defined(NVCPU_IA64)
-diff -ruN NVIDIA_kernel-1.0-5328/os-interface.h NVIDIA_kernel-1.0-5328-2.6/os-interface.h
---- NVIDIA_kernel-1.0-5328/os-interface.h 2003-12-17 23:55:00.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-interface.h 2003-12-31 13:42:00.000000000 +0100
-@@ -40,66 +40,66 @@
- * ---------------------------------------------------------------------------
- */
-
--U032 os_get_page_size (VOID);
--ULONG os_get_page_mask (VOID);
--RM_STATUS os_alloc_mem (VOID **, U032);
--VOID os_free_mem (VOID *);
--RM_STATUS os_alloc_contig_pages (VOID **, U032);
--VOID os_free_contig_pages (VOID *, U032);
--RM_STATUS os_get_current_time (U032 *, U032 *);
--RM_STATUS os_delay (U032);
--RM_STATUS os_delay_us (U032);
--U032 os_get_cpu_frequency (VOID);
--RM_STATUS os_get_current_process (U032 *);
--RM_STATUS os_kill_process (U032, U032);
--U008* os_string_copy (U008 *, const U008 *);
--RM_STATUS os_strncpy_from_user (U008 *, const U008 *, U032);
--S032 os_string_compare (const U008 *, const U008 *);
--U032 os_string_length (const U008 *);
--U008* os_mem_copy (U008 *, const U008 *, U032);
--RM_STATUS os_memcpy_from_user (VOID *, const VOID *, U032);
--RM_STATUS os_memcpy_to_user (void *, const VOID *, U032);
--VOID* os_mem_set (VOID *, U008, U032);
--S032 os_mem_cmp (const U008 *, const U008 *, U032);
--VOID* os_pci_init_handle (U008, U008, U008, U016 *, U016 *);
--U008 os_pci_read_byte (VOID *, U008);
--U016 os_pci_read_word (VOID *, U008);
--U032 os_pci_read_dword (VOID *, U008);
--VOID os_pci_write_byte (VOID *, U008, U008);
--VOID os_pci_write_word (VOID *, U008, U016);
--VOID os_pci_write_dword (VOID *, U008, U032);
--VOID* os_map_kernel_space (U032, U032, U032);
--VOID os_unmap_kernel_space (VOID *, U032);
--VOID* os_map_user_space (VOID *, VOID **, U032, U032);
--VOID os_unmap_user_space (VOID *, VOID *);
--VOID* os_map_io_space (U032, U032, VOID **, U032, U032);
--VOID os_unmap_io_space (VOID *, U032, VOID *, U032);
--RM_STATUS os_flush_cpu_cache (VOID);
--RM_STATUS os_set_mem_range (U032, U032, U032);
--RM_STATUS os_unset_mem_range (U032, U032);
--BOOL os_pci_device_present (U016, U016);
--U008 os_io_read_byte (PHWINFO, U032);
--U016 os_io_read_word (PHWINFO, U032);
--U032 os_io_read_dword (PHWINFO, U032);
--VOID os_io_write_byte (PHWINFO, U032, U008);
--VOID os_io_write_word (PHWINFO, U032, U016);
--VOID os_io_write_dword (PHWINFO, U032, U032);
--ULONG os_cli (ULONG);
--ULONG os_sti (ULONG);
--VOID* os_copy_in_ioctl_param (VOID *, VOID *, U032);
--VOID* os_copy_out_ioctl_param (VOID *, VOID *, U032);
--VOID* os_registry_lookup (PHWINFO, U008 *, U008 *);
--RM_STATUS os_swap_barrier (U032, VOID (*)(VOID *), VOID *);
--BOOL os_is_administrator (PHWINFO);
--VOID os_dbg_init (VOID);
--VOID os_dbg_breakpoint (VOID);
--VOID os_dbg_set_level (U032);
--U032 os_get_cpu_count (VOID);
--RM_STATUS os_raise_smp_barrier (VOID);
--RM_STATUS os_clear_smp_barrier (VOID);
-+U032 NV_API_CALL os_get_page_size (VOID);
-+ULONG NV_API_CALL os_get_page_mask (VOID);
-+RM_STATUS NV_API_CALL os_alloc_mem (VOID **, U032);
-+VOID NV_API_CALL os_free_mem (VOID *);
-+RM_STATUS NV_API_CALL os_alloc_contig_pages (VOID **, U032);
-+VOID NV_API_CALL os_free_contig_pages (VOID *, U032);
-+RM_STATUS NV_API_CALL os_get_current_time (U032 *, U032 *);
-+RM_STATUS NV_API_CALL os_delay (U032);
-+RM_STATUS NV_API_CALL os_delay_us (U032);
-+U032 NV_API_CALL os_get_cpu_frequency (VOID);
-+RM_STATUS NV_API_CALL os_get_current_process (U032 *);
-+RM_STATUS NV_API_CALL os_kill_process (U032, U032);
-+U008* NV_API_CALL os_string_copy (U008 *, const U008 *);
-+RM_STATUS NV_API_CALL os_strncpy_from_user (U008 *, const U008 *, U032);
-+S032 NV_API_CALL os_string_compare (const U008 *, const U008 *);
-+U032 NV_API_CALL os_string_length (const U008 *);
-+U008* NV_API_CALL os_mem_copy (U008 *, const U008 *, U032);
-+RM_STATUS NV_API_CALL os_memcpy_from_user (VOID *, const VOID *, U032);
-+RM_STATUS NV_API_CALL os_memcpy_to_user (void *, const VOID *, U032);
-+VOID* NV_API_CALL os_mem_set (VOID *, U008, U032);
-+S032 NV_API_CALL os_mem_cmp (const U008 *, const U008 *, U032);
-+VOID* NV_API_CALL os_pci_init_handle (U008, U008, U008, U016 *, U016 *);
-+U008 NV_API_CALL os_pci_read_byte (VOID *, U008);
-+U016 NV_API_CALL os_pci_read_word (VOID *, U008);
-+U032 NV_API_CALL os_pci_read_dword (VOID *, U008);
-+VOID NV_API_CALL os_pci_write_byte (VOID *, U008, U008);
-+VOID NV_API_CALL os_pci_write_word (VOID *, U008, U016);
-+VOID NV_API_CALL os_pci_write_dword (VOID *, U008, U032);
-+VOID* NV_API_CALL os_map_kernel_space (U032, U032, U032);
-+VOID NV_API_CALL os_unmap_kernel_space (VOID *, U032);
-+VOID* NV_API_CALL os_map_user_space (VOID *, VOID **, U032, U032);
-+VOID NV_API_CALL os_unmap_user_space (VOID *, VOID *);
-+VOID* NV_API_CALL os_map_io_space (U032, U032, VOID **, U032, U032);
-+VOID NV_API_CALL os_unmap_io_space (VOID *, U032, VOID *, U032);
-+RM_STATUS NV_API_CALL os_flush_cpu_cache (VOID);
-+RM_STATUS NV_API_CALL os_set_mem_range (U032, U032, U032);
-+RM_STATUS NV_API_CALL os_unset_mem_range (U032, U032);
-+BOOL NV_API_CALL os_pci_device_present (U016, U016);
-+U008 NV_API_CALL os_io_read_byte (PHWINFO, U032);
-+U016 NV_API_CALL os_io_read_word (PHWINFO, U032);
-+U032 NV_API_CALL os_io_read_dword (PHWINFO, U032);
-+VOID NV_API_CALL os_io_write_byte (PHWINFO, U032, U008);
-+VOID NV_API_CALL os_io_write_word (PHWINFO, U032, U016);
-+VOID NV_API_CALL os_io_write_dword (PHWINFO, U032, U032);
-+ULONG NV_API_CALL os_cli (ULONG);
-+ULONG NV_API_CALL os_sti (ULONG);
-+VOID* NV_API_CALL os_copy_in_ioctl_param (VOID *, VOID *, U032);
-+VOID* NV_API_CALL os_copy_out_ioctl_param (VOID *, VOID *, U032);
-+VOID* NV_API_CALL os_registry_lookup (PHWINFO, U008 *, U008 *);
-+RM_STATUS NV_API_CALL os_swap_barrier (U032, VOID (*)(VOID *), VOID *);
-+BOOL NV_API_CALL os_is_administrator (PHWINFO);
-+VOID NV_API_CALL os_dbg_init (VOID);
-+VOID NV_API_CALL os_dbg_breakpoint (VOID);
-+VOID NV_API_CALL os_dbg_set_level (U032);
-+U032 NV_API_CALL os_get_cpu_count (VOID);
-+RM_STATUS NV_API_CALL os_raise_smp_barrier (VOID);
-+RM_STATUS NV_API_CALL os_clear_smp_barrier (VOID);
- #if defined(DEBUG) && !defined(NVCPU_IA64)
--VOID os_canary_arm (VOID);
--VOID os_canary_check (VOID);
-+VOID NV_API_CALL os_canary_arm (VOID);
-+VOID NV_API_CALL os_canary_check (VOID);
- #define CANARY_ARM() os_canary_arm()
- #define CANARY_CHECK() os_canary_check()
- #else
-@@ -107,8 +107,8 @@
- #define CANARY_CHECK()
- #endif // DEBUG & !NVCPU_IA64
-
--RM_STATUS osRaiseSmpBarrier (VOID);
--RM_STATUS osClearSmpBarrier (VOID);
-+RM_STATUS NV_API_CALL osRaiseSmpBarrier (VOID);
-+RM_STATUS NV_API_CALL osClearSmpBarrier (VOID);
-
- /*
- * ---------------------------------------------------------------------------
-@@ -142,8 +142,8 @@
- #define NV_DBG_ERRORS 0x4
-
-
--void out_string(const char *str);
--int nv_printf(int debuglevel, const char *printf_format, ...);
-+void NV_API_CALL out_string(const char *str);
-+int NV_API_CALL nv_printf(int debuglevel, const char *printf_format, ...);
-
-
- #define NV_MEMORY_TYPE_SYSTEM 0
-diff -ruN NVIDIA_kernel-1.0-5328/os-registry.c NVIDIA_kernel-1.0-5328-2.6/os-registry.c
---- NVIDIA_kernel-1.0-5328/os-registry.c 2003-12-17 23:54:59.000000000 +0100
-+++ NVIDIA_kernel-1.0-5328-2.6/os-registry.c 2003-12-18 13:22:54.000000000 +0100
-@@ -48,24 +48,6 @@
- * This could be changed to work on a per-device basis.
- */
-
--/*
-- * The 2nd argument to MODULE_PARM is used to verify parameters passed
-- * to the module at load time. It should be a string in the following
-- * format:
-- *
-- * [min[-max]]{b,h,i,l,s}
-- *
-- * The MIN and MAX specifiers delimit the length of the array. If MAX
-- * is omitted, it defaults to MIN; if both are omitted, the default is
-- * 1. The final character is a type specifier.
-- *
-- * b byte
-- * h short
-- * i int
-- * l long
-- * s string
-- */
--
- /*
- * Option: VideoMemoryTypeOverride
- *
-@@ -92,7 +74,7 @@
- */
-
- static int NVreg_VideoMemoryTypeOverride = 1;
--MODULE_PARM(NVreg_VideoMemoryTypeOverride, "i");
-+NV_MODULE_PARAMETER(NVreg_VideoMemoryTypeOverride);
-
- /*
- * Option: EnableVia4x
-@@ -111,7 +93,7 @@
- */
-
- static int NVreg_EnableVia4x = 0;
--MODULE_PARM(NVreg_EnableVia4x, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableVia4x);
-
- /*
- * Option: EnableALiAGP
-@@ -134,7 +116,7 @@
- */
-
- static int NVreg_EnableALiAGP = 0;
--MODULE_PARM(NVreg_EnableALiAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableALiAGP);
-
- /*
- * Option: ReqAGPRate
-@@ -164,7 +146,7 @@
- */
-
- static int NVreg_ReqAGPRate = 7;
--MODULE_PARM(NVreg_ReqAGPRate, "i");
-+NV_MODULE_PARAMETER(NVreg_ReqAGPRate);
-
- /*
- * Option: UpdateKernelAGP
-@@ -193,7 +175,7 @@
- */
-
- static int NVreg_UpdateKernelAGP = 1;
--MODULE_PARM(NVreg_UpdateKernelAGP, "i");
-+NV_MODULE_PARAMETER(NVreg_UpdateKernelAGP);
-
- /*
- * Option: EnableAGPSBA
-@@ -226,7 +208,7 @@
- static int NVreg_EnableAGPSBA = 0;
- #endif
-
--MODULE_PARM(NVreg_EnableAGPSBA, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPSBA);
-
- /*
- * Option: EnableAGPFW
-@@ -250,7 +232,7 @@
- */
-
- static int NVreg_EnableAGPFW = 0;
--MODULE_PARM(NVreg_EnableAGPFW, "i");
-+NV_MODULE_PARAMETER(NVreg_EnableAGPFW);
-
- /*
- * Option: SoftEDIDs
-@@ -269,7 +251,7 @@
- */
-
- static int NVreg_SoftEDIDs = 1;
--MODULE_PARM(NVreg_SoftEDIDs, "i");
-+NV_MODULE_PARAMETER(NVreg_SoftEDIDs);
-
- /*
- * Option: Mobile
-@@ -293,14 +275,14 @@
- */
-
- static int NVreg_Mobile = ~0;
--MODULE_PARM(NVreg_Mobile, "i");
-+NV_MODULE_PARAMETER(NVreg_Mobile);
-
-
- static int NVreg_ResmanDebugLevel = ~0;
--MODULE_PARM(NVreg_ResmanDebugLevel, "i");
-+NV_MODULE_PARAMETER(NVreg_ResmanDebugLevel);
-
- static int NVreg_FlatPanelMode = 0;
--MODULE_PARM(NVreg_FlatPanelMode, "i");
-+NV_MODULE_PARAMETER(NVreg_FlatPanelMode);
-
- /*
- * You can enable any of the registry options disabled by default by
diff --git a/media-video/nvidia-kernel/files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff b/media-video/nvidia-kernel/files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff
deleted file mode 100644
index e9d1f8435ec7..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff
+++ /dev/null
@@ -1,151 +0,0 @@
-diff -urN NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/Makefile NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/Makefile
---- NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/Makefile 2004-01-09 16:07:06.000000000 -0500
-+++ NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/Makefile 2004-01-22 10:18:12.177456272 -0500
-@@ -1,14 +1,14 @@
- # This Makefile is automatically generated; do not edit
--# Generated on 'builder26' on Fri Jan 9 12:42:34 PST 2004
-+# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-
- LINUX_MODULE=nv-linux.o
--DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -mcmodel=kernel -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5332 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNV_64_BITS -DNVCPU_X86_64
-+DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4499 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86_64 -DNV_64_BITS -DREMAP_PAGE_RANGE_5 -DKBUILD_MODNAME=nvidia
- INCLUDES=-I.
-
- OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
- HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-
--CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-multichar -Werror -O -mno-red-zone -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
-+CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wno-cast-qual -Wno-multichar -O2 -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -mcmodel=kernel -nostdinc -iwithprefix include -fno-strict-aliasing -fno-common -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -Wno-sign-compare -fno-asynchronous-unwind-tables -fomit-frame-pointer -Wdeclaration-after-statement -Wno-trigraphs -Wno-strict-prototypes
-
- RESMAN_KERNEL_MODULE=nv-kernel.o
-
-@@ -50,8 +50,10 @@
- # allow specification of alternate include file tree on command line and extra defines
- ifdef SYSINCLUDE
- INCLUDES += -I$(SYSINCLUDE)
-+INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
- else
- INCLUDES += -I$(KERNINC)
-+INCLUDES += -I$(KERNINC)/asm/mach-default
- endif
-
- ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
-@@ -76,24 +78,62 @@
- install: package-install
-
- suser-sanity-check:
-- @if ! sh conftest.sh suser_sanity_check nvidia; then exit 1; fi
-+ @if ! sh conftest.sh suser_sanity_check; then \
-+ echo; \
-+ echo "You have insufficient privileges for this operation. Please "; \
-+ echo "run \"make install\" as root! "; \
-+ echo; \
-+ exit 1; \
-+ fi
-
- rmmod-sanity-check:
-- @if ! sh conftest.sh rmmod_sanity_check nvidia; then exit 1; fi
--
--gcc-sanity-check:
-- @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
--
--module: gcc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-- ld -r -o nvidia.o $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
--
--package-install: module suser-sanity-check rmmod-sanity-check
-+ @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
-+ echo; \
-+ echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
-+ echo "Please be certain that you have exited X before attempting "; \
-+ echo "to install this version. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+cc-sanity-check:
-+ @if ! sh conftest.sh cc_sanity_check $(CC); then \
-+ echo; \
-+ echo "You appear to be building the NVIDIA kernel module with a "; \
-+ echo "compiler different from the one that was used to build the "; \
-+ echo "running kernel. This may be perfectly fine, but there are "; \
-+ echo "cases where this can lead to unexpected behaviour and "; \
-+ echo "system crashes. "; \
-+ echo; \
-+ echo "If you know what you are doing and want to override this "; \
-+ echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; \
-+ echo; \
-+ echo "In any other case, set the CC environment variable to the "; \
-+ echo "name of the compiler that was used to build the kernel. "; \
-+ echo; \
-+ exit 1; \
-+ fi
-+
-+package-install: suser-sanity-check nvidia.o rmmod-sanity-check
-+ if [ -d $(BROKENDIR) ]; then \
-+ rm -f $(BROKENDIR)/NVdriver; \
-+ rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
-+ fi && \
- mkdir -p $(INSTALLDIR) && \
-- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
-- PATH="$(PATH):/bin:/sbin" depmod -a && \
-- PATH="$(PATH):/bin:/sbin" modprobe nvidia && \
-+ rm -f $(INSTALLDIR)/NVdriver && \
-+ $(INSTALL) -m 0664 -o root -g root nvidia.ko $(INSTALLDIR)/nvidia.ko$(O) && \
-+ /sbin/depmod -a && \
-+ /sbin/modprobe nvidia && \
- sh makedevices.sh && \
-- echo "nvidia.o installed successfully."; \
-+ echo "nvidia.ko installed successfully."; \
-+
-+nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-+ if [ -x /usr/src/linux/scripts/modpost ]; then \
-+ /usr/src/linux/scripts/modpost $@; \
-+ $(CC) -c $(CFLAGS) nvidia.mod.c; \
-+ ld -m elf_x86_64 -r -o nvidia.ko $@ nvidia.mod.o; \
-+ fi
-
- $(VERSION_HDR):
- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-@@ -113,7 +153,7 @@
-
-
- clean:
-- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-+ $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o nvidia.ko nvidia.mod.c nvidia.mod.o
-
-
- -include $(OBJECTS:%.o=%.d)
-diff -urN NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/nv-linux.h NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/nv-linux.h
---- NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/nv-linux.h 2004-01-09 16:07:05.000000000 -0500
-+++ NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/nv-linux.h 2004-01-22 10:09:29.821866392 -0500
-@@ -24,7 +24,7 @@
- # define KERNEL_2_4
- #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
- # error This driver does not support 2.5 kernels!
--#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0) && defined(NVCPU_X86)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0) && ( defined(NVCPU_X86) || defined(NVCPU_X86_64) )
- # define KERNEL_2_6
- #else
- # error This driver does not support development kernels!
-diff -urN NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/nv.c NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/nv.c
---- NVIDIA-Linux-x86_64-1.0-5332-pkg0/usr/src/nv/nv.c 2004-01-09 16:07:05.000000000 -0500
-+++ NVIDIA-Linux-x86_64-1.0-5332-pkg0-gentoo/usr/src/nv/nv.c 2004-01-22 10:11:51.897267648 -0500
-@@ -427,7 +427,8 @@
- {
- struct scatterlist *sg_ptr = &at->sg_list[i];
-
-- sg_ptr->address = (char *) page_ptr->virt_addr;
-+ sg_ptr->page = virt_to_page( page_ptr->virt_addr );
-+ sg_ptr->offset = offset_in_page( page_ptr->virt_addr );
- sg_ptr->length = PAGE_SIZE;
-
- if (pci_map_sg(at->dev, sg_ptr, 1, PCI_DMA_BIDIRECTIONAL) == 0)
-@@ -435,7 +436,7 @@
- goto failed;
- }
-
-- page_ptr->dma_addr = sg_ptr->dma_address;
-+ page_ptr->dma_addr = sg_dma_address(sg_ptr);
- }
- #endif
diff --git a/media-video/nvidia-kernel/files/1.0.5336/Makefile b/media-video/nvidia-kernel/files/1.0.5336/Makefile
deleted file mode 100644
index 8d37a89022f0..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/Makefile
+++ /dev/null
@@ -1,149 +0,0 @@
-# This Makefile is automatically generated; do not edit
-# Generated on 'builder3.nvidia.com' on Thu Jun 19 04:05:35 PDT 2003
-
-LINUX_MODULE=nv-linux.o
-DEFINES=-D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DKBUILD_MODNAME="nvidia" -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=5328 -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNVCPU_X86
-INCLUDES=-I.
-
-OBJECTS=nv.o os-agp.o os-interface.o os-registry.o
-HEADERS=os-agp.h os-interface.h nv-linux.h nv-misc.h nv-memdbg.h nv.h rmretval.h nvtypes.h $(VERSION_HDR)
-
-CFLAGS=-Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wcast-qual -Wno-multichar -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual
-
-RESMAN_KERNEL_MODULE=nv-kernel.o
-
-ifeq ($(KERNDIR),)
-KERNDIR=/lib/modules/$(shell uname -r)
-endif
-
-# check for newer paths. if found, use them, otherwise use old paths
-# these wouldn't work with the gnu make included with rh6.2
-# KERNINC=$(if -d $(KERNDIR)/build, $(KERNDIR)/build/include, /usr/src/linux/include)
-# INSTALLDIR=$(if -d $(KERNDIR)/kernel, $(KERNDIR)/kernel/drivers/video, $(KERNDIR)/video)
-
-# this is slightly more brain-dead, but works..
-ifeq ($(shell if test -d $(KERNDIR)/build; then echo yes; fi),yes)
-KERNINC=$(KERNDIR)/build/include
-else
- ifeq ($(shell if test -d $(KERNDIR)/include; then echo yes; fi),yes)
- KERNINC=$(KERNDIR)/include
- else
- KERNINC=/usr/src/linux/include
- endif
-endif
-
-ifeq ($(shell if test -d $(KERNDIR)/kernel; then echo yes; fi),yes)
-INSTALLDIR=$(KERNDIR)/kernel/drivers/video
-else
-INSTALLDIR=$(KERNDIR)/video
-endif
-
-ifeq ($(shell echo $(NVDEBUG)),1)
- ifeq ($(shell test -z $(RMDEBUG) && echo yes),yes)
- RMDEBUG=1
- endif
-endif
-
-ifeq ($(shell echo $(RMDEBUG)),1)
-CFLAGS += -DDEBUG -g -fno-common
-endif
-
-# this is just plain wrong, get rid of it
-BROKENDIR=$(KERNDIR)/kernel/video
-
-INSTALL=$(shell which install)
-
-# allow specification of alternate include file tree on command line and extra defines
-ifdef SYSINCLUDE
-INCLUDES += -I$(SYSINCLUDE)
-INCLUDES += -I$(SYSINCLUDE)/asm/mach-default
-else
-INCLUDES += -I$(KERNINC)
-INCLUDES += -I$(KERNINC)/asm/mach-default
-endif
-
-ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 5)
- DEFINES += -DREMAP_PAGE_RANGE_5
-endif
-
-ifeq ($(shell sh conftest.sh remap_page_range $(INCLUDES)), 4)
- DEFINES += -DREMAP_PAGE_RANGE_4
-endif
-
-ifeq ($(shell sh conftest.sh class_simple $(INCLUDES)), yes)
- DEFINES += -DHAVE_CLASS_SIMPLE
-endif
-
-DEFINES+=$(EXTRA_DEFINES)
-
-# allow build parameters to be passed in through the environment
-ifdef BUILD_PARAMS
- DEFINES+=-D$(BUILD_PARAMS)
-endif
-
-VERSION_HDR=nv_compiler.h
-
-all: install
-
-install: package-install
-
-suser-sanity-check:
- @if ! sh conftest.sh suser_sanity_check; then \
- echo; \
- echo "You have insufficient privileges for this operation. Please "; \
- echo "run \"make install\" as root! "; \
- echo; \
- exit 1; \
- fi
-
-rmmod-sanity-check:
- @if ! sh conftest.sh rmmod_sanity_check nvidia; then \
- echo; \
- echo "Unable to unload the currently loaded NVIDIA kernel module! "; \
- echo "Please be certain that you have exited X before attempting "; \
- echo "to install this version. "; \
- echo; \
- exit 1; \
- fi
-
-cc-sanity-check:
- @if ! sh conftest.sh cc_sanity_check full_output $(CC); then exit 1; fi
-
-package-install: suser-sanity-check nvidia.o rmmod-sanity-check
- if [ -d $(BROKENDIR) ]; then \
- rm -f $(BROKENDIR)/NVdriver; \
- rmdir --ignore-fail-on-non-empty $(BROKENDIR); \
- fi && \
- mkdir -p $(INSTALLDIR) && \
- rm -f $(INSTALLDIR)/NVdriver && \
- $(INSTALL) -m 0664 -o root -g root nvidia.o $(INSTALLDIR)/nvidia.o$(O) && \
- /sbin/depmod -a && \
- /sbin/modprobe nvidia && \
- sh makedevices.sh && \
- echo "nvidia.o installed successfully."; \
-
-nvidia.o: cc-sanity-check $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
- ld -d -r -o $@ $(LINUX_MODULE) $(RESMAN_KERNEL_MODULE)
-
-$(VERSION_HDR):
- echo \#define NV_COMPILER \"`$(CC) -v 2>&1 | tail -n 1`\" > $@
-
-$(LINUX_MODULE): $(OBJECTS)
- ld -r -o $@ $(OBJECTS)
-
-%.o: %.c $(HEADERS)
- $(CC) -c $(CFLAGS) $<
-
-# debug tool to preprocess the file and leave .i to make it easier to untangle #defines
-%.i: %.c
- $(CC) $(CFLAGS) -E $< > $@
-
-%.s: %.c
- $(CC) $(CFLAGS) -S $< > $@
-
-
-clean:
- $(RM) $(OBJECTS) $(LINUX_MODULE) $(VERSION_HDR) *.d NVdriver nvidia.o
-
-
--include $(OBJECTS:%.o=%.d)
diff --git a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch b/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch
deleted file mode 100644
index 502833d0f66f..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch
+++ /dev/null
@@ -1,829 +0,0 @@
-diff -ruN NVIDIA_kernel-1.0-5336/Makefile.kbuild NVIDIA_kernel-1.0-5336-2.6/Makefile.kbuild
---- NVIDIA_kernel-1.0-5336/Makefile.kbuild 2004-01-15 04:29:12.000000000 +0100
-+++ NVIDIA_kernel-1.0-5336-2.6/Makefile.kbuild 2004-05-12 19:17:49.000000000 +0200
-@@ -73,7 +73,7 @@
- #
-
- EXTRA_CFLAGS += -I$(src)
--EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-multichar -Werror -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
-+EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wno-pointer-arith -Wno-multichar -Werror -O -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
-
- #
- # We rely on these two definitions below; if they aren't set, we set them to
-diff -ruN NVIDIA_kernel-1.0-5336/nv-linux.h NVIDIA_kernel-1.0-5336-2.6/nv-linux.h
---- NVIDIA_kernel-1.0-5336/nv-linux.h 2004-01-15 04:29:11.000000000 +0100
-+++ NVIDIA_kernel-1.0-5336-2.6/nv-linux.h 2004-05-12 19:17:36.000000000 +0200
-@@ -136,16 +136,19 @@
-
- #if NV_ENABLE_MEM_TRACKING
- #define NV_MEM_TRACKING_PAD_SIZE(size) ((size) += sizeof(void *))
--#define NV_MEM_TRACKING_HIDE_SIZE(ptr, size) \
-- if ((ptr) && *(ptr)) { \
-- *(int *) *(ptr) = (size); \
-- (char *) *(ptr) += sizeof(void *); \
-- }
--#define NV_MEM_TRACKING_RETRIEVE_SIZE(ptr, size) \
-- { \
-- (char *) (ptr) -= sizeof(void *); \
-- size = *(int *) (ptr); \
-- }
-+#define NV_MEM_TRACKING_HIDE_SIZE(ptr, size) \
-+ if ((ptr) && *(ptr)) { \
-+ U008 *__ptr; \
-+ *(unsigned long *) *(ptr) = (size); \
-+ __ptr = *(ptr); __ptr += sizeof(void *); \
-+ *(ptr) = (void *) __ptr; \
-+ }
-+#define NV_MEM_TRACKING_RETRIEVE_SIZE(ptr, size) \
-+ { \
-+ U008 *__ptr = (ptr); __ptr -= sizeof(void *); \
-+ (ptr) = (void *) __ptr; \
-+ size = *(unsigned long *) (ptr); \
-+ }
- #else
- #define NV_MEM_TRACKING_PAD_SIZE(size)
- #define NV_MEM_TRACKING_HIDE_SIZE(ptr, size)
-@@ -293,13 +296,13 @@
- #if defined(NVCPU_IA64)
- #define NV_VMALLOC(ptr, size) \
- { \
-- (void *) (ptr) = vmalloc_dma(size); \
-+ (ptr) = vmalloc_dma(size); \
- VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
- }
- #else
- #define NV_VMALLOC(ptr, size) \
- { \
-- (void *) (ptr) = vmalloc_32(size); \
-+ (ptr) = vmalloc_32(size); \
- VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
- }
- #endif
-@@ -312,13 +315,13 @@
-
- #define NV_IOREMAP(ptr, physaddr, size) \
- { \
-- (void *) (ptr) = ioremap(physaddr, size); \
-+ (ptr) = ioremap(physaddr, size); \
- VM_ALLOC_RECORD(ptr, size, "vm_ioremap"); \
- }
-
- #define NV_IOREMAP_NOCACHE(ptr, physaddr, size) \
- { \
-- (void *) (ptr) = ioremap_nocache(physaddr, size); \
-+ (ptr) = ioremap_nocache(physaddr, size); \
- VM_ALLOC_RECORD(ptr, size, "vm_ioremap_nocache"); \
- }
-
-@@ -333,13 +336,13 @@
- */
- #define NV_KMALLOC(ptr, size) \
- { \
-- (void *) (ptr) = kmalloc(size, GFP_KERNEL); \
-+ (ptr) = kmalloc(size, GFP_KERNEL); \
- KM_ALLOC_RECORD(ptr, size, "km_alloc"); \
- }
-
- #define NV_KMALLOC_ATOMIC(ptr, size) \
- { \
-- (void *) (ptr) = kmalloc(size, GFP_ATOMIC); \
-+ (ptr) = kmalloc(size, GFP_ATOMIC); \
- KM_ALLOC_RECORD(ptr, size, "km_alloc_atomic"); \
- }
-
-@@ -352,7 +355,7 @@
-
- #define NV_GET_FREE_PAGES(ptr, order) \
- { \
-- (void *) (ptr) = __get_free_pages(NV_GFP_HW, order); \
-+ (ptr) = __get_free_pages(NV_GFP_HW, order); \
- }
-
- #define NV_FREE_PAGES(ptr, order) \
-@@ -689,8 +692,7 @@
- #define NV_GET_NVFP(filep) ((nv_file_private_t *) FILE_PRIVATE(filep))
-
- /* for the card devices */
--#define NVL_FROM_FILEP(filep) \
-- ((nv_linux_state_t*) (NV_GET_NVFP(filep))->nvptr)
-+#define NVL_FROM_FILEP(filep) (NV_GET_NVFP(filep)->nvptr)
-
- #define NV_GET_NVL_FROM_NV_STATE(nv) \
- ((nv_linux_state_t *) nv->os_state)
-diff -ruN NVIDIA_kernel-1.0-5336/nv.c NVIDIA_kernel-1.0-5336-2.6/nv.c
---- NVIDIA_kernel-1.0-5336/nv.c 2004-01-15 04:29:11.000000000 +0100
-+++ NVIDIA_kernel-1.0-5336-2.6/nv.c 2004-05-12 19:18:29.000000000 +0200
-@@ -1182,7 +1182,7 @@
- struct vm_operations_struct nv_vm_ops = {
- nv_kern_vma_open,
- nv_kern_vma_release, /* "close" */
-- nv_kern_vma_nopage,
-+/* nv_kern_vma_nopage, */
- };
-
- static nv_file_private_t *
-@@ -2006,7 +2006,7 @@
- * waiting on the wait queue
- */
-
--void nv_set_hotkey_occurred_flag(void)
-+void NV_API_CALL nv_set_hotkey_occurred_flag(void)
- {
- nv_printf(NV_DBG_EVENTINFO,"setting the hotkey occurred flag!\n");
-
-@@ -2190,7 +2190,7 @@
- *** EXPORTS to rest of resman
- ***/
-
--void *nv_find_nv_mapping(
-+void* NV_API_CALL nv_find_nv_mapping(
- nv_state_t *nv,
- unsigned long address
- )
-@@ -2261,8 +2261,7 @@
- * the TYPE_AGP flag to differeniate it from a PCI allocation.
- * failure is fine, we may just be checking if a given page is agp
- */
--void *
--nv_find_agp_kernel_mapping(
-+void* NV_API_CALL nv_find_agp_kernel_mapping(
- nv_state_t *nv,
- unsigned long address
- )
-@@ -2338,8 +2337,7 @@
- return (unsigned long) NULL;
- }
-
--unsigned long
--nv_get_kern_phys_address(
-+unsigned long NV_API_CALL nv_get_kern_phys_address(
- unsigned long address
- )
- {
-@@ -2368,8 +2366,7 @@
- return _get_phys_address(address, 1);
- }
-
--unsigned long
--nv_get_user_phys_address(
-+unsigned long NV_API_CALL nv_get_user_phys_address(
- unsigned long address
- )
- {
-@@ -2391,8 +2388,7 @@
-
-
- /* allocate memory for DMA push buffers */
--int
--nv_alloc_pages(
-+int NV_API_CALL nv_alloc_pages(
- nv_state_t *nv,
- void **pAddress,
- unsigned int page_count,
-@@ -2583,8 +2579,7 @@
- return -1; \
- }
-
--int
--nv_free_pages(
-+int NV_API_CALL nv_free_pages(
- nv_state_t *nv,
- void **pAddress,
- unsigned int page_count,
-@@ -2686,7 +2681,7 @@
- nvl->rm_lock_count = 0;
- }
-
--void nv_lock_rm(
-+void NV_API_CALL nv_lock_rm(
- nv_state_t *nv
- )
- {
-@@ -2706,7 +2701,7 @@
- nvl->rm_lock_count = 1;
- }
-
--void nv_unlock_rm(
-+void NV_API_CALL nv_unlock_rm(
- nv_state_t *nv
- )
- {
-@@ -2720,7 +2715,7 @@
- spin_unlock_irq(&nvl->rm_lock);
- }
-
--void nv_lock_heap(
-+void NV_API_CALL nv_lock_heap(
- nv_state_t *nv
- )
- {
-@@ -2730,7 +2725,7 @@
- nv_lock(nvl->heap_lock);
- }
-
--void nv_unlock_heap(
-+void NV_API_CALL nv_unlock_heap(
- nv_state_t *nv
- )
- {
-@@ -2743,7 +2738,7 @@
- /*
- ** post the event
- */
--void nv_post_event(
-+void NV_API_CALL nv_post_event(
- nv_state_t *nv,
- nv_event_t *event,
- U032 handle,
-@@ -2781,7 +2776,7 @@
- nv_unlock_irq(nvfp->fp_lock, eflags);
- }
-
--int nv_get_event(
-+int NV_API_CALL nv_get_event(
- nv_state_t *nv,
- VOID *void_file,
- nv_event_t *event,
-@@ -2822,8 +2817,7 @@
- }
-
-
--int
--nv_agp_init(
-+int NV_API_CALL nv_agp_init(
- nv_state_t *nv,
- VOID **phys_start,
- VOID **linear_start,
-@@ -2888,8 +2882,7 @@
- return status;
- }
-
--int
--nv_agp_teardown(
-+int NV_API_CALL nv_agp_teardown(
- nv_state_t *nv
- )
- {
-@@ -2926,8 +2919,7 @@
- * (if the linear mapping was real, this is the page that would have been
- * addressed by the virtual address. I know, confusing).
- */
--int
--nv_agp_translate_address(
-+int NV_API_CALL nv_agp_translate_address(
- nv_state_t *nv,
- void *base,
- U032 index,
-@@ -2956,8 +2948,7 @@
- }
-
-
--int
--nv_int10h_call(
-+int NV_API_CALL nv_int10h_call(
- nv_state_t *nv,
- U032 *eax,
- U032 *ebx,
-@@ -2970,8 +2961,7 @@
- }
-
- /* set a timer to go off every second */
--int
--nv_start_rc_timer(
-+int NV_API_CALL nv_start_rc_timer(
- nv_state_t *nv
- )
- {
-@@ -2991,8 +2981,7 @@
- return 0;
- }
-
--int
--nv_stop_rc_timer(
-+int NV_API_CALL nv_stop_rc_timer(
- nv_state_t *nv
- )
- {
-diff -ruN NVIDIA_kernel-1.0-5336/os-interface.c NVIDIA_kernel-1.0-5336-2.6/os-interface.c
---- NVIDIA_kernel-1.0-5336/os-interface.c 2004-01-15 04:29:11.000000000 +0100
-+++ NVIDIA_kernel-1.0-5336-2.6/os-interface.c 2004-05-12 19:09:35.000000000 +0200
-@@ -35,7 +35,7 @@
- }
- #endif
-
--RM_STATUS os_raise_smp_barrier(VOID)
-+RM_STATUS NV_API_CALL os_raise_smp_barrier(VOID)
- {
- os_block_on_smp_barrier = 1;
- #ifdef CONFIG_SMP
-@@ -45,26 +45,26 @@
- return RM_OK;
- }
-
--RM_STATUS os_clear_smp_barrier(VOID)
-+RM_STATUS NV_API_CALL os_clear_smp_barrier(VOID)
- {
- os_block_on_smp_barrier = 0;
- return RM_OK;
- }
-
- // return TRUE if the caller is the super-user
--BOOL os_is_administrator(
-+BOOL NV_API_CALL os_is_administrator(
- PHWINFO pDev
- )
- {
- return NV_IS_SUSER();
- }
-
--U032 os_get_page_size(VOID)
-+U032 NV_API_CALL os_get_page_size(VOID)
- {
- return PAGE_SIZE;
- }
-
--ULONG os_get_page_mask(VOID)
-+ULONG NV_API_CALL os_get_page_mask(VOID)
- {
- return PAGE_MASK;
- }
-@@ -78,7 +78,7 @@
- // just replace the code within osStringCopy with a call to the C library
- // function strcpy.
- //
--U008* os_string_copy(
-+U008* NV_API_CALL os_string_copy(
- U008 *dst,
- const U008 *src
- )
-@@ -86,7 +86,7 @@
- return strcpy(dst, src);
- }
-
--RM_STATUS os_strncpy_from_user(
-+RM_STATUS NV_API_CALL os_strncpy_from_user(
- U008 *dst,
- const U008 *src,
- U032 n
-@@ -99,7 +99,7 @@
- #endif
- }
-
--S032 os_string_compare(
-+S032 NV_API_CALL os_string_compare(
- const U008 *s1,
- const U008 *s2
- )
-@@ -107,14 +107,14 @@
- return strcmp(s1, s2);
- }
-
--U032 os_string_length(
-+U032 NV_API_CALL os_string_length(
- const U008* str
- )
- {
- return strlen(str);
- }
-
--U008* os_mem_copy(
-+U008* NV_API_CALL os_mem_copy(
- U008 *dst,
- const U008 *src,
- U032 length
-@@ -123,7 +123,7 @@
- return memcpy(dst, src, length);
- }
-
--RM_STATUS os_memcpy_from_user(
-+RM_STATUS NV_API_CALL os_memcpy_from_user(
- VOID *dst,
- const VOID* src,
- U032 length
-@@ -132,7 +132,7 @@
- return copy_from_user(dst, src, length) ? RM_ERR_BAD_ADDRESS : RM_OK;
- }
-
--RM_STATUS os_memcpy_to_user(
-+RM_STATUS NV_API_CALL os_memcpy_to_user(
- VOID *dst,
- const VOID* src,
- U032 length
-@@ -141,7 +141,7 @@
- return copy_to_user(dst, src, length) ? RM_ERR_BAD_ADDRESS : RM_OK;
- }
-
--VOID* os_mem_set(
-+VOID* NV_API_CALL os_mem_set(
- VOID* dst,
- U008 c,
- U032 length
-@@ -150,7 +150,7 @@
- return memset(dst, (int)c, length);
- }
-
--S032 os_mem_cmp(
-+S032 NV_API_CALL os_mem_cmp(
- const U008 *buf0,
- const U008* buf1,
- U032 length
-@@ -159,7 +159,7 @@
- return memcmp(buf0, buf1, length);
- }
-
--VOID* os_copy_in_ioctl_param(
-+VOID* NV_API_CALL os_copy_in_ioctl_param(
- VOID *dst,
- VOID *src,
- U032 length
-@@ -172,7 +172,7 @@
- }
- }
-
--VOID* os_copy_out_ioctl_param(
-+VOID* NV_API_CALL os_copy_out_ioctl_param(
- VOID *dst,
- VOID *src,
- U032 length
-@@ -204,7 +204,7 @@
-
- #define KMALLOC_LIMIT 131072
-
--RM_STATUS os_alloc_mem(
-+RM_STATUS NV_API_CALL os_alloc_mem(
- VOID **address,
- U032 size
- )
-@@ -251,7 +251,7 @@
- return *address ? RM_OK : RM_ERR_NO_FREE_MEM;
- }
-
--void os_free_mem(VOID *address)
-+void NV_API_CALL os_free_mem(VOID *address)
- {
- unsigned long va;
- int size;
-@@ -273,7 +273,7 @@
- * we may allocate more pages than the caller really asked for.
- * we'll only lock down the number of pages the caller asked for.
- */
--RM_STATUS os_alloc_contig_pages(
-+RM_STATUS NV_API_CALL os_alloc_contig_pages(
- VOID **address,
- U032 size
- )
-@@ -310,7 +310,7 @@
- * the same number of pages we locked, and to calculate the order we
- * allocated, so we properly free the allocation.
- */
--VOID os_free_contig_pages(
-+VOID NV_API_CALL os_free_contig_pages(
- VOID *address,
- U032 size
- )
-@@ -335,7 +335,7 @@
- *
- *****************************************************************************/
-
--RM_STATUS os_get_current_time(
-+RM_STATUS NV_API_CALL os_get_current_time(
- U032 *seconds,
- U032 *useconds
- )
-@@ -371,7 +371,7 @@
- * this, we use mdelay() for any full millisecond to be safe.
- */
-
--RM_STATUS os_delay_us(U032 MicroSeconds)
-+RM_STATUS NV_API_CALL os_delay_us(U032 MicroSeconds)
- {
- unsigned long mdelay_safe_msec;
- unsigned long usec;
-@@ -411,7 +411,7 @@
- * remainder will be accounted for with mdelay().
- */
-
--RM_STATUS os_delay(U032 MilliSeconds)
-+RM_STATUS NV_API_CALL os_delay(U032 MilliSeconds)
- {
- unsigned long MicroSeconds;
- unsigned long jiffies;
-@@ -481,7 +481,7 @@
- }
-
- /* return CPU frequency in MHz */
--U032 os_get_cpu_frequency(VOID)
-+U032 NV_API_CALL os_get_cpu_frequency(VOID)
- {
- u64 tsc[2];
- u32 tsc_d;
-@@ -500,13 +500,13 @@
- return cpu_mhz;
- }
-
--RM_STATUS os_get_current_process(U032 *pPid)
-+RM_STATUS NV_API_CALL os_get_current_process(U032 *pPid)
- {
- *pPid = current->pid;
- return RM_OK;
- }
-
--RM_STATUS os_kill_process(
-+RM_STATUS NV_API_CALL os_kill_process(
- U032 pid,
- U032 sig
- )
-@@ -531,7 +531,7 @@
- //
- // this is what actually outputs the data.
- //
--inline void out_string(const char *str)
-+inline void NV_API_CALL out_string(const char *str)
- {
- printk("%d: %s", smp_processor_id(), str);
- }
-@@ -546,7 +546,7 @@
- * Returns the number of characters written.
- */
-
--int nv_printf(
-+int NV_API_CALL nv_printf(
- int debuglevel,
- const char *printf_format,
- ...
-@@ -571,7 +571,7 @@
- return chars_written;
- }
-
--BOOL os_pci_device_present(
-+BOOL NV_API_CALL os_pci_device_present(
- U016 vendor,
- U016 device
- )
-@@ -587,7 +587,7 @@
- return ret; \
- }
-
--VOID* os_pci_init_handle(
-+VOID* NV_API_CALL os_pci_init_handle(
- U008 bus,
- U008 slot,
- U008 function,
-@@ -604,7 +604,7 @@
- return (VOID *) dev;
- }
-
--U008 os_pci_read_byte(
-+U008 NV_API_CALL os_pci_read_byte(
- VOID *handle,
- U008 offset
- )
-@@ -615,7 +615,7 @@
- return value;
- }
-
--U016 os_pci_read_word(
-+U016 NV_API_CALL os_pci_read_word(
- VOID *handle,
- U008 offset
- )
-@@ -626,7 +626,7 @@
- return value;
- }
-
--U032 os_pci_read_dword(
-+U032 NV_API_CALL os_pci_read_dword(
- VOID *handle,
- U008 offset
- )
-@@ -637,7 +637,7 @@
- return value;
- }
-
--VOID os_pci_write_byte(
-+VOID NV_API_CALL os_pci_write_byte(
- VOID *handle,
- U008 offset,
- U008 value
-@@ -647,7 +647,7 @@
- pci_write_config_byte( (struct pci_dev *) handle, offset, value);
- }
-
--VOID os_pci_write_word(
-+VOID NV_API_CALL os_pci_write_word(
- VOID *handle,
- U008 offset,
- U016 value
-@@ -657,7 +657,7 @@
- pci_write_config_word( (struct pci_dev *) handle, offset, value);
- }
-
--VOID os_pci_write_dword(
-+VOID NV_API_CALL os_pci_write_dword(
- VOID *handle,
- U008 offset,
- U032 value
-@@ -667,7 +667,7 @@
- pci_write_config_dword( (struct pci_dev *) handle, offset, value);
- }
-
--VOID os_io_write_byte(
-+VOID NV_API_CALL os_io_write_byte(
- PHWINFO pdev,
- U032 address,
- U008 value
-@@ -676,7 +676,7 @@
- outb(value, address);
- }
-
--VOID os_io_write_word(
-+VOID NV_API_CALL os_io_write_word(
- PHWINFO pdev,
- U032 address,
- U016 value
-@@ -685,7 +685,7 @@
- outw(value, address);
- }
-
--VOID os_io_write_dword(
-+VOID NV_API_CALL os_io_write_dword(
- PHWINFO pdev,
- U032 address,
- U032 value
-@@ -694,7 +694,7 @@
- outl(value, address);
- }
-
--U008 os_io_read_byte(
-+U008 NV_API_CALL os_io_read_byte(
- PHWINFO pdev,
- U032 address
- )
-@@ -702,7 +702,7 @@
- return inb(address);
- }
-
--U016 os_io_read_word(
-+U016 NV_API_CALL os_io_read_word(
- PHWINFO pdev,
- U032 address
- )
-@@ -710,7 +710,7 @@
- return inw(address);
- }
-
--U032 os_io_read_dword(
-+U032 NV_API_CALL os_io_read_dword(
- PHWINFO pdev,
- U032 address
- )
-@@ -718,14 +718,14 @@
- return inl(address);
- }
-
--ULONG os_cli(ULONG flags)
-+ULONG NV_API_CALL os_cli(ULONG flags)
- {
- NV_SAVE_FLAGS(flags);
- NV_CLI();
- return flags;
- }
-
--ULONG os_sti(ULONG flags)
-+ULONG NV_API_CALL os_sti(ULONG flags)
- {
- NV_RESTORE_FLAGS(flags);
- return flags;
-@@ -789,7 +789,7 @@
- * achieve the same results on a PIII or higher
- */
-
--RM_STATUS os_set_mem_range(
-+RM_STATUS NV_API_CALL os_set_mem_range(
- U032 start,
- U032 size,
- U032 mode
-@@ -817,7 +817,7 @@
- return RM_ERROR;
- }
-
--RM_STATUS os_unset_mem_range(
-+RM_STATUS NV_API_CALL os_unset_mem_range(
- U032 start,
- U032 size
- )
-@@ -839,7 +839,7 @@
- * should this also check for Write-Combining??
- */
-
--VOID *os_map_kernel_space(
-+VOID *NV_API_CALL os_map_kernel_space(
- U032 start,
- U032 size_bytes,
- U032 mode
-@@ -864,7 +864,7 @@
- return vaddr;
- }
-
--VOID os_unmap_kernel_space(
-+VOID NV_API_CALL os_unmap_kernel_space(
- VOID *addr,
- U032 size_bytes
- )
-@@ -872,7 +872,7 @@
- NV_IOUNMAP(addr, size_bytes);
- }
-
--VOID* os_map_user_space(
-+VOID* NV_API_CALL os_map_user_space(
- VOID *kaddr,
- VOID **priv,
- U032 size_bytes,
-@@ -883,14 +883,14 @@
- return NULL;
- }
-
--VOID os_unmap_user_space(
-+VOID NV_API_CALL os_unmap_user_space(
- VOID *uaddr,
- VOID *priv
- )
- {
- }
-
--VOID* os_map_io_space(
-+VOID* NV_API_CALL os_map_io_space(
- U032 start,
- U032 size_bytes,
- VOID **priv,
-@@ -920,7 +920,7 @@
- return (void *)(NV_UINTPTR_T) vma->vm_start;
- }
-
--VOID os_unmap_io_space(
-+VOID NV_API_CALL os_unmap_io_space(
- VOID *addr,
- U032 size_bytes,
- VOID *priv,
-@@ -930,14 +930,14 @@
- }
-
- // flush the cpu's cache, uni-processor version
--RM_STATUS os_flush_cpu_cache()
-+RM_STATUS NV_API_CALL os_flush_cpu_cache()
- {
- CACHE_FLUSH();
- return RM_OK;
- }
-
- // override initial debug level from registry
--VOID os_dbg_init(void)
-+VOID NV_API_CALL os_dbg_init(void)
- {
- U032 new_debuglevel;
- if (RM_OK == rm_read_registry_dword(0,
-@@ -950,7 +950,7 @@
- }
- }
-
--VOID os_dbg_set_level(U032 new_debuglevel)
-+VOID NV_API_CALL os_dbg_set_level(U032 new_debuglevel)
- {
- nv_printf(NV_DBG_SETUP, "Changing debuglevel from 0x%x to 0x%x\n", cur_debuglevel, new_debuglevel);
- cur_debuglevel = new_debuglevel;
-@@ -962,7 +962,7 @@
- * a lock or which threw the breakpoint. I should probably scan the list of
- * nv_state_t's and drop any held locks before throwing this breakpoint.
- */
--VOID os_dbg_breakpoint(void)
-+VOID NV_API_CALL os_dbg_breakpoint(void)
- {
- #ifdef DEBUG
- out_string("Break\n");
-@@ -979,7 +979,7 @@
- }
-
-
--U032 os_get_cpu_count()
-+U032 NV_API_CALL os_get_cpu_count()
- {
- return NV_NUM_CPUS();
- }
-@@ -1008,7 +1008,7 @@
- #define NV_CANARY_CAGE ((unsigned long *)(current + 1))
-
- void
--os_canary_arm()
-+NV_API_CALL os_canary_arm()
- {
- int i;
-
-@@ -1017,7 +1017,7 @@
- }
-
- void
--os_canary_check()
-+NV_API_CALL os_canary_check()
- {
- int i;
-
diff --git a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch b/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch
deleted file mode 100644
index 468d909a613d..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-diff -urN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/Makefile.kbuild NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/Makefile.kbuild
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/Makefile.kbuild 2004-01-15 05:29:12.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/Makefile.kbuild 2004-05-22 21:04:52.143088872 +0200
-@@ -117,6 +117,9 @@
- MODULE_OBJECT := $(MODULE_NAME).o
- else
- MODULE_OBJECT := $(MODULE_NAME).ko
-+
-+ # We need this for the conftest.sh tests to work
-+ KERNEL_HEADERS += -I$(KERNEL_SOURCES)/include/asm/mach-generic
- endif
-
- #
-@@ -146,6 +149,16 @@
- EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
- endif
-
-+ifeq ($(shell sh $(src)/conftest.sh remap_page_range $(KERNEL_HEADERS)),)
-+ # Check if 'conftest.sh remap_page_rage' have no output - if so, we
-+ # can expect issues ... !
-+ $(error Cannot compile tests! Please check $$KERNEL_HEADERS)
-+endif
-+
-+ifeq ($(shell sh $(src)/conftest.sh class_simple $(KERNEL_HEADERS)), yes)
-+ EXTRA_CFLAGS += -DHAVE_CLASS_SIMPLE
-+endif
-+
- #
- # NVIDIA binary object file includes .common section.
- #
-diff -urN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/conftest.sh NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/conftest.sh
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/conftest.sh 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/conftest.sh 2004-05-22 20:58:19.382797512 +0200
-@@ -42,6 +42,29 @@
- fi
- ;;
-
-+ class_simple)
-+ shift
-+ #
-+ # Determine if we have struct class_simple needed for limited sysfs
-+ # support in 2.6
-+ #
-+ echo "#include <linux/device.h>
-+ void add_test_class(void) {
-+ struct class_simple *test_class;
-+ test_class = class_simple_create(THIS_MODULE, \"test\");
-+ }" > conftest.c
-+
-+ gcc -Wall -c conftest.c -o conftest.o $* -D__KERNEL__ > output.log 2>&1
-+
-+ if test -f conftest.o && test -z "`cat output.log`"; then
-+ echo "yes"
-+ else
-+ echo "no"
-+ fi
-+
-+ rm -f conftest.{c,o} output.log
-+ ;;
-+
- cc_sanity_check)
- shift
- #
-diff -urN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv-linux.h NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv-linux.h
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv-linux.h 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv-linux.h 2004-05-22 20:58:19.387796752 +0200
-@@ -448,6 +448,33 @@
- # endif // defined(KERNEL_2_4)
- #endif // defined(CONFIG_DEVFS_FS)
-
-+#if defined(KERNEL_2_6) && defined(HAVE_CLASS_SIMPLE)
-+# define NV_SYSFS_REGISTER \
-+ nvidia_class = class_simple_create(THIS_MODULE, "nvidia");
-+
-+# define NV_SYSFS_ADD_CONTROL \
-+ class_simple_device_add(nvidia_class, \
-+ MKDEV(NV_MAJOR_DEVICE_NUMBER, 255), \
-+ NULL, "nvidiactl");
-+
-+# define NV_SYSFS_ADD_DEVICE(_name, _minor) \
-+ class_simple_device_add(nvidia_class, \
-+ MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ &nv_linux_devices[_minor].dev->dev, _name);
-+
-+# define NV_SYSFS_REMOVE_DEVICE(i) \
-+ class_simple_device_remove(MKDEV(NV_MAJOR_DEVICE_NUMBER, i));
-+
-+# define NV_SYSFS_UNREGISTER \
-+ class_simple_destroy(nvidia_class);
-+#else
-+# define NV_SYSFS_REGISTER
-+# define NV_SYSFS_ADD_CONTROL
-+# define NV_SYSFS_ADD_DEVICE(_name, _minor)
-+# define NV_SYSFS_REMOVE_DEVICE(i)
-+# define NV_SYSFS_UNREGISTER
-+#endif
-+
-
- /*
- * Linux 2.5 introduced the five argument version of remap_page_range, all
-diff -urN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv.c NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv.c
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv.c 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv.c 2004-05-22 20:58:19.393795840 +0200
-@@ -47,6 +47,10 @@
- devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
-+#if defined(KERNEL_2_6) && defined(HAVE_CLASS_SIMPLE)
-+struct class_simple *nvidia_class;
-+#endif
-+
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -874,23 +878,31 @@
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
- #endif
-
-+ NV_SYSFS_REGISTER;
-+
- if (rc < 0)
- {
- nv_printf(NV_DBG_ERRORS, "nvidia_init_module: register failed\n");
- return rc;
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) || defined(KERNEL_2_6)
- do
- {
- char name[10];
-
-+# if defined(CONFIG_DEVFS_FS)
- nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-+# endif
-+ NV_SYSFS_ADD_CONTROL;
-
- for (i = 0; i < num_nv_devices; i++)
- {
- sprintf(name, "nvidia%d", i);
-+# if defined(CONFIG_DEVFS_FS)
- nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
-+# endif
-+ NV_SYSFS_ADD_DEVICE(name, i);
- }
- } while(0);
- #endif
-@@ -951,6 +963,7 @@
- #else
- unregister_chrdev(nv_major, "nvidia");
- #endif
-+ NV_SYSFS_UNREGISTER;
- return rc;
- }
-
-@@ -1011,15 +1024,24 @@
- nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) || defined(KERNEL_2_6)
- do {
- int i;
-+# if defined(CONFIG_DEVFS_FS)
- NV_DEVFS_REMOVE_CONTROL();
-- for (i = 0; i < num_nv_devices; i++)
-+# endif
-+ NV_SYSFS_REMOVE_DEVICE(255);
-+ for (i = 0; i < num_nv_devices; i++) {
-+# if defined(CONFIG_DEVFS_FS)
- NV_DEVFS_REMOVE_DEVICE(i);
-+# endif
-+ NV_SYSFS_REMOVE_DEVICE(i);
-+ }
- } while (0);
- #endif
-
-+ NV_SYSFS_UNREGISTER;
-+
- #if NV_ENABLE_MEM_TRACKING
- nv_list_mem(vm_list);
- nv_list_mem(km_list);
diff --git a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch b/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch
deleted file mode 100644
index bf90073adb56..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-diff -urpN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/Makefile.kbuild NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/Makefile.kbuild
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/Makefile.kbuild 2004-01-15 05:29:12.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/Makefile.kbuild 2004-02-01 16:15:55.529582488 +0200
-@@ -146,6 +146,10 @@ ifeq ($(shell sh $(src)/conftest.sh rema
- EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4
- endif
-
-+ifeq ($(shell sh $(src)/conftest.sh class_simple $(KERNEL_HEADERS)), yes)
-+ EXTRA_CFLAGS += -DHAVE_CLASS_SIMPLE
-+endif
-+
- #
- # NVIDIA binary object file includes .common section.
- #
-diff -urpN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/conftest.sh NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/conftest.sh
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/conftest.sh 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/conftest.sh 2004-02-01 16:19:19.079638176 +0200
-@@ -42,6 +42,29 @@ case "$1" in
- fi
- ;;
-
-+ class_simple)
-+ shift
-+ #
-+ # Determine if we have struct class_simple needed for limited sysfs
-+ # support in 2.6
-+ #
-+ echo "#include <linux/device.h>
-+ void add_test_class(void) {
-+ struct class_simple *test_class;
-+ test_class = class_simple_create(THIS_MODULE, \"test\");
-+ }" > conftest.c
-+
-+ gcc -Wall -c conftest.c -o conftest.o $* -D__KERNEL__ > output.log 2>&1
-+
-+ if test -f conftest.o && test -z "`cat output.log`"; then
-+ echo "yes"
-+ else
-+ echo "no"
-+ fi
-+
-+ rm -f conftest.{c,o} output.log
-+ ;;
-+
- cc_sanity_check)
- shift
- #
-diff -urpN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv-linux.h NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv-linux.h
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv-linux.h 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv-linux.h 2004-02-01 16:54:14.850032648 +0200
-@@ -448,6 +448,33 @@ typedef struct agp_memory agp_memory;
- # endif // defined(KERNEL_2_4)
- #endif // defined(CONFIG_DEVFS_FS)
-
-+#if defined(KERNEL_2_6) && defined(HAVE_CLASS_SIMPLE)
-+# define NV_SYSFS_REGISTER \
-+ nvidia_class = class_simple_create(THIS_MODULE, "nvidia");
-+
-+# define NV_SYSFS_ADD_CONTROL \
-+ class_simple_device_add(nvidia_class, \
-+ MKDEV(NV_MAJOR_DEVICE_NUMBER, 255), \
-+ NULL, "nvidiactl");
-+
-+# define NV_SYSFS_ADD_DEVICE(_name, _minor) \
-+ class_simple_device_add(nvidia_class, \
-+ MKDEV(NV_MAJOR_DEVICE_NUMBER, _minor), \
-+ &nv_linux_devices[_minor].dev->dev, _name);
-+
-+# define NV_SYSFS_REMOVE_DEVICE(i) \
-+ class_simple_device_remove(MKDEV(NV_MAJOR_DEVICE_NUMBER, i));
-+
-+# define NV_SYSFS_UNREGISTER \
-+ class_simple_destroy(nvidia_class);
-+#else
-+# define NV_SYSFS_REGISTER
-+# define NV_SYSFS_ADD_CONTROL
-+# define NV_SYSFS_ADD_DEVICE(_name, _minor)
-+# define NV_SYSFS_REMOVE_DEVICE(i)
-+# define NV_SYSFS_UNREGISTER
-+#endif
-+
-
- /*
- * Linux 2.5 introduced the five argument version of remap_page_range, all
-diff -urpN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv.c NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv.c
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/nv.c 2004-01-15 05:29:11.000000000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.sysfs/usr/src/nv/nv.c 2004-02-01 16:58:03.429283320 +0200
-@@ -47,6 +47,10 @@ struct proc_dir_entry *proc_nvidia;
- devfs_handle_t nv_devfs_handles[NV_MAX_DEVICES+1];
- #endif
-
-+#if defined(KERNEL_2_6) && defined(HAVE_CLASS_SIMPLE)
-+struct class_simple *nvidia_class;
-+#endif
-+
- // #define NV_DBG_MEM 1
- #undef NV_DBG_MEM
-
-@@ -874,23 +878,31 @@ static int __init nvidia_init_module(voi
- rc = register_chrdev(nv_major, "nvidia", &nv_fops);
- #endif
-
-+ NV_SYSFS_REGISTER;
-+
- if (rc < 0)
- {
- nv_printf(NV_DBG_ERRORS, "nvidia_init_module: register failed\n");
- return rc;
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) || defined(KERNEL_2_6)
- do
- {
- char name[10];
-
-+# if defined(CONFIG_DEVFS_FS)
- nv_devfs_handles[0] = NV_DEVFS_REGISTER("nvidiactl", 255);
-+# endif
-+ NV_SYSFS_ADD_CONTROL;
-
- for (i = 0; i < num_nv_devices; i++)
- {
- sprintf(name, "nvidia%d", i);
-+# if defined(CONFIG_DEVFS_FS)
- nv_devfs_handles[i+1] = NV_DEVFS_REGISTER(name, i);
-+# endif
-+ NV_SYSFS_ADD_DEVICE(name, i);
- }
- } while(0);
- #endif
-@@ -951,6 +963,7 @@ static int __init nvidia_init_module(voi
- #else
- unregister_chrdev(nv_major, "nvidia");
- #endif
-+ NV_SYSFS_UNREGISTER;
- return rc;
- }
-
-@@ -1011,15 +1024,24 @@ static void __exit nvidia_exit_module(vo
- nv_printf(NV_DBG_ERRORS, "nvidia_exit_module: unregister nv failed\n");
- }
-
--#ifdef CONFIG_DEVFS_FS
-+#if defined(CONFIG_DEVFS_FS) || defined(KERNEL_2_6)
- do {
- int i;
-+# if defined(CONFIG_DEVFS_FS)
- NV_DEVFS_REMOVE_CONTROL();
-- for (i = 0; i < num_nv_devices; i++)
-+# endif
-+ NV_SYSFS_REMOVE_DEVICE(255);
-+ for (i = 0; i < num_nv_devices; i++) {
-+# if defined(CONFIG_DEVFS_FS)
- NV_DEVFS_REMOVE_DEVICE(i);
-+# endif
-+ NV_SYSFS_REMOVE_DEVICE(i);
-+ }
- } while (0);
- #endif
-
-+ NV_SYSFS_UNREGISTER;
-+
- #if NV_ENABLE_MEM_TRACKING
- nv_list_mem(vm_list);
- nv_list_mem(km_list);
diff --git a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch b/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch
deleted file mode 100644
index 16e6571523c1..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -urN NVIDIA-Linux-x86-1.0-5336/usr/src/nv/makefile NVIDIA-Linux-x86-1.0-5336.az/usr/src/nv/makefile
---- NVIDIA-Linux-x86-1.0-5336/usr/src/nv/makefile 2004-06-15 21:35:13.034445000 +0200
-+++ NVIDIA-Linux-x86-1.0-5336.az/usr/src/nv/makefile 2004-06-15 21:48:43.410249152 +0200
-@@ -12,4 +12,15 @@
- default: module
-
- module nvidia.o nvidia.ko install nv-linux.o clean module-install package-install print-module-filename: select_makefile
-- @ $(MAKE) --no-print-directory -f Makefile $@
-+ @if [ "`ls -l Makefile`" == "Makefile.kbuild" ]; then \
-+ if [ "${SYSSRC}" ]; then \
-+ KERNEL_INCLUDE="${SYSSRC}/include"; \
-+ elif [ "${SYSINCLUDE}" ]; then \
-+ KERNEL_INCLUDE="${SYSINCLUDE}"; \
-+ else \
-+ KERNEL_INCLUDE="/lib/modules/`uname -r`/build/include"; \
-+ fi; \
-+ make -C "${KERNEL_INCLUDE}/../" M=`pwd` $@; \
-+ else \
-+ $(MAKE) --no-print-directory -f Makefile $@; \
-+ fi
diff --git a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch b/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch
deleted file mode 100644
index 0e1566d898c0..000000000000
--- a/media-video/nvidia-kernel/files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- usr/src/nv/conftest.sh.old 2004-06-30 16:08:25.863017584 +1000
-+++ usr/src/nv/conftest.sh 2004-06-30 17:19:33.415251032 +1000
-@@ -195,8 +195,10 @@
- # 2.6 and newer kernels, and the old Makefile for kernels older
- # than 2.6.
- #
-- if [ "$SYSSRC" ]; then
-- KERNEL_INCLUDE=$SYSSRC/include
-+ if [ "$KV_OUT" ]; then
-+ KERNEL_INCLUDE=$KV_OUT/include
-+ elif [ "$SYSSRC" ]; then
-+ KERNEL_INCLUDE=$SYSSRC/include
- elif [ "$SYSINCLUDE" ]; then
- KERNEL_INCLUDE=$SYSINCLUDE
- else
---- usr/src/nv/Makefile.kbuild.orig 2004-06-30 16:16:47.991682424 +1000
-+++ usr/src/nv/Makefile.kbuild 2004-06-30 17:23:24.047189648 +1000
-@@ -93,6 +93,11 @@
- ifdef SYSSRC
- KERNEL_SOURCES := $(SYSSRC)
- KERNEL_HEADERS := -I$(KERNEL_SOURCES)/include
-+ ifdef KV_OUT
-+ ifneq ($(SYSSRC),$(KV_OUT))
-+ KERNEL_HEADERS += -I$(KV_OUT)/include
-+ endif
-+ endif
- MODULE_ROOT := /lib/modules/$(shell sh $(src)/conftest.sh get_uname)/kernel/drivers
- else
- KERNEL_SOURCES := /lib/modules/$(shell uname -r)/build
-@@ -119,7 +124,12 @@
- MODULE_OBJECT := $(MODULE_NAME).ko
-
- # We need this for the conftest.sh tests to work
-- KERNEL_HEADERS += -I$(KERNEL_SOURCES)/include/asm/mach-generic
-+ ifneq ($(SYSSRC),$(KV_OUT))
-+ KERNEL_HEADERS += -I$(KV_OUT)/include2/asm/mach-generic
-+ KERNEL_HEADERS += -I$(KV_OUT)/include2
-+ else
-+ KERNEL_HEADERS += -I$(KERNEL_SOURCES)/include/asm/mach-generic
-+ endif
- endif
-
- #
-@@ -191,7 +201,7 @@
- # KBUILD build parameters.
- #
-
--KBUILD_PARAMS := -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
-+KBUILD_PARAMS := -C $(KERNEL_SOURCES) M=$(PWD)
-
- #
- # NVIDIA sanity checks.
diff --git a/media-video/nvidia-kernel/files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch b/media-video/nvidia-kernel/files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch
deleted file mode 100644
index d4e2013cbb31..000000000000
--- a/media-video/nvidia-kernel/files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch
+++ /dev/null
@@ -1,211 +0,0 @@
---- Makefile.kbuild.old 2004-07-01 13:54:56.542258768 +1000
-+++ Makefile.kbuild 2004-07-01 13:57:04.861751240 +1000
-@@ -93,14 +93,23 @@
- ifdef SYSSRC
- KERNEL_SOURCES := $(SYSSRC)
- KERNEL_HEADERS := $(KERNEL_SOURCES)/include
-+ ifdef KVOUT
-+ ifneq ($(SYSSRC),$(KVOUT))
-+ KOUTPUT_HEADERS := $(KVOUT)/include
-+ endif
-+ endif
-+ ifndef KOUTPUT_HEADERS
-+ KOUTPUT_HEADERS := $(KERNEL_HEADERS)
-+ endif
- else
-- KERNEL_UNAME := $(shell uname -r)
-- KERNEL_SOURCES := /lib/modules/$(KERNEL_UNAME)/build
-- KERNEL_HEADERS := $(KERNEL_SOURCES)/include
-+ KERNEL_UNAME := $(shell uname -r)
-+ KERNEL_SOURCES := /lib/modules/$(KERNEL_UNAME)/build
-+ KERNEL_HEADERS := $(KERNEL_SOURCES)/include
-+ KOUTPUT_HEADERS := $(KERNEL_HEADERS)
- endif
-
- CC ?= gcc
--CONFTEST := sh $(src)/conftest.sh "$(CC)" $(KERNEL_HEADERS)
-+CONFTEST := sh $(src)/conftest.sh "$(CC)" $(KERNEL_HEADERS) $(KOUTPUT_HEADERS)
-
- KERNEL_UNAME ?= $(shell $(CONFTEST) get_uname)
- MODULE_ROOT := /lib/modules/$(KERNEL_UNAME)/kernel/drivers
---- Makefile.nvidia.old 2004-07-01 13:55:03.054268792 +1000
-+++ Makefile.nvidia 2004-07-01 13:55:17.799027248 +1000
-@@ -21,6 +21,14 @@
- ifdef SYSSRC
- KERNEL_SOURCES := $(SYSSRC)
- KERNEL_HEADERS := $(KERNEL_SOURCES)/include
-+ ifdef KVOUT
-+ ifneq ($(SYSSRC),$(KVOUT))
-+ KOUTPUT_HEADERS := $(KVOUT)/include
-+ endif
-+ endif
-+ ifndef KOUTPUT_HEADERS
-+ KOUTPUT_HEADERS := $(KERNEL_SOURCES)
-+ endif
- else
- ifdef SYSINCLUDE
- KERNEL_HEADERS := $(SYSINCLUDE)
-@@ -28,10 +35,11 @@
- KERNEL_UNAME := $(shell uname -r)
- KERNEL_HEADERS := /lib/modules/$(KERNEL_UNAME)/build/include
- endif
-+ KOUTPUT_HEADERS := $(KERNEL_SOURCES)
- endif
-
- CC ?= cc
--CONFTEST := sh ./conftest.sh "$(CC)" $(KERNEL_HEADERS)
-+CONFTEST := sh ./conftest.sh "$(CC)" $(KERNEL_HEADERS) $(KOUTPUT_HEADERS)
-
- KERNEL_UNAME ?= $(shell $(CONFTEST) get_uname)
- MODULE_ROOT := /lib/modules/$(KERNEL_UNAME)/kernel/drivers
---- makefile.old 2004-07-01 13:54:48.070546664 +1000
-+++ makefile 2004-07-01 13:55:13.966609864 +1000
-@@ -11,12 +11,21 @@
- else
- KERNEL_HEADERS := /lib/modules/$(shell uname -r)/build/include
- endif
-+ KOUTPUT_HEADERS := $(KERNEL_HEADERS)
- else
- KERNEL_HEADERS := $(SYSSRC)/include
-+ ifdef KVOUT
-+ ifneq ($(SYSSRC),$(KVOUT))
-+ KOUTPUT_HEADERS := $(KVOUT)/include
-+ endif
-+ endif
-+ ifndef KOUTPUT_HEADERS
-+ KOUTPUT_HEADERS := $(KERNEL_HEADERS)
-+ endif
- endif
-
- CC ?= cc
--CONFTEST := sh ./conftest.sh "$(CC)" $(KERNEL_HEADERS)
-+CONFTEST := sh ./conftest.sh "$(CC)" $(KERNEL_HEADERS) $(KOUTPUT_HEADERS)
-
- .PHONY: select_makefile
- select_makefile:
---- conftest.sh.old 2004-07-01 13:54:41.750507456 +1000
-+++ conftest.sh 2004-07-01 13:55:08.910378528 +1000
-@@ -7,16 +7,19 @@
-
- CC="$1"
- ISYSTEM=`$CC -print-file-name=include`
--HEADERS=$2
-+SOURCE_HEADERS=$2
-+BUILT_HEADERS=$3
-
- CFLAGS="-D__KERNEL__ \
- -Werror \
- -nostdinc \
- -isystem $ISYSTEM \
---I $HEADERS -I $HEADERS/asm/mach-default \
-+-I $SOURCE_HEADERS -I $SOURCE_HEADERS/asm/mach-default \
-+-I $BUILT_HEADERS -I $BUILT_HEADERS/../include2/asm/mach-default \
-+-I $BUILT_HEADERS/../include2 \
- -Wimplicit-function-declaration"
-
--case "$3" in
-+case "$4" in
- remap_page_range)
- #
- # Determine the number of arguments expected by remap_page_range.
-@@ -124,7 +126,7 @@
- # Determine the kernel's major patch level; this is only done if we
- # aren't told by KBUILD.
- #
-- SOURCES=$HEADERS/..
-+ SOURCES=$SOURCE_HEADERS/..
-
- echo $(grep "^PATCHLEVEL =" $SOURCES/Makefile | cut -d " " -f 3)
- exit 0
-@@ -193,7 +195,7 @@
- RET=1
- OUTPUT=$4
-
-- if [ -f $HEADERS/linux/version.h ]; then
-+ if [ -f $BUILT_HEADERS/linux/version.h ]; then
- #
- # We are either looking at a configured kernel source
- # tree or at headers shipped for a specific kernel.
-@@ -208,7 +210,7 @@
- }
- }" > conftest$$.c
-
-- $CC conftest$$.c -o conftest$$ -nostdinc -I $HEADERS > /dev/null 2>&1
-+ $CC conftest$$.c -o conftest$$ -nostdinc -I $BUILT_HEADERS > /dev/null 2>&1
- rm -f conftest$$.c
-
- if [ -f conftest$$ ]; then
-@@ -222,8 +224,8 @@
- RET=0
- fi
- else
-- MAKEFILE=$HEADERS/../Makefile
-- CONFIG=$HEADERS/../.config
-+ MAKEFILE=$SOURCE_HEADERS/../Makefile
-+ CONFIG=$BUILT_HEADERS/../.config
-
- if [ -f $MAKEFILE -a -f $CONFIG ]; then
- #
-@@ -275,7 +277,7 @@
- return 0;
- }" > conftest$$.c
-
-- $CC conftest$$.c -o conftest$$ -nostdinc -I $HEADERS > /dev/null 2>&1
-+ $CC conftest$$.c -o conftest$$ -nostdinc -I $BUILT_HEADERS > /dev/null 2>&1
- rm -f conftest$$.c
-
- if [ -f conftest$$ ]; then
-@@ -296,7 +298,7 @@
- RET=1
- OUTPUT=$4
-
-- if [ -f $HEADERS/linux/autoconf.h ]; then
-+ if [ -f $BUILT_HEADERS/linux/autoconf.h ]; then
- #
- # We are looking at a configured source tree; verify
- # that its configuration doesn't include rivafb using
-@@ -308,7 +310,7 @@
- #endif
- " > conftest$$.c
-
-- $CC -c conftest$$.c -nostdinc -I $HEADERS > /dev/null 2>&1
-+ $CC -c conftest$$.c -nostdinc -I $BUILT_HEADERS > /dev/null 2>&1
- rm -f conftest$$.c
-
- if [ -f conftest$$.o ]; then
-@@ -316,7 +318,7 @@
- RET=0
- fi
- else
-- CONFIG=$HEADERS/../.config
-+ CONFIG=$BUILT_HEADERS/../.config
- if [ -f $CONFIG ]; then
- if [ -z "$(grep "^CONFIG_FB_RIVA=y" $CONFIG)" ]; then
- RET=0
-@@ -352,7 +354,7 @@
- RET=1
- OUTPUT=$4
-
-- if [ -f $HEADERS/linux/autoconf.h ]; then
-+ if [ -f $BUILT_HEADERS/linux/autoconf.h ]; then
- #
- # We are looking at a configured source tree; verify
- # that its configuration doesn't include rivafb using
-@@ -364,7 +366,7 @@
- #endif
- " > conftest$$.c
-
-- $CC -c conftest$$.c -nostdinc -I $HEADERS > /dev/null 2>&1
-+ $CC -c conftest$$.c -nostdinc -I $BUILT_HEADERS > /dev/null 2>&1
- rm -f conftest$$.c
-
- if [ -f conftest$$.o ]; then
-@@ -372,7 +374,7 @@
- RET=0
- fi
- else
-- CONFIG=$HEADERS/../.config
-+ CONFIG=$BUILT_HEADERS/../.config
- if [ -f $CONFIG ]; then
- if [ -z "$(grep "^CONFIG_FB_RIVA=m" $CONFIG)" ]; then
- RET=0
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3
deleted file mode 100644
index b1f93afc2136..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3
+++ /dev/null
@@ -1 +0,0 @@
-MD5 29b4cfcff63f502787fd2f0ac7a105fd NVIDIA_kernel-1.0-4363.tar.gz 661447
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4496-r3 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4496-r3
deleted file mode 100644
index 5fe85ccc3da6..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4496-r3
+++ /dev/null
@@ -1 +0,0 @@
-MD5 cc8cc9b0fda676b074869e50844c969a NVIDIA-Linux-x86-1.0-4496-pkg0.run 5125585
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4499 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4499
deleted file mode 100644
index 189c10d6ebcf..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4499
+++ /dev/null
@@ -1 +0,0 @@
-MD5 d93786060f3fad675c3fb3bb3460739b NVIDIA_kernel-1.0-4499.tar.gz 732013
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5328-r1 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5328-r1
deleted file mode 100644
index 32ab3b45d935..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5328-r1
+++ /dev/null
@@ -1 +0,0 @@
-MD5 b2ae3a449837430d5f10a2ebf3d9f7d4 NVIDIA-Linux-x86-1.0-5328-pkg1.run 6855080
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5332-r1 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5332-r1
deleted file mode 100644
index 943071e25292..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5332-r1
+++ /dev/null
@@ -1 +0,0 @@
-MD5 eede761ab428ff0d27e5f67e8c555972 NVIDIA-Linux-x86_64-1.0-5332-pkg0.run 5597826
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5336-r4 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5336-r4
deleted file mode 100644
index 56ddf0d273b7..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.5336-r4
+++ /dev/null
@@ -1 +0,0 @@
-MD5 6d7361347ebbef5dfdbe6bdcb560fda8 NVIDIA-Linux-x86-1.0-5336-pkg1.run 6821193
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6106-r1 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6106-r1
deleted file mode 100644
index a343b4b8810a..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6106-r1
+++ /dev/null
@@ -1,2 +0,0 @@
-MD5 5432f919f0211ce36b854d87108d7db0 NVIDIA-Linux-x86-1.0-6106-pkg1.run 8160802
-MD5 024f21a3fa134bee8339adac64bdc77a NVIDIA-Linux-x86_64-1.0-6106-pkg2.run 7331301
diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6111-r2 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6111-r2
deleted file mode 100644
index 891f45379b0a..000000000000
--- a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.6111-r2
+++ /dev/null
@@ -1,2 +0,0 @@
-MD5 51e83be46f83c52102ccb8995b54f4e2 NVIDIA-Linux-x86-1.0-6111-pkg1.run 8167999
-MD5 6c7b0c8b3ce5c34186e0c80042e6d046 NVIDIA-Linux-x86_64-1.0-6111-pkg2.run 7333486
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild
deleted file mode 100644
index bc3779767b5b..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild,v 1.16 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils
-
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA_kernel-${NV_V}"
-S="${WORKDIR}/${NV_PACKAGE}"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}.tar.gz"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-pkg_setup() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-
- check_version_h
-}
-
-check_version_h() {
- if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
- then
- eerror "Please verify that your /usr/src/linux symlink is pointing"
- eerror "to your current kernel sources, and that you did run:"
- eerror
- eerror " # make dep"
- die "/usr/src/linux symlink not setup!"
- fi
-}
-
-get_KV_info() {
- check_version_h
-
- # Get the kernel version of sources in /usr/src/linux ...
- export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
- "${ROOT}/usr/src/linux/include/linux/version.h")"
- export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
- export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
- export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
-}
-
-is_kernel() {
- [ -z "$1" -o -z "$2" ] && return 1
-
- get_KV_info
-
- if [ "${KV_major}" -eq "$1" -a "${KV_minor}" -eq "$2" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- unpack ${A}
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- get_KV_info
-
- cd ${S}
- einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}"
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- EPATCH_SINGLE_MSG="Applying tasklet patch for kernel 2.[56]..." \
- epatch ${FILESDIR}/${PV}/${NV_PACKAGE}-2.5-20030714.diff
-
- # Kbuild have issues currently (sandbox related).
- ln -snf Makefile.nvidia Makefile
- fi
-}
-
-src_compile() {
- # Portage should determine the version of the kernel sources
- check_KV
-
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \
- clean nvidia.o || die
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
- if is_kernel 2 5 || is_kernel 2 6
- then
- newins nvidia.o nvidia.ko
- else
- doins nvidia.o
- fi
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you are not using devfs, loading the module automatically at"
- einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload."
- echo
- ewarn "Please note that the driver name changed from \"NVdriver\""
- ewarn "to \"nvidia.o\"."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.4496-r3.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.4496-r3.ebuild
deleted file mode 100644
index 4fbdbb38b82b..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.4496-r3.ebuild
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.4496-r3.ebuild,v 1.13 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils
-
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-S="${WORKDIR}/${NV_PACKAGE}-pkg0/usr/src/nv"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}-pkg0.run"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-pkg_setup() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-
- check_version_h
-}
-
-check_version_h() {
- if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
- then
- eerror "Please verify that your /usr/src/linux symlink is pointing"
- eerror "to your current kernel sources, and that you did run:"
- eerror
- eerror " # make dep"
- die "/usr/src/linux symlink not setup!"
- fi
-}
-
-get_KV_info() {
- check_version_h
-
- # Get the kernel version of sources in /usr/src/linux ...
- export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
- "${ROOT}/usr/src/linux/include/linux/version.h")"
- export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
- export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
- export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
-}
-
-is_kernel() {
- [ -z "$1" -o -z "$2" ] && return 1
-
- get_KV_info
-
- if [ "${KV_major}" -eq "$1" -a "${KV_minor}" -eq "$2" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-pkg0.run --extract-only
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- get_KV_info
-
- cd ${S}
- einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}"
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- EPATCH_SINGLE_MSG="Applying tasklet patch ..." \
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.6-20030905.diff
-# EPATCH_SINGLE_MSG="Applying pci device name patch ..." \
-# epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.6-pci_name-20030905.diff
-
- # Kbuild have issues currently (sandbox related).
- ln -snf Makefile.nvidia Makefile
- fi
-}
-
-src_compile() {
- # Portage should determine the version of the kernel sources
- check_KV
-
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \
- clean nvidia.o || die
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
- if is_kernel 2 5 || is_kernel 2 6
- then
- newins nvidia.o nvidia.ko
- else
- doins nvidia.o
- fi
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you are not using devfs, loading the module automatically at"
- einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload."
- echo
- ewarn "Please note that the driver name changed from \"NVdriver\""
- ewarn "to \"nvidia.o\"."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.4499.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.4499.ebuild
deleted file mode 100644
index 1a192fd14940..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.4499.ebuild
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.4499.ebuild,v 1.11 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils
-
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-S="${WORKDIR}/NVIDIA_kernel-1.0-4499"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="http://download.nvidia.com/XFree86/Linux-x86-64/1.0-4499/NVIDIA_kernel-1.0-4499.tar.gz"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -amd64"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-pkg_setup() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-
- check_version_h
-}
-
-check_version_h() {
- if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
- then
- eerror "Please verify that your /usr/src/linux symlink is pointing"
- eerror "to your current kernel sources, and that you did run:"
- eerror
- eerror " # make dep"
- die "/usr/src/linux symlink not setup!"
- fi
-}
-
-get_KV_info() {
- check_version_h
-
- # Get the kernel version of sources in /usr/src/linux ...
- export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
- "${ROOT}/usr/src/linux/include/linux/version.h")"
- export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
- export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
- export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
-}
-
-is_kernel() {
- [ -z "$1" -o -z "$2" ] && return 1
-
- get_KV_info
-
- if [ "${KV_major}" -eq "$1" -a "${KV_minor}" -eq "$2" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- cd ${WORKDIR}
- unpack NVIDIA_kernel-1.0-4499.tar.gz
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- get_KV_info
-
- cd ${S}
- einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}"
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- EPATCH_SINGLE_MSG="Applying 2.6.x patch ..." \
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.6-20031014.diff
- fi
-}
-
-src_compile() {
- # Portage should determine the version of the kernel sources
- check_KV
-
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \
- clean nvidia.o || die
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
- if is_kernel 2 5 || is_kernel 2 6
- then
- doins nvidia.ko
- else
- doins nvidia.o
- fi
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you are not using devfs, loading the module automatically at"
- einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload."
- echo
- ewarn "Please note that the driver name changed from \"NVdriver\""
- ewarn "to \"nvidia.ko\"."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.5328-r1.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.5328-r1.ebuild
deleted file mode 100644
index 418bfc27df5b..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.5328-r1.ebuild
+++ /dev/null
@@ -1,164 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.5328-r1.ebuild,v 1.10 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils
-
-PKG_V="pkg1"
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}-${PKG_V}.run"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-
-pkg_setup() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-
- check_version_h
-}
-
-check_version_h() {
- if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
- then
- eerror "Please verify that your /usr/src/linux symlink is pointing"
- eerror "to your current kernel sources, and that you did run:"
- eerror
- eerror " # make dep"
- die "/usr/src/linux symlink not setup!"
- fi
-}
-
-get_KV_info() {
- check_version_h
-
- # Get the kernel version of sources in /usr/src/linux ...
- export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
- "${ROOT}/usr/src/linux/include/linux/version.h")"
- export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
- export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
- export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
-}
-
-is_kernel() {
- [ -z "$1" -o -z "$2" ] && return 1
-
- get_KV_info
-
- if [ "${KV_major}" -eq "$1" -a "${KV_minor}" -eq "$2" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- get_KV_info
-
- cd ${S}
- einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}"
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- EPATCH_SINGLE_MSG="Applying tasklet patch ..." \
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.6-20040105.diff
-
- # Kbuild have issues currently (sandbox related).
- ln -snf Makefile.nvidia Makefile
- fi
-
- if is_kernel 2 4
- then
- EPATCH_SINGLE_MSG="Applying VIA chipset bugfix patch ..." \
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.4-via-chipset-fix.patch
- fi
-
- # if you set this then it's your own fault when stuff breaks :)
- [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile
-}
-
-src_compile() {
- # Portage should determine the version of the kernel sources
- check_KV
-
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \
- clean nvidia.o || die
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
- if is_kernel 2 5 || is_kernel 2 6
- then
- newins nvidia.o nvidia.ko
- else
- doins nvidia.o
- fi
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you are not using devfs, loading the module automatically at"
- einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload."
- echo
- ewarn "Please note that the driver name changed from \"NVdriver\""
- ewarn "to \"nvidia.o\"."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.5332-r1.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.5332-r1.ebuild
deleted file mode 100644
index dbe58fcc4e3e..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.5332-r1.ebuild
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.5332-r1.ebuild,v 1.6 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils
-
-PKG_V="pkg0"
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA-Linux-x86_64-${NV_V}"
-S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86_64/${NV_V}/${NV_PACKAGE}-${PKG_V}.run"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -amd64"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-
-pkg_setup() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-
- check_version_h
-}
-
-check_version_h() {
- if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
- then
- eerror "Please verify that your /usr/src/linux symlink is pointing"
- eerror "to your current kernel sources, and that you did run:"
- eerror
- eerror " # make dep"
- die "/usr/src/linux symlink not setup!"
- fi
-}
-
-get_KV_info() {
- check_version_h
-
- # Get the kernel version of sources in /usr/src/linux ...
- export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
- "${ROOT}/usr/src/linux/include/linux/version.h")"
- export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
- export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
- export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
-}
-
-is_kernel() {
- [ -z "$1" -o -z "$2" ] && return 1
-
- get_KV_info
-
- if [ "${KV_major}" -eq "$1" -a "${KV_minor}" -eq "$2" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- get_KV_info
-
- cd ${S}
- einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}"
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- # Kbuild have issues currently (sandbox related).
- EPATCH_SINGLE_MSG="Applying 2.6.x patch ..." \
- epatch ${FILESDIR}/${PV}/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff
- fi
-
- # if you set this then it's your own fault when stuff breaks :)
- [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile
-}
-
-src_compile() {
- # Portage should determine the version of the kernel sources
- check_KV
-
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \
- clean nvidia.o || die
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
- if is_kernel 2 5 || is_kernel 2 6
- then
- doins nvidia.ko
- else
- doins nvidia.o
- fi
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you are not using devfs, loading the module automatically at"
- einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload."
- echo
- ewarn "Please note that the driver name changed from \"NVdriver\""
- ewarn "to \"nvidia.o\"."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r4.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r4.ebuild
deleted file mode 100644
index 9afc97ef422a..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r4.ebuild
+++ /dev/null
@@ -1,160 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r4.ebuild,v 1.5 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils kmod
-
-PKG_V="pkg1"
-NV_V="${PV/1.0./1.0-}"
-NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv"
-DESCRIPTION="Linux kernel module for the NVIDIA's X driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}-${PKG_V}.run"
-IUSE=""
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86"
-RESTRICT="nostrip"
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-KMOD_SOURCES="none"
-
-mtrr_check() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-}
-
-pkg_setup() {
- mtrr_check
-
- echo
- ewarn "The new 2.6.6 Series kernels include an option for 4K Stack sizes,"
- ewarn "this option must NOT be selected. This driver will only work with"
- ewarn "the OLD 8K Stack size, please ensure you leave 8K stack sizes for now."
- echo
-}
-
-ck_kern_write() {
- if [ ! "${KV_PATCH}" -ge "6" ]
- then
- ewarn "You are running Linux Kernel ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}\n"
- ewarn "Due to incompatibilities between the current nvidia drivers and"
- ewarn "the new 2.6.6 kernel sources we need to use the koutput feature"
- ewarn "unfortunately this means that older kernels will be omitted from"
- ewarn "the sandbox for this build.\n"
- ewarn "This will be over come with newer driver releases from nvidia."
- echo
- ewarn "THIS BUILD WILL NOT WORK WITH FEATURES=\"userpriv\""
- echo
- ewarn "We are working to resolve this issue, please disable userpriv"
- ewarn "if you use it while building nvidia-kernel."
- return 0
- else
- return 1
- fi
-}
-
-src_unpack() {
- # Let the kmod eclass set the variables for us
- kmod_src_unpack
-
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only
-
- # Next section applies patches for linux-2.5 kernel, and/or
- # bugfixes for linux-2.4. All these are from:
- #
- # http://www.minion.de/nvidia/
- #
- # Many thanks to Christian Zander <zander@minion.de> for bringing
- # these to us, and being so helpful to select which to use.
-
- cd ${S}
-
- # Support for gcc-3.4, so 2.4.xx should benifit as well ...
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-2.6-20040521.patch
- # Cannot hurt for 2.4.xx as well ...
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-fix-makefile-for-2.6.patch
-
- if is_kernel 2 5 || is_kernel 2 6
- then
- # Add sysfs support
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-basic-sysfs-support-v2.patch
- # Add koutput support to kbuild (this is the BIGGEST hack)
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-kbuild-koutput-support.patch
- fi
-
- # if you set this then it's your own fault when stuff breaks :)
- [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile.*
-}
-
-src_compile() {
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- if is_kernel 2 5 || is_kernel 2 6
- then
- if ck_kern_write
- then
- KD="`/bin/readlink -f ${KERNEL_DIR}`"
- einfo "Adding write support to ${KD}\n"
- addwrite "${KD}"
- fi
-
- unset ARCH
- fi
- make IGNORE_CC_MISMATCH="yes" SYSSRC="${KERNEL_DIR}" KV_OUT="${KV_OUTPUT}" \
- clean module V=1 || die "Failed to build module"
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
-
- # Insert the module
- doins nvidia.${KV_OBJ}
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you need to load the module automatically on boot up you need"
- einfo "to add \"nvidia\" to /etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
- echo
- einfo "Please note that the driver name is nvidia.${KV_OBJ}, not NVdriver"
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.6106-r1.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.6106-r1.ebuild
deleted file mode 100644
index 5c7b9c991175..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.6106-r1.ebuild
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.6106-r1.ebuild,v 1.3 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils kmod
-
-X86_PKG_V="pkg1"
-AMD64_PKG_V="pkg2"
-NV_V="${PV/1.0./1.0-}"
-X86_NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${NV_V}"
-
-DESCRIPTION="Linux kernel module for the NVIDIA X11 driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="x86? (ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${X86_NV_PACKAGE}-${X86_PKG_V}.run)
- amd64? (http://download.nvidia.com/XFree86/Linux-x86_64/${NV_V}/${AMD64_NV_PACKAGE}-${AMD64_PKG_V}.run)"
-
-if use x86; then
- PKG_V="${X86_PKG_V}"
- NV_PACKAGE="${X86_NV_PACKAGE}"
-elif use amd64; then
- PKG_V="${AMD64_PKG_V}"
- NV_PACKAGE="${AMD64_NV_PACKAGE}"
-fi
-
-S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv"
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86 -amd64"
-RESTRICT="nostrip"
-IUSE=""
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-KMOD_SOURCES="none"
-
-mtrr_check() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-}
-
-pkg_setup() {
- mtrr_check
-}
-
-src_unpack() {
- # Let the kmod eclass set the variables for us
- kmod_src_unpack
-
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only
-
- # Add patches below, with a breif description.
- # 1) SYSFS supported by nvidia
- # 2) minion.de patches not released yet
-
- cd ${S}
-
- # Add koutput compile time support... this is hackish
- epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-koutput-support.patch
-
- # if you set this then it's your own fault when stuff breaks :)
- [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile.*
-}
-
-src_compile() {
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- if is_kernel 2 5 || is_kernel 2 6
- then
- unset ARCH
- fi
- make IGNORE_CC_MISMATCH="yes" SYSSRC="${KERNEL_DIR}" KVOUT="${KV_OUTPUT}" \
- clean module V=1 || die "Failed to build module"
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
-
- # Insert the module
- doins nvidia.${KV_OBJ}
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you need to load the module automatically on boot up you need"
- einfo "to add \"nvidia\" to /etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
- echo
- einfo "Please note that the driver name is \"nvidia\", not \"NVdriver\""
- echo
- einfo "This module will now work correctly under udev, you do not need to"
- einfo "manually create the devices anymore."
- echo
-}
diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.6111-r2.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.6111-r2.ebuild
deleted file mode 100644
index b93771646c7d..000000000000
--- a/media-video/nvidia-kernel/nvidia-kernel-1.0.6111-r2.ebuild
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.6111-r2.ebuild,v 1.2 2004/11/07 02:01:13 cyfred Exp $
-
-inherit eutils kmod
-
-X86_PKG_V="pkg1"
-AMD64_PKG_V="pkg2"
-NV_V="${PV/1.0./1.0-}"
-X86_NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}"
-AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${NV_V}"
-
-DESCRIPTION="Linux kernel module for the NVIDIA X11 driver"
-HOMEPAGE="http://www.nvidia.com/"
-SRC_URI="x86? (ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${X86_NV_PACKAGE}-${X86_PKG_V}.run)
- amd64? (http://download.nvidia.com/XFree86/Linux-x86_64/${NV_V}/${AMD64_NV_PACKAGE}-${AMD64_PKG_V}.run)"
-
-if use x86; then
- PKG_V="${X86_PKG_V}"
- NV_PACKAGE="${X86_NV_PACKAGE}"
-elif use amd64; then
- PKG_V="${AMD64_PKG_V}"
- NV_PACKAGE="${AMD64_NV_PACKAGE}"
-fi
-
-S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv"
-
-# The slot needs to be set to $KV to prevent unmerges of modules for other kernels.
-LICENSE="NVIDIA"
-SLOT="${KV}"
-KEYWORDS="-* -x86 -amd64"
-RESTRICT="nostrip"
-IUSE=""
-
-DEPEND="virtual/linux-sources"
-export _POSIX2_VERSION="199209"
-
-KMOD_SOURCES="none"
-
-mtrr_check() {
- if [ ! -f /proc/mtrr ]
- then
- eerror "This version needs MTRR support for most chipsets!"
- eerror "Please enable MTRR support in your kernel config, found at:"
- eerror
- eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support"
- eerror
- eerror "and recompile your kernel ..."
- die "MTRR support not detected!"
- fi
-}
-
-pkg_setup() {
- mtrr_check
-}
-
-src_unpack() {
- # Let the kmod eclass set the variables for us
- kmod_src_unpack
-
- cd ${WORKDIR}
- bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only
-
- # Add patches below, with a breif description.
- # 1) SYSFS supported by nvidia
- # 2) minion.de patches not released yet
-
- cd ${S}
-
- # Fix up the removal of PM_SAVE_STATE in kernels > 2.6.8
- epatch ${FILESDIR}/${PV}/power-suspend-2.6.9-changes.patch
- # Update pci stuff to work with irqroutes being changed in kernels
- epatch ${FILESDIR}/${PV}/nv_enable_pci.patch
- # Fix VMALLOC_RESERVE issues with the new 2.6.9 release candidates
- epatch ${FILESDIR}/${PV}/vmalloc-reserve.patch
- # Port pci_find_class() -> pci_get_class() for >= 2.6.9-rc2
- epatch ${FILESDIR}/${PV}/nv-pci_find_class.patch
- # Fix remap_page_range() -> remap_pfn_range() for >= 2.6.9-rc2
- epatch ${FILESDIR}/${PV}/nv-remap-range.patch
-
- # TODO Combine the above patches into one
-
- # if you set this then it's your own fault when stuff breaks :)
- [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile.*
-}
-
-src_compile() {
- # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been
- # updated but the running kernel is still compiled with an older gcc. This is
- # needed for chrooted building, where the sanity check detects the gcc of the
- # kernel outside the chroot rather than within.
- if is_kernel 2 5 || is_kernel 2 6
- then
- unset ARCH
- fi
- make IGNORE_CC_MISMATCH="yes" SYSSRC="${KERNEL_DIR}" SYSOUT="${KV_OUTPUT}" \
- clean module V=1 || die "Failed to build module"
-}
-
-src_install() {
- # The driver goes into the standard modules location
- insinto /lib/modules/${KV}/video
-
- # Insert the module
- doins nvidia.${KV_OBJ}
-
- # Add the aliases
- insinto /etc/modules.d
- newins ${FILESDIR}/nvidia-1.1 nvidia
-
- # Docs
- dodoc ${S}/README
-
- # The device creation script
- into /
- newsbin ${S}/makedevices.sh NVmakedevices.sh
-}
-
-pkg_postinst() {
- if [ "${ROOT}" = "/" ]
- then
- # Update module dependency
- [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules
- if [ ! -e /dev/.devfsd ] && [ ! -e /dev/.udev ] && [ -x /sbin/NVmakedevices.sh ]
- then
- /sbin/NVmakedevices.sh >/dev/null 2>&1
- fi
- fi
-
- echo
- einfo "If you need to load the module automatically on boot up you need"
- einfo "to add \"nvidia\" to /etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
- echo
- einfo "Please note that the driver name is \"nvidia\", not \"NVdriver\""
- echo
- einfo "This module will now work correctly under udev, you do not need to"
- einfo "manually create the devices anymore."
- echo
-}