[pkg-nvidia-devel] Bug#500644: Maybe more complex...

Thomas Lundqvist tlundqvist at acm.org
Fri Jan 23 18:07:16 UTC 2009


Hi all, I'm afraid it's more complicated...

I discovered this problem today as well when upgrading kernel to:
2.6.24-etchnhalf.1-686.

Building from nvidia-kernel-source 1.0.8776-4 didn't work. I also
tried a later nvidia-kernel-source. Not the 173.14.09-5 one,
unfortunately I don't remember the exact version. It started with
100-something. It was probably an old unstable package I
downloaded many months ago.

Interesting thing: the later version was built with no problem
but the nvidia-drivers was too modern for my card (GeForce4 MX
440). When trying "modprobe nvidia" it said: use an older version
(legacy) of the nvidia drivers.

So it seems that the 1.0.8776-version is the most modern version
I can use for my card. Therefore, I went through the code and
changed the most critical lines to make it pass the compilation
(I looked in the 173.14.09-package in unstable to get some clues
about the kernel interface changes that caused these troubles). I
didn't think so much about correctness but the changes seems to
work (I run X now with 2.4.24 kernel and 1.0.8776 nvidia-kernel).

I've attached a patch. Apply it before building and it should
work. I don't know about 64-bit kernels though (amd64). Might be
more complex.

Apply patch like this:
 cd /usr/src/modules/nvidia-kernel/nv/
 patch < patch-nv-1.0.8776_to_2.6.24.txt

I might be missing something here though. I don't know really if
the latest version 173.14.09-5 supports my old card. Then, this
patching might be unnecessary. Maybe the old version (8776) needs
be maintaing also in the future to support some old cards...

/Thomas L

-------------- next part --------------
diff -Nur nv/nv.c nv-modified/nv.c
--- nv/nv.c	2007-01-05 05:51:29.000000000 +0100
+++ nv-modified/nv.c	2009-01-23 18:59:38.000000000 +0100
@@ -99,7 +99,7 @@
 int nv_use_cpa = 1;
 #endif
 
-static kmem_cache_t *nv_pte_t_cache = NULL;
+static void *nv_pte_t_cache = NULL;
 
 // allow an easy way to convert all debug printfs related to events
 // back and forth between 'info' and 'errors'
@@ -1453,8 +1453,7 @@
         if (apm_nv_dev[i] != NULL) pm_unregister(apm_nv_dev[i]);
 #endif
 
-    if (unregister_chrdev(nv_major, "nvidia") < 0)
-        nv_printf(NV_DBG_ERRORS, "NVRM: unregister nv chrdev failed\n");
+    unregister_chrdev(nv_major, "nvidia"); 
 
     for (i = 0; i < num_nv_devices; i++)
     {
@@ -1478,8 +1477,7 @@
 
     nv_printf(NV_DBG_INFO, "NVRM: nvidia_exit_module\n");
 
-    if (unregister_chrdev(nv_major, "nvidia") < 0)
-        nv_printf(NV_DBG_ERRORS, "NVRM: unregister nv chrdev failed\n");
+    unregister_chrdev(nv_major, "nvidia");
 
     for (i = 0; i < num_nv_devices; i++)
     {
@@ -1806,7 +1804,7 @@
         }
 
         status = request_irq(nv->interrupt_line, nv_kern_isr,
-                             SA_INTERRUPT | SA_SHIRQ, "nvidia",
+                             IRQF_DISABLED | IRQF_SHARED, "nvidia",
                              (void *) nvl);
         if (status != 0)
         {
diff -Nur nv/nv-i2c.c nv-modified/nv-i2c.c
--- nv/nv-i2c.c	2007-01-05 05:51:29.000000000 +0100
+++ nv-modified/nv-i2c.c	2009-01-23 13:44:42.000000000 +0100
@@ -23,7 +23,6 @@
 static struct i2c_algorithm nv_i2c_algo = {
     .master_xfer      = nv_i2c_algo_xfer,
     .smbus_xfer       = NULL,
-    .algo_control     = nv_i2c_algo_control,
     .functionality    = nv_i2c_algo_functionality,
 };
 
diff -Nur nv/nv-linux.h nv-modified/nv-linux.h
--- nv/nv-linux.h	2007-01-05 05:51:29.000000000 +0100
+++ nv-modified/nv-linux.h	2009-01-23 13:06:35.000000000 +0100
@@ -509,7 +509,7 @@
 #define NV_KMEM_CACHE_CREATE(kmem_cache, name, type)            \
     {                                                           \
         kmem_cache = kmem_cache_create(name, sizeof(type),      \
-                        0, 0, NULL, NULL);                      \
+                        0, 0, NULL);                      \
     } 
 
 #define NV_KMEM_CACHE_DESTROY(kmem_cache)                       \


More information about the Pkg-nvidia-devel mailing list