nvidia: added patch for linux 2.6.28

This commit is contained in:
Juergen Daubert 2009-01-01 17:27:06 +01:00
parent 777170b1f8
commit 0af86db872
3 changed files with 189 additions and 3 deletions

View File

@ -1,2 +1,3 @@
882f34a662f0175682fdc4a9bec909ba NVIDIA-Linux-x86-177.82-pkg0.run
105b87e85f9557bca2651b7751b5d5b1 nvidia-2.6.28.patch
8921f37eaad3576532f0023d291b9e51 nvidia-makefile.patch

View File

@ -6,9 +6,9 @@
name=nvidia
version=177.82
release=1
release=2
source=(http://us.download.nvidia.com/XFree86/Linux-x86/$version/NVIDIA-Linux-x86-$version-pkg0.run \
$name-makefile.patch)
$name-makefile.patch $name-2.6.28.patch)
build() {
sh NVIDIA-Linux-x86-$version-pkg0.run --extract-only
@ -16,6 +16,7 @@ build() {
# patch Makefile.kbuild for normal users and no load during build
patch -p0 -i $SRC/$name-makefile.patch usr/src/nv/Makefile.kbuild
patch -p0 -i $SRC/$name-2.6.28.patch
# create directories the Makefile expects
mkdir -p $PKG/usr/lib \
@ -32,7 +33,7 @@ build() {
# additional symlinks required by gl-select
ln -s libGL.so.$version $PKG/usr/lib/libGL_so_1_2_nvidia
ln -s libglx.so.$version $PKG/usr/lib/xorg/modules/extensions/libglx_so_nvidia
ln -s libglx.so.$version $PKG/usr/lib/xorg/modules/extensions/libglx_so_nvidia
# copy includes
mkdir -p $PKG/usr/include/nvidia

184
nvidia/nvidia-2.6.28.patch Normal file
View File

@ -0,0 +1,184 @@
# http://www.nvnews.net/vbulletin/showpost.php?p=1823327&postcount=21
# http://www.nvnews.net/vbulletin/showpost.php?p=1843626&postcount=44
diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2990799/Makefile.kbuild
--- usr/src/nv/Makefile.kbuild 2008-10-01 15:13:04.000000000 -0700
+++ usr/src/nv.2990799/Makefile.kbuild 2008-10-27 10:46:28.199802537 -0700
@@ -185,14 +185,16 @@
acquire_console_sem \
kmem_cache_create \
on_each_cpu \
- smp_call_function
+ smp_call_function \
+ acpi_evaluate_integer
else
COMPILE_TESTS = \
remap_page_range \
vmap \
change_page_attr \
i2c_adapter \
- smp_call_function
+ smp_call_function \
+ acpi_evaluate_integer
endif
#
diff -ru usr/src/nv/Makefile.nvidia usr/src/nv.2990799/Makefile.nvidia
--- usr/src/nv/Makefile.nvidia 2008-10-01 15:13:04.000000000 -0700
+++ usr/src/nv.2990799/Makefile.nvidia 2008-10-27 10:45:54.973909102 -0700
@@ -59,7 +59,8 @@
vmap \
change_page_attr \
i2c_adapter \
- smp_call_function
+ smp_call_function \
+ acpi_evaluate_integer
DEFINES+=$(EXTRA_DEFINES)
diff -ru usr/src/nv/conftest.sh usr/src/nv.2990799/conftest.sh
--- usr/src/nv/conftest.sh 2008-10-01 15:13:04.000000000 -0700
+++ usr/src/nv.2990799/conftest.sh 2008-10-27 10:45:57.710065030 -0700
@@ -67,6 +67,8 @@
}
build_cflags() {
+ ARCH=`uname -m | sed -e 's/i.86/i386/'`
+
BASE_CFLAGS="-D__KERNEL__ \
-DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \
-nostdinc -isystem $ISYSTEM"
@@ -80,16 +82,20 @@
test_xen
if [ "$OUTPUT" != "$SOURCES" ]; then
- ARCH=`uname -m | sed -e 's/i.86/i386/'`
MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-default"
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"
fi
if [ "$XEN_PRESENT" != "0" ]; then
MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-xen $MACH_CFLAGS"
fi
else
MACH_CFLAGS="-I$HEADERS/asm/mach-default"
+ 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"
+ fi
if [ "$XEN_PRESENT" != "0" ]; then
MACH_CFLAGS="-I$HEADERS/asm/mach-xen $MACH_CFLAGS"
fi
@@ -97,6 +103,9 @@
CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS"
+ if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
+ CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include"
+ fi
if [ -n "$BUILD_PARAMS" ]; then
CFLAGS="$CFLAGS -D$BUILD_PARAMS"
fi
@@ -858,7 +867,7 @@
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
- echo "#undef NV_ON_EACH_CPU" >> conftest.h
+ echo "#undef NV_ON_EACH_CPU_PRESENT" >> conftest.h
return
fi
@@ -897,6 +906,57 @@
fi
;;
+ acpi_evaluate_integer)
+ #
+ # Determine if the acpi_evaluate_integer() function is
+ # present and the type of its 'data' argument.
+ #
+
+ echo "$CONFTEST_PREAMBLE
+ #include <acpi/acpi_bus.h>
+ acpi_status acpi_evaluate_integer(acpi_handle h, acpi_string s,
+ struct acpi_object_list *l, unsigned long long *d) {
+ return AE_OK;
+ }" > 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 "#define NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h
+ echo "typedef unsigned long long nv_acpi_integer_t;" >> conftest.h
+ return
+ fi
+
+ echo "$CONFTEST_PREAMBLE
+ #include <acpi/acpi_bus.h>
+ acpi_status acpi_evaluate_integer(acpi_handle h, acpi_string s,
+ struct acpi_object_list *l, unsigned long *d) {
+ return AE_OK;
+ }" > 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 "#define NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h
+ echo "typedef unsigned long nv_acpi_integer_t;" >> conftest.h
+ return
+ else
+ #
+ # We can't report a compile test failure here because
+ # this is a catch-all for both kernels that don't
+ # have acpi_evaluate_integer() and kernels that have
+ # broken header files that make it impossible to
+ # tell if the function is present.
+ #
+ echo "#undef NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h
+ echo "typedef unsigned long nv_acpi_integer_t;" >> conftest.h
+ fi
+ ;;
+
esac
}
diff -ru usr/src/nv/nvacpi.c usr/src/nv.2990799/nvacpi.c
--- usr/src/nv/nvacpi.c 2008-10-01 15:13:04.000000000 -0700
+++ usr/src/nv.2990799/nvacpi.c 2008-10-27 10:46:05.710520948 -0700
@@ -136,7 +136,7 @@
struct acpi_object_list control_argument_list = { 0, NULL };
nv_stack_t *sp = NULL;
struct list_head *node, *next;
- unsigned long device_id = 0;
+ nv_acpi_integer_t device_id = 0;
int device_counter = 0;
NV_KMEM_CACHE_ALLOC_STACK(sp);
@@ -158,11 +158,9 @@
os_mem_set((void *)pNvAcpiObject, 0, sizeof(nv_acpi_t));
- // assign driver data structure ptr to this device
- acpi_driver_data(device) = pNvAcpiObject;
-
- // store a device reference in our object
+ device->driver_data = pNvAcpiObject;
pNvAcpiObject->device = device;
+
pNvAcpiObject->sp = sp;
// grab handles to all the important nodes representing devices
@@ -306,7 +304,7 @@
*/
nv_acpi_t *pNvAcpiObject = data;
u32 event_val = 0;
- unsigned long state;
+ nv_acpi_integer_t state;
int status = 0;
int device_counter = 0;