Those using the legacy Nvidia driver (173.14.12) on Beta2 will find that it will fail to compile on install, this is down to changed methods in the 2.6.27 kernel. To workaround this you have to extract the source (sh ./NVIDIA-Linux-x86_64-173.14.12-pkg2.run -x) and apply a patch first. The patch I used is based on one I found from a Gentoo user and it works fine for me.
diff -Naur NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv-linux.h NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/nv-linux.h
--- NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv-linux.h 2008-07-18 02:42:29.000000000 +0100
+++ NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/nv-linux.h 2008-10-06 00:37:49.000000000 +0100
@@ -104,7 +104,10 @@
#endif
#include <linux/spinlock.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+#else
#include <asm/semaphore.h>
+#endif
#include <linux/completion.h>
#include <linux/highmem.h>
@@ -665,13 +668,21 @@
#if defined(preempt_disable)
preempt_disable();
#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ ret = smp_call_function(func, info, 1);
+ #else
ret = smp_call_function(func, info, 1, 1);
+ #endif
func(info);
#if defined(preempt_enable)
preempt_enable();
#endif
#else
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ ret = on_each_cpu(func, info, 1);
+ #else
ret = on_each_cpu(func, info, 1, 1);
+ #endif
#endif
return ret;
}
diff -Naur NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv.c NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/nv.c
--- NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv.c 2008-07-18 02:42:29.000000000 +0100
+++ NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/nv.c 2008-10-06 00:34:26.000000000 +0100
@@ -1296,14 +1296,22 @@
if (get_cpu() == cpu)
__nv_setup_pat_entries(NULL);
else
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ smp_call_function(__nv_setup_pat_entries, hcpu, 1);
+ #else
smp_call_function(__nv_setup_pat_entries, hcpu, 1, 1);
+ #endif
put_cpu();
break;
case CPU_DOWN_PREPARE:
if (get_cpu() == cpu)
__nv_restore_pat_entries(NULL);
else
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ smp_call_function(__nv_restore_pat_entries, hcpu, 1);
+ #else
smp_call_function(__nv_restore_pat_entries, hcpu, 1, 1);
+ #endif
put_cpu();
break;
}
diff -Naur NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/os-interface.c NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/os-interface.c
--- NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/os-interface.c 2008-07-18 02:42:29.000000000 +0100
+++ NVIDIA-Linux-x86_64-173.14.12-pkg2_patched/usr/src/nv/os-interface.c 2008-10-06 00:40:16.000000000 +0100
@@ -48,7 +48,11 @@
#endif
local_bh_disable();
atomic_set(&os_smp_barrier, 1);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ ret = smp_call_function(ipi_handler, NULL, 0);
+ #else
ret = smp_call_function(ipi_handler, NULL, 1, 0);
+ #endif
#endif
return (ret == 0) ? RM_OK : RM_ERROR;
}
@@ -704,7 +708,9 @@
U032 sig
)
{
+ #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 26)
return kill_proc(pid, sig, 1) ? RM_ERR_OPERATING_SYSTEM : RM_OK;
+ #endif
}
/*******************************************************************************/