aboutsummaryrefslogtreecommitdiff
path: root/system/nvidia-legacy96-kernel
diff options
context:
space:
mode:
authorDavid Spencer <baildon.research@googlemail.com>2015-12-15 22:33:55 +0000
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2016-01-17 09:40:16 +0700
commit0c01d1491152c8ce0fff89631338f6fc5305e9e2 (patch)
tree41fc47970d34d9706e1961f4998626eaa69c79aa /system/nvidia-legacy96-kernel
parentd11a55a095f3f7d0a7fa409e361177c7394f4843 (diff)
nvidia-legacy96-kernel: Removed (fails with xorg-server-1.18).
Signed-off-by: David Spencer <baildon.research@googlemail.com>
Diffstat (limited to 'system/nvidia-legacy96-kernel')
-rw-r--r--system/nvidia-legacy96-kernel/README6
-rw-r--r--system/nvidia-legacy96-kernel/doinst.sh3
-rw-r--r--system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.SlackBuild102
-rw-r--r--system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.info10
-rw-r--r--system/nvidia-legacy96-kernel/patches/173.14.36-37.patch81
-rw-r--r--system/nvidia-legacy96-kernel/patches/173.14.37-38.patch888
-rw-r--r--system/nvidia-legacy96-kernel/slack-desc19
7 files changed, 0 insertions, 1109 deletions
diff --git a/system/nvidia-legacy96-kernel/README b/system/nvidia-legacy96-kernel/README
deleted file mode 100644
index a73175cdcc398..0000000000000
--- a/system/nvidia-legacy96-kernel/README
+++ /dev/null
@@ -1,6 +0,0 @@
-This is the kernel-module needed by the proprietary binary nvidia driver.
-You also need the nvidia-legacy96-driver package from SlackBuilds.org.
-
-To build the package for a kernel different from the running one,
-start the script setting the KERNEL variable as in
- KERNEL=2.6.33.7 ./nvidia-legacy96-kernel.SlackBuild
diff --git a/system/nvidia-legacy96-kernel/doinst.sh b/system/nvidia-legacy96-kernel/doinst.sh
deleted file mode 100644
index dcfb80855f074..0000000000000
--- a/system/nvidia-legacy96-kernel/doinst.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-
-chroot . /sbin/depmod -a @KERNEL@ 2>/dev/null
-
diff --git a/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.SlackBuild b/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.SlackBuild
deleted file mode 100644
index 736b14a06994b..0000000000000
--- a/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.SlackBuild
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for nvidia-legacy96-kernel
-
-# Copyright 2007-2011 Heinz Wiesinger, Amsterdam, The Netherlands
-# Copyright 2013 Edward Koenig, Vancouver, WA, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Thanks to Robby Workman for suggestions to improve this script.
-
-# Maintainer: Edward Koenig <kingbeowulf[at]gmail.com>
-
-PRGNAM=nvidia-legacy96-kernel
-VERSION=96.43.23
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-NVPKG="pkg1"
-
-KERNEL=${KERNEL:-$(uname -r)}
-KERNELPATH=${KERNELPATH:-/lib/modules/${KERNEL}/build}
-
-PKGVER=${VERSION}_$(echo $KERNEL | tr - _)
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-
-if [ "$ARCH" = "i486" ]; then
- TARGET="x86"
-elif [ "$ARCH" = "i686" ]; then
- TARGET="x86"
-elif [ "$ARCH" = "x86_64" ]; then
- TARGET="x86_64"
- NVPKG="pkg2"
-fi
-
-unset ARCH
-
-SRCNAM=NVIDIA-Linux-$TARGET-$VERSION-$NVPKG
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=${PKG:-$TMP/package-$PRGNAM}
-OUTPUT=${OUTPUT:-/tmp}
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP || exit 1
-rm -rf $SRCNAM
-sh $CWD/$SRCNAM.run --extract-only || exit 1
-cd $SRCNAM || exit 1
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-cd usr/src/nv/ || exit 1
-
-# backported patches courtesy of https://aur.archlinux.org/packages/nvidia-96xx/
-patch -p1 -i $CWD/patches/173.14.36-37.patch || exit 1
-patch -p1 -i $CWD/patches/173.14.37-38.patch || exit 1
-
-make SYSSRC=$KERNELPATH module || exit 1
-
-mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video
-install -m 0664 nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$PKGVER
-cp -a README $PKG/usr/doc/$PRGNAM-$PKGVER
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$PKGVER/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-sed "s%@KERNEL@%$KERNEL%" $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$PKGVER-$TARGET-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.info b/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.info
deleted file mode 100644
index b3d93e9698b6a..0000000000000
--- a/system/nvidia-legacy96-kernel/nvidia-legacy96-kernel.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="nvidia-legacy96-kernel"
-VERSION="96.43.23"
-HOMEPAGE="http://www.nvidia.com"
-DOWNLOAD="ftp://download.nvidia.com/XFree86/Linux-x86/96.43.23/NVIDIA-Linux-x86-96.43.23-pkg1.run"
-MD5SUM="21f6eb657e651a83ff4271438122b379"
-DOWNLOAD_x86_64="ftp://download.nvidia.com/XFree86/Linux-x86_64/96.43.23/NVIDIA-Linux-x86_64-96.43.23-pkg2.run"
-MD5SUM_x86_64="dd8546e5ae7d10da072306e5f13952b8"
-REQUIRES=""
-MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
diff --git a/system/nvidia-legacy96-kernel/patches/173.14.36-37.patch b/system/nvidia-legacy96-kernel/patches/173.14.36-37.patch
deleted file mode 100644
index 843259aea72e6..0000000000000
--- a/system/nvidia-legacy96-kernel/patches/173.14.36-37.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-diff -pur 173.14.36/conftest.sh 173.14.37/conftest.sh
---- 173.14.36/conftest.sh 2012-09-11 23:36:21.000000000 +0400
-+++ 173.14.37/conftest.sh 2013-03-07 05:17:45.000000000 +0400
-@@ -127,6 +127,7 @@ build_cflags() {
- if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
- MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default"
- MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default"
-+ MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/arch/x86/include/uapi"
- fi
- if [ "$XEN_PRESENT" != "0" ]; then
- MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-xen $MACH_CFLAGS"
-@@ -136,16 +137,21 @@ build_cflags() {
- if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
- MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default"
- MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default"
-+ MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/arch/x86/include/uapi"
- fi
- if [ "$XEN_PRESENT" != "0" ]; then
- MACH_CFLAGS="-I$HEADERS/asm/mach-xen $MACH_CFLAGS"
- fi
- fi
-
-- CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"
-+ CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS $AUTOCONF_CFLAGS"
-+ CFLAGS="$CFLAGS -I$HEADERS -I$HEADERS/uapi -I$OUTPUT/include/generated/uapi"
-
- if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
-- CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$OUTPUT/arch/x86/include/generated"
-+ CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include"
-+ CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include/uapi"
-+ CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated"
-+ CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated/uapi"
- fi
- if [ -n "$BUILD_PARAMS" ]; then
- CFLAGS="$CFLAGS -D$BUILD_PARAMS"
-@@ -1453,7 +1459,8 @@ case "$6" in
- FILE="linux/version.h"
- SELECTED_MAKEFILE=""
-
-- if [ -f $HEADERS/$FILE -o -f $OUTPUT/include/$FILE ]; then
-+ if [ -f $HEADERS/$FILE -o -f $OUTPUT/include/$FILE -o \
-+ -f $OUTPUT/include/generated/uapi/$FILE ]; then
- #
- # We are either looking at a configured kernel source
- # tree or at headers shipped for a specific kernel.
-diff -pur 173.14.36/nv.c 173.14.37/nv.c
---- 173.14.36/nv.c 2012-09-11 23:36:21.000000000 +0400
-+++ 173.14.37/nv.c 2013-03-07 05:17:44.000000000 +0400
-@@ -2607,9 +2607,8 @@ int nv_kern_mmap(
- NV_PRINT_AT(NV_DBG_MEMINFO, at);
- nv_vm_list_page_count(&at->page_table[i], pages);
-
-- /* prevent the swapper from swapping it out */
-- /* mark the memory i/o so the buffers aren't dumped on core dumps */
- vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
-+ vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
- }
-
- NV_VMA_FILE(vma) = file;
-diff -pur 173.14.36/nv-linux.h 173.14.37/nv-linux.h
---- 173.14.36/nv-linux.h 2012-09-11 23:36:21.000000000 +0400
-+++ 173.14.37/nv-linux.h 2013-03-07 05:17:45.000000000 +0400
-@@ -64,6 +64,18 @@
- #include <linux/module.h>
- #include <linux/kmod.h>
-
-+#include <linux/mm.h>
-+
-+#if !defined(VM_RESERVED)
-+#define VM_RESERVED 0x00000000
-+#endif
-+#if !defined(VM_DONTEXPAND)
-+#define VM_DONTEXPAND 0x00000000
-+#endif
-+#if !defined(VM_DONTDUMP)
-+#define VM_DONTDUMP 0x00000000
-+#endif
-+
- #include <linux/init.h> /* module_init, module_exit */
- #include <linux/types.h> /* pic_t, size_t, __u32, etc */
- #include <linux/errno.h> /* error codes */
diff --git a/system/nvidia-legacy96-kernel/patches/173.14.37-38.patch b/system/nvidia-legacy96-kernel/patches/173.14.37-38.patch
deleted file mode 100644
index bd8e94ce95014..0000000000000
--- a/system/nvidia-legacy96-kernel/patches/173.14.37-38.patch
+++ /dev/null
@@ -1,888 +0,0 @@
-diff -pur 1/conftest.sh 2/conftest.sh
---- 1/conftest.sh 2012-09-01 02:04:44.000000000 +0400
-+++ 2/conftest.sh 2013-09-17 20:11:54.586886368 +0400
-@@ -1202,6 +1202,99 @@ compile_test() {
- fi
- ;;
-
-+ proc_create_data)
-+ #
-+ # Determine if the proc_create_data() function is present.
-+ #
-+ echo "$CONFTEST_PREAMBLE
-+ #include <linux/proc_fs.h>
-+ void conftest_proc_create_data(void) {
-+ proc_create_data();
-+ }" > conftest$$.c
-+
-+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
-+ rm -f conftest$$.c
-+
-+ if [ -f conftest$$.o ]; then
-+ rm -f conftest$$.o
-+ echo "#undef NV_PROC_CREATE_DATA_PRESENT" >> conftest.h
-+ return
-+ else
-+ echo "#define NV_PROC_CREATE_DATA_PRESENT" >> conftest.h
-+ return
-+ fi
-+ ;;
-+
-+
-+ pde_data)
-+ #
-+ # Determine if the PDE_DATA() function is present.
-+ #
-+ echo "$CONFTEST_PREAMBLE
-+ #include <linux/proc_fs.h>
-+ void conftest_PDE_DATA(void) {
-+ PDE_DATA();
-+ }" > conftest$$.c
-+
-+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
-+ rm -f conftest$$.c
-+
-+ if [ -f conftest$$.o ]; then
-+ rm -f conftest$$.o
-+ echo "#undef NV_PDE_DATA_PRESENT" >> conftest.h
-+ return
-+ else
-+ echo "#define NV_PDE_DATA_PRESENT" >> conftest.h
-+ return
-+ fi
-+ ;;
-+
-+ proc_remove)
-+ #
-+ # Determine if the proc_remove() function is present.
-+ #
-+ echo "$CONFTEST_PREAMBLE
-+ #include <linux/proc_fs.h>
-+ void conftest_proc_remove(void) {
-+ proc_remove();
-+ }" > conftest$$.c
-+
-+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
-+ rm -f conftest$$.c
-+
-+ if [ -f conftest$$.o ]; then
-+ rm -f conftest$$.o
-+ echo "#undef NV_PROC_REMOVE_PRESENT" >> conftest.h
-+ return
-+ else
-+ echo "#define NV_PROC_REMOVE_PRESENT" >> conftest.h
-+ return
-+ fi
-+ ;;
-+
-+ get_num_physpages)
-+ #
-+ # Determine if the get_num_physpages() function is present.
-+ #
-+ echo "$CONFTEST_PREAMBLE
-+ #include <linux/mm.h>
-+ void conftest_get_num_physpages(void) {
-+ get_num_physpages(NULL);
-+ }" > conftest$$.c
-+
-+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
-+ rm -f conftest$$.c
-+
-+ if [ -f conftest$$.o ]; then
-+ rm -f conftest$$.o
-+ echo "#undef NV_GET_NUM_PHYSPAGES_PRESENT" >> conftest.h
-+ return
-+ else
-+ echo "#define NV_GET_NUM_PHYSPAGES_PRESENT" >> conftest.h
-+ return
-+ fi
-+ ;;
-+
- esac
- }
-
-diff -pur 1/Makefile.kbuild 2/Makefile.kbuild
---- 1/Makefile.kbuild 2012-09-01 02:04:44.000000000 +0400
-+++ 2/Makefile.kbuild 2013-09-17 20:11:54.586886368 +0400
-@@ -189,7 +189,11 @@ ifneq ($(PATCHLEVEL), 4)
- agp_memory \
- scatterlist \
- file_operations \
-- sg_init_table
-+ sg_init_table \
-+ proc_create_data \
-+ pde_data \
-+ proc_remove \
-+ get_num_physpages
- else
- COMPILE_TESTS = \
- remap_page_range \
-diff -pur 1/Makefile.nvidia 2/Makefile.nvidia
---- 1/Makefile.nvidia 2012-09-01 02:04:44.000000000 +0400
-+++ 2/Makefile.nvidia 2013-09-17 20:11:54.586886368 +0400
-@@ -62,7 +62,10 @@ COMPILE_TESTS = \
- smp_call_function \
- proc_dir_entry \
- scatterlist \
-- file_operations
-+ file_operations \
-+ proc_create_data \
-+ pde_data \
-+ proc_remove
-
- DEFINES+=$(EXTRA_DEFINES)
-
-diff -pur 1/nv.c 2/nv.c
---- 1/nv.c 2012-09-01 02:04:44.000000000 +0400
-+++ 2/nv.c 2013-09-17 20:25:21.970607458 +0400
-@@ -163,6 +163,91 @@ static int nvl_remove_alloc(nv_
- /* lock-related functions that should only be called from this file */
- static void nv_lock_init_locks(nv_state_t *nv);
-
-+#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-+#define NV_SET_PROC_ENTRY_OWNER(entry) ((entry)->owner = THIS_MODULE)
-+#else
-+#define NV_SET_PROC_ENTRY_OWNER(entry)
-+#endif
-+
-+#if defined(NV_PROC_CREATE_DATA_PRESENT)
-+# define NV_CREATE_PROC_ENTRY(name,mode,parent,fops,__data) \
-+ proc_create_data(name, __mode, parent, fops, __data)
-+#else
-+# define NV_CREATE_PROC_ENTRY(name,mode,parent,fops,__data) \
-+ ({ \
-+ struct proc_dir_entry *__entry; \
-+ __entry = create_proc_entry(name, mode, parent); \
-+ if (__entry != NULL) \
-+ { \
-+ NV_SET_PROC_ENTRY_OWNER(__entry); \
-+ __entry->proc_fops = fops; \
-+ __entry->data = (__data); \
-+ } \
-+ __entry; \
-+ })
-+#endif
-+
-+#define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \
-+ ({ \
-+ struct proc_dir_entry *__entry; \
-+ int __mode = (S_IFREG | S_IRUGO); \
-+ const struct file_operations *fops = &nv_kern_##__name##_fops; \
-+ if (fops->write != 0) \
-+ __mode |= S_IWUSR; \
-+ __entry = NV_CREATE_PROC_ENTRY(filename, __mode, parent, fops, \
-+ __data); \
-+ __entry; \
-+ })
-+
-+/*
-+ * proc_mkdir_mode exists in Linux 2.6.9, but isn't exported until Linux 3.0.
-+ * Use the older interface instead unless the newer interface is necessary.
-+ */
-+#if defined(NV_PROC_REMOVE_PRESENT)
-+# define NV_PROC_MKDIR_MODE(name, mode, parent) \
-+ proc_mkdir_mode(name, mode, parent)
-+#else
-+# define NV_PROC_MKDIR_MODE(name, mode, parent) \
-+ ({ \
-+ struct proc_dir_entry *__entry; \
-+ __entry = create_proc_entry(name, mode, parent); \
-+ if (__entry != NULL) \
-+ NV_SET_PROC_ENTRY_OWNER(__entry); \
-+ __entry; \
-+ })
-+#endif
-+
-+#define NV_CREATE_PROC_DIR(name,parent) \
-+ ({ \
-+ struct proc_dir_entry *__entry; \
-+ int __mode = (S_IFDIR | S_IRUGO | S_IXUGO); \
-+ __entry = NV_PROC_MKDIR_MODE(name, __mode, parent); \
-+ __entry; \
-+ })
-+
-+#if defined(NV_PDE_DATA_PRESENT)
-+# define NV_PDE_DATA(inode) PDE_DATA(inode)
-+#else
-+# define NV_PDE_DATA(inode) PDE(inode)->data
-+#endif
-+
-+#define NV_DEFINE_PROCFS_SINGLE_FILE(__name) \
-+ static int nv_kern_open_##__name( \
-+ struct inode *inode, \
-+ struct file *filep \
-+ ) \
-+ { \
-+ return single_open(filep, nv_kern_read_##__name, \
-+ NV_PDE_DATA(inode)); \
-+ } \
-+ \
-+ static const struct file_operations nv_kern_##__name##_fops = { \
-+ .owner = THIS_MODULE, \
-+ .open = nv_kern_open_##__name, \
-+ .read = seq_read, \
-+ .llseek = seq_lseek, \
-+ .release = single_release, \
-+ };
-
- /***
- *** EXPORTS to Linux Kernel
-@@ -190,13 +275,6 @@ void nv_kern_rc_timer(unsigned
- static int nv_kern_apm_event(struct pm_dev *, pm_request_t, void *);
- #endif
-
--static int nv_kern_read_cardinfo(char *, char **, off_t off, int, int *, void *);
--static int nv_kern_read_status(char *, char **, off_t off, int, int *, void *);
--static int nv_kern_read_registry(char *, char **, off_t off, int, int *, void *);
--static int nv_kern_read_agpinfo(char *, char **, off_t off, int, int *, void *);
--static int nv_kern_read_version(char *, char **, off_t off, int, int *, void *);
--static int nv_kern_read_text_file(char *, char **, off_t off, int, int *, void *);
--
- int nv_kern_ctl_open(struct inode *, struct file *);
- int nv_kern_ctl_close(struct inode *, struct file *);
- unsigned int nv_kern_ctl_poll(struct file *, poll_table *);
-@@ -490,156 +568,17 @@ static struct pci_dev* nv_get_pci_device
- return NULL;
- }
-
--static void nvos_proc_create(void)
-+static int
-+nv_kern_read_text_file(
-+ struct seq_file *s,
-+ void *v
-+)
- {
--#ifdef CONFIG_PROC_FS
-- struct pci_dev *dev;
-- U032 j, i = 0;
-- char name[6];
--
-- struct proc_dir_entry *entry;
-- struct proc_dir_entry *proc_nvidia_agp, *proc_nvidia_cards;
--
-- /* world readable directory */
-- int d_flags = S_IFDIR | S_IRUGO | S_IXUGO;
--
-- /* world readable file */
-- int flags = S_IFREG | S_IRUGO;
--
-- nv_state_t *nv;
-- nv_linux_state_t *nvl;
--
-- proc_nvidia = create_proc_entry("driver/nvidia", d_flags, NULL);
-- if (!proc_nvidia)
-- goto failed;
--
-- proc_nvidia_cards = create_proc_entry("cards", d_flags, proc_nvidia);
-- if (!proc_nvidia_cards)
-- goto failed;
--
-- proc_nvidia_warnings = create_proc_entry("warnings", d_flags, proc_nvidia);
-- if (!proc_nvidia_warnings)
-- goto failed;
--
-- proc_nvidia_patches = create_proc_entry("patches", d_flags, proc_nvidia);
-- if (!proc_nvidia_patches)
-- goto failed;
--
-- /*
-- * Set the module owner to ensure that the reference
-- * count reflects accesses to the proc files.
-- */
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- proc_nvidia->owner = THIS_MODULE;
-- proc_nvidia_cards->owner = THIS_MODULE;
-- proc_nvidia_warnings->owner = THIS_MODULE;
-- proc_nvidia_patches->owner = THIS_MODULE;
--#endif
--
-- for (j = 0; j < num_nv_devices; j++)
-- {
-- nvl = &nv_linux_devices[j];
-- nv = NV_STATE_PTR(nvl);
--
-- dev = nv_get_pci_device(nv);
-- if (!dev)
-- break;
--
-- sprintf(name, "%d", i++);
-- entry = create_proc_entry(name, flags, proc_nvidia_cards);
-- if (!entry) {
-- NV_PCI_DEV_PUT(dev);
-- goto failed;
-- }
--
-- entry->data = nv;
-- entry->read_proc = nv_kern_read_cardinfo;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--
-- if (nvos_find_agp_capability(dev)) {
-- /*
-- * Create the /proc/driver/nvidia/agp/{status,host-bridge,card}
-- * entries now that we know there's AGP hardware.
-- */
-- entry = create_proc_entry("agp", d_flags, proc_nvidia);
-- if (!entry) {
-- NV_PCI_DEV_PUT(dev);
-- goto failed;
-- }
--
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
-- proc_nvidia_agp = entry;
--
-- entry = create_proc_entry("status", flags, proc_nvidia_agp);
-- if (!entry) {
-- NV_PCI_DEV_PUT(dev);
-- goto failed;
-- }
--
-- entry->data = nv;
-- entry->read_proc = nv_kern_read_status;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--
-- entry = create_proc_entry("host-bridge", flags, proc_nvidia_agp);
-- if (!entry) {
-- NV_PCI_DEV_PUT(dev);
-- goto failed;
-- }
--
-- entry->data = NULL;
-- entry->read_proc = nv_kern_read_agpinfo;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--
-- entry = create_proc_entry("card", flags, proc_nvidia_agp);
-- if (!entry) {
-- NV_PCI_DEV_PUT(dev);
-- goto failed;
-- }
--
-- entry->data = nv;
-- entry->read_proc = nv_kern_read_agpinfo;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
-- }
--
-- NV_PCI_DEV_PUT(dev);
-- }
--
-- entry = create_proc_entry("version", flags, proc_nvidia);
-- if (!entry)
-- goto failed;
--
-- entry->read_proc = nv_kern_read_version;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--
-- entry = create_proc_entry("registry", flags, proc_nvidia);
-- if (!entry)
-- goto failed;
--
-- entry->read_proc = nv_kern_read_registry;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--
-- return;
--
--failed:
-- nv_printf(NV_DBG_ERRORS, "NVRM: failed to create /proc entries!\n");
-- nvos_proc_remove_all(proc_nvidia);
--#endif
-+ return seq_puts(s, s->private);
- }
-
-+NV_DEFINE_PROCFS_SINGLE_FILE(text_file);
-+
- static void
- nvos_proc_add_text_file(
- struct proc_dir_entry *parent,
-@@ -647,26 +586,15 @@ nvos_proc_add_text_file(
- const char *text
- )
- {
--#ifdef CONFIG_PROC_FS
-- struct proc_dir_entry *entry;
--
-- /* world readable file */
-- int flags = S_IFREG | S_IRUGO;
--
-- entry = create_proc_entry(filename, flags, parent);
-- if (!entry) return;
--
-- entry->data = (void *)text;
-- entry->read_proc = nv_kern_read_text_file;
--#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-- entry->owner = THIS_MODULE;
--#endif
--#endif
-+ NV_CREATE_PROC_FILE(filename, parent, text_file, (void *)text);
- }
-
- #ifdef CONFIG_PROC_FS
- static void nvos_proc_remove_all(struct proc_dir_entry *entry)
- {
-+#if defined(NV_PROC_REMOVE_PRESENT)
-+ proc_remove(entry);
-+#else
- while (entry) {
- struct proc_dir_entry *next = entry->next;
- if (entry->subdir)
-@@ -676,6 +604,7 @@ static void nvos_proc_remove_all(struct
- break;
- entry = next;
- }
-+#endif
- }
- #endif
-
-@@ -2848,18 +2777,17 @@ void NV_API_CALL nv_set_dma_address_s
- }
-
- static int
--nv_kern_read_cardinfo(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
-+nv_kern_read_cardinfo(
-+ struct seq_file *s,
-+ void *v
-+)
- {
-+ nv_state_t *nv = s->private;
- struct pci_dev *dev;
- char *type, *fmt, tmpstr[NV_DEVICE_NAME_LENGTH];
-- int len = 0, status;
-+ int status;
- U032 vbios_rev1, vbios_rev2, vbios_rev3, vbios_rev4, vbios_rev5;
-
-- nv_state_t *nv;
-- nv = (nv_state_t *) data;
-- *eof = 1;
--
- dev = nv_get_pci_device(nv);
- if (!dev)
- return 0;
-@@ -2869,61 +2797,61 @@ nv_kern_read_cardinfo(char *page, char *
- strcpy (tmpstr, "Unknown");
- }
-
-- len += sprintf(page+len, "Model: \t\t %s\n", tmpstr);
-- len += sprintf(page+len, "IRQ: \t\t %d\n", nv->interrupt_line);
-+ seq_printf(s, "Model: \t\t %s\n", tmpstr);
-+ seq_printf(s, "IRQ: \t\t %d\n", nv->interrupt_line);
-
- status = rm_get_vbios_version(nv, &vbios_rev1, &vbios_rev2,
- &vbios_rev3, &vbios_rev4, &vbios_rev5);
-
- if (status < 0) {
- /* before rm_init_adapter */
-- len += sprintf(page+len, "Video BIOS: \t ??.??.??.??.??\n");
-+ seq_printf(s, "Video BIOS: \t ??.??.??.??.??\n");
- } else {
- fmt = "Video BIOS: \t %02x.%02x.%02x.%02x.%02x\n";
-- len += sprintf(page+len, fmt, vbios_rev1, vbios_rev2, vbios_rev3,
-- vbios_rev4, vbios_rev5);
-+ seq_printf(s, fmt, vbios_rev1, vbios_rev2, vbios_rev3, vbios_rev4,
-+ vbios_rev5);
- }
-
- if (nvos_find_agp_capability(dev)) type = "AGP";
- else if (nvos_find_pci_express_capability(dev)) type = "PCI-E";
- else type = "PCI";
-- len += sprintf(page+len, "Card Type: \t %s\n", type);
-+ seq_printf(s, "Card Type: \t %s\n", type);
-
- // Report the number of bits set in dev->dma_mask
-- len += sprintf(page+len, "DMA Size: \t %d bits\n",
-- nv_count_bits(dev->dma_mask));
-- len += sprintf(page+len, "DMA Mask: \t 0x%llx\n", dev->dma_mask);
-+ seq_printf(s, "DMA Size: \t %d bits\n", nv_count_bits(dev->dma_mask));
-+ seq_printf(s, "DMA Mask: \t 0x%llx\n", dev->dma_mask);
-
- NV_PCI_DEV_PUT(dev);
-- return len;
-+ return 0;
- }
-
-+NV_DEFINE_PROCFS_SINGLE_FILE(cardinfo);
-+
- static int
--nv_kern_read_version(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
-+nv_kern_read_version(
-+ struct seq_file *s,
-+ void *v
-+)
- {
-- int len = 0;
-- *eof = 1;
--
-- len += sprintf(page+len, "NVRM version: %s\n", pNVRM_ID);
-- len += sprintf(page+len, "GCC version: %s\n", NV_COMPILER);
--
-- return len;
-+ seq_printf(s, "NVRM version: %s\n", pNVRM_ID);
-+ seq_printf(s, "GCC version: %s\n", NV_COMPILER);
-+
-+ return 0;
- }
-
-+NV_DEFINE_PROCFS_SINGLE_FILE(version);
-+
- static int
--nv_kern_read_agpinfo(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-+nv_kern_read_agpinfo(
-+ struct seq_file *s,
-+ void *v
-+)
-+ {
-+ nv_state_t *nv = s->private;
- struct pci_dev *dev;
- char *fw, *sba;
- u8 cap_ptr;
- u32 status, command, agp_rate;
-- int len = 0;
--
-- nv_state_t *nv;
-- nv = (nv_state_t *) data;
-- *eof = 1;
-
- if (nv) {
- dev = nv_get_pci_device(nv);
-@@ -2934,13 +2862,12 @@ nv_kern_read_agpinfo(char *page, char **
- if (!dev)
- return 0;
-
-- len += sprintf(page+len, "Host Bridge: \t ");
-+ seq_printf(s, "Host Bridge: \t ");
-
- #if defined(CONFIG_PCI_NAMES)
-- len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
-+ seq_printf(s, "%s\n", NV_PCI_DEVICE_NAME(dev));
- #else
-- len += sprintf(page+len, "PCI device %04x:%04x\n",
-- dev->vendor, dev->device);
-+ seq_printf(s, "PCI device %04x:%04x\n", dev->vendor, dev->device);
- #endif
- }
-
-@@ -2953,40 +2880,40 @@ nv_kern_read_agpinfo(char *page, char **
- fw = (status & 0x00000010) ? "Supported" : "Not Supported";
- sba = (status & 0x00000200) ? "Supported" : "Not Supported";
-
-- len += sprintf(page+len, "Fast Writes: \t %s\n", fw);
-- len += sprintf(page+len, "SBA: \t\t %s\n", sba);
-+ seq_printf(s, "Fast Writes: \t %s\n", fw);
-+ seq_printf(s, "SBA: \t\t %s\n", sba);
-
- agp_rate = status & 0x7;
- if (status & 0x8) // agp 3.0
- agp_rate <<= 2;
-
-- len += sprintf(page+len, "AGP Rates: \t %s%s%s%s\n",
-+ seq_printf(s, "AGP Rates: \t %s%s%s%s\n",
- (agp_rate & 0x00000008) ? "8x " : "",
- (agp_rate & 0x00000004) ? "4x " : "",
- (agp_rate & 0x00000002) ? "2x " : "",
- (agp_rate & 0x00000001) ? "1x " : "");
-
-- len += sprintf(page+len, "Registers: \t 0x%08x:0x%08x\n", status, command);
-+ seq_printf(s, "Registers: \t 0x%08x:0x%08x\n", status, command);
-
- NV_PCI_DEV_PUT(dev);
-- return len;
-+ return 0;
- }
-
-+NV_DEFINE_PROCFS_SINGLE_FILE(agpinfo);
-+
- static int
--nv_kern_read_status(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-+nv_kern_read_agp_status(
-+ struct seq_file *s,
-+ void *v
-+)
-+ {
-+ nv_state_t *nv = s->private;
- struct pci_dev *dev;
- char *fw, *sba, *drv;
-- int len = 0;
- u8 cap_ptr;
- u32 scratch;
- u32 status, command, agp_rate;
-
-- nv_state_t *nv;
-- nv = (nv_state_t *) data;
-- *eof = 1;
--
- dev = nvos_get_agp_device_by_class(PCI_CLASS_BRIDGE_HOST);
- if (!dev)
- return 0;
-@@ -3007,10 +2934,10 @@ nv_kern_read_status(char *page, char **s
- command &= scratch;
-
- if (NV_AGP_ENABLED(nv) && (command & 0x100)) {
-- len += sprintf(page+len, "Status: \t Enabled\n");
-+ seq_printf(s, "Status: \t Enabled\n");
-
- drv = NV_OSAGP_ENABLED(nv) ? "AGPGART" : "NVIDIA";
-- len += sprintf(page+len, "Driver: \t %s\n", drv);
-+ seq_printf(s, "Driver: \t %s\n", drv);
-
- // mask off agp rate.
- // If this is agp 3.0, we need to shift the value
-@@ -3018,17 +2945,17 @@ nv_kern_read_status(char *page, char **s
- if (status & 0x8) // agp 3.0
- agp_rate <<= 2;
-
-- len += sprintf(page+len, "AGP Rate: \t %dx\n", agp_rate);
-+ seq_printf(s, "AGP Rate: \t %dx\n", agp_rate);
-
- fw = (command & 0x00000010) ? "Enabled" : "Disabled";
-- len += sprintf(page+len, "Fast Writes: \t %s\n", fw);
-+ seq_printf(s, "Fast Writes: \t %s\n", fw);
-
- sba = (command & 0x00000200) ? "Enabled" : "Disabled";
-- len += sprintf(page+len, "SBA: \t\t %s\n", sba);
-+ seq_printf(s, "SBA: \t\t %s\n", sba);
- } else {
- int agp_config = 0;
-
-- len += sprintf(page+len, "Status: \t Disabled\n\n");
-+ seq_printf(s, "Status: \t Disabled\n\n");
-
- /*
- * If we find AGP is disabled, but the RM registry indicates it
-@@ -3042,7 +2969,7 @@ nv_kern_read_status(char *page, char **s
- rm_read_registry_dword(nv, "NVreg", "XNvAGP", &agp_config);
-
- if (agp_config != NVOS_AGP_CONFIG_DISABLE_AGP && NV_AGP_FAILED(nv)) {
-- len += sprintf(page+len,
-+ seq_printf(s,
- "AGP initialization failed, please check the ouput \n"
- "of the 'dmesg' command and/or your system log file \n"
- "for additional information on this problem. \n");
-@@ -3050,35 +2977,133 @@ nv_kern_read_status(char *page, char **s
- }
-
- NV_PCI_DEV_PUT(dev);
-- return len;
-+ return 0;
- }
-
-+NV_DEFINE_PROCFS_SINGLE_FILE(agp_status);
-+
- extern nv_parm_t nv_parms[];
- extern char *NVreg_RegistryDwords;
-
- static int
--nv_kern_read_registry(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
-+nv_kern_read_registry(
-+ struct seq_file *s,
-+ void *v
-+)
- {
-- unsigned int i, len = 0;
-+ unsigned int i;
- nv_parm_t *entry;
-- *eof = 1;
-
- for (i = 0; (entry = &nv_parms[i])->name != NULL; i++)
-- len += sprintf(page+len, "%s: %u\n", entry->name, *entry->data);
-+ seq_printf(s, "%s: %u\n", entry->name, *entry->data);
-
-- len += sprintf(page+len, "RegistryDwords: \"%s\"\n",
-- (NVreg_RegistryDwords != NULL) ? NVreg_RegistryDwords : "");
-+ seq_printf(s, "RegistryDwords: \"%s\"\n",
-+ (NVreg_RegistryDwords != NULL) ? NVreg_RegistryDwords : "");
-
-- return len;
-+ return 0;
- }
-
--static int
--nv_kern_read_text_file(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
-+NV_DEFINE_PROCFS_SINGLE_FILE(registry);
-+
-+static void nvos_proc_create(void)
- {
-- *eof = 1;
-- return sprintf(page, "%s", (char *)data);
-+#ifdef CONFIG_PROC_FS
-+ struct pci_dev *dev;
-+ U032 j, i = 0;
-+ char name[6];
-+
-+ struct proc_dir_entry *entry;
-+ struct proc_dir_entry *proc_nvidia_agp, *proc_nvidia_cards;
-+
-+ nv_state_t *nv;
-+ nv_linux_state_t *nvl;
-+
-+ proc_nvidia = NV_CREATE_PROC_DIR("driver/nvidia", NULL);
-+ if (!proc_nvidia)
-+ goto failed;
-+
-+ proc_nvidia_cards = NV_CREATE_PROC_DIR("cards", proc_nvidia);
-+ if (!proc_nvidia_cards)
-+ goto failed;
-+
-+ proc_nvidia_warnings = NV_CREATE_PROC_DIR("warnings", proc_nvidia);
-+ if (!proc_nvidia_warnings)
-+ goto failed;
-+
-+ proc_nvidia_patches = NV_CREATE_PROC_DIR("patches", proc_nvidia);
-+ if (!proc_nvidia_patches)
-+ goto failed;
-+
-+ for (j = 0; j < num_nv_devices; j++)
-+ {
-+ nvl = &nv_linux_devices[j];
-+ nv = NV_STATE_PTR(nvl);
-+
-+ dev = nv_get_pci_device(nv);
-+ if (!dev)
-+ break;
-+
-+ sprintf(name, "%d", i++);
-+ entry = NV_CREATE_PROC_FILE(name, proc_nvidia_cards, cardinfo, nv);
-+ if (!entry) {
-+ NV_PCI_DEV_PUT(dev);
-+ goto failed;
-+ }
-+
-+ if (nvos_find_agp_capability(dev)) {
-+ /*
-+ * Create the /proc/driver/nvidia/agp/{status,host-bridge,card}
-+ * entries now that we know there's AGP hardware.
-+ */
-+ entry = NV_CREATE_PROC_DIR("agp", proc_nvidia);
-+ if (!entry) {
-+ NV_PCI_DEV_PUT(dev);
-+ goto failed;
-+ }
-+
-+#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-+ entry->owner = THIS_MODULE;
-+#endif
-+ proc_nvidia_agp = entry;
-+
-+ entry = NV_CREATE_PROC_FILE("status", proc_nvidia_agp, agp_status,
-+ nv);
-+ if (!entry) {
-+ NV_PCI_DEV_PUT(dev);
-+ goto failed;
-+ }
-+
-+ entry = NV_CREATE_PROC_FILE("host-bridge", proc_nvidia_agp, agpinfo,
-+ NULL);
-+ if (!entry) {
-+ NV_PCI_DEV_PUT(dev);
-+ goto failed;
-+ }
-+
-+ entry = NV_CREATE_PROC_FILE("card", proc_nvidia_agp, agpinfo, nv);
-+ if (!entry) {
-+ NV_PCI_DEV_PUT(dev);
-+ goto failed;
-+ }
-+ }
-+
-+ NV_PCI_DEV_PUT(dev);
-+ }
-+
-+ entry = NV_CREATE_PROC_FILE("version", proc_nvidia, version, NULL);
-+ if (!entry)
-+ goto failed;
-+
-+ entry = NV_CREATE_PROC_FILE("registry", proc_nvidia, registry, NULL);
-+ if (!entry)
-+ goto failed;
-+
-+ return;
-+
-+failed:
-+ nv_printf(NV_DBG_ERRORS, "NVRM: failed to create /proc entries!\n");
-+ nvos_proc_remove_all(proc_nvidia);
-+#endif
- }
-
- /***
-diff -pur 1/nv-i2c.c 2/nv-i2c.c
---- 1/nv-i2c.c 2012-09-01 02:04:44.000000000 +0400
-+++ 2/nv-i2c.c 2013-09-17 20:11:54.590219538 +0400
-@@ -285,8 +285,6 @@ void* NV_API_CALL nv_i2c_add_adapter(nv_
- BOOL NV_API_CALL nv_i2c_del_adapter(nv_state_t *nv, void *data)
- {
- struct i2c_adapter *pI2cAdapter = (struct i2c_adapter *)data;
-- int osstatus = 0;
-- BOOL wasReleased = FALSE;
-
- #if defined(KERNEL_2_4)
- if (!NV_WEAK_SYMBOL_PRESENT(i2c_add_adapter))
-@@ -297,16 +295,11 @@ BOOL NV_API_CALL nv_i2c_del_adapter(nv_s
-
- if (!pI2cAdapter) return FALSE;
-
-- // attempt release with the OS
-- osstatus = i2c_del_adapter(pI2cAdapter);
-+ // release with the OS
-+ i2c_del_adapter(pI2cAdapter);
-+ os_free_mem(pI2cAdapter);
-
-- if (!osstatus)
-- {
-- os_free_mem(pI2cAdapter);
-- wasReleased = TRUE;
-- }
--
-- return wasReleased;
-+ return TRUE;
- }
-
- #else // (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE))
-diff -pur 1/nv-linux.h 2/nv-linux.h
---- 1/nv-linux.h 2012-09-01 02:04:44.000000000 +0400
-+++ 2/nv-linux.h 2013-09-17 20:11:54.590219538 +0400
-@@ -128,6 +128,7 @@
-
- #ifdef CONFIG_PROC_FS
- #include <linux/proc_fs.h>
-+#include <linux/seq_file.h>
- #endif
-
- #ifdef CONFIG_MTRR
-diff -pur 1/os-interface.c 2/os-interface.c
---- 1/os-interface.c 2012-09-01 02:04:44.000000000 +0400
-+++ 2/os-interface.c 2013-09-17 20:11:54.590219538 +0400
-@@ -261,7 +261,15 @@ NvU64 NV_API_CALL os_get_page_mask(void)
-
- NvU64 NV_API_CALL os_get_system_memory_size(void)
- {
-- return ((NvU64) num_physpages * PAGE_SIZE) / RM_PAGE_SIZE;
-+ NvU64 num_pages;
-+
-+#if defined(NV_GET_NUM_PHYSPAGES_PRESENT)
-+ num_pages = get_num_physpages();
-+#else
-+ num_pages = num_physpages;
-+#endif
-+
-+ return ((num_pages * PAGE_SIZE) / RM_PAGE_SIZE);
- }
-
- //
diff --git a/system/nvidia-legacy96-kernel/slack-desc b/system/nvidia-legacy96-kernel/slack-desc
deleted file mode 100644
index 31c93ad500230..0000000000000
--- a/system/nvidia-legacy96-kernel/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-nvidia-legacy96-kernel: nvidia-legacy96-kernel (nvidia-legacy96-driver Kernel Interface)
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel: This is the kernel module needed by the binary nvidia-driver.
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel:
-nvidia-legacy96-kernel: