View Full Version : Debain and NVIDIA_kernel/GLX 1.0-3123
Daf2sade
11-16-02, 12:25 PM
i dont understand what happen with my Debian
when i start X, the X serveur close with error :
(EE) NVIDIA(0): failed to allocate LUT context DMA
(EE) NVIDIA(0): *** aborting ***
my linux kernel is 2.4.17
and Xfree86 4.2.1
what is that ?
LUT means lookup table and is essentally a database which associates a unique code to a particular string (I think). DMA is direct memory access.
The nv driver is apparently looking for an LUT in a specific place in the memory and isn't finding it there, probably coz your kernel isn't new enough.
Try downloading the latest patch (2.4.19) from www.kernel.org, reinstall the driver and try again.
The kernel itself (if that's what you mean) is the foundation on which the os is built. It basically makes sure that everything on the pc interacts properly.
Find out more about XFree86 at their website: www.XFree86.com (or something similar)
Looking through the nVidia README file found this:
Q: X fails with error "Failed to allocate LUT context DMA"
A: This is one of the possible consequences of compiling NVdriver with a different gcc version than used to compile the Linux kernel (see above).Above, it says this:
Q: Compiling the NVdriver kernel module gives this error:
"You appear to be compiling the NVdriver kernel module with a compiler different from the one that was used to compile the running kernel. This may be perfectly fine, but there are cases where this can lead to unexpected behaviour and system crashes.
If you know what you are doing and want to override this check, you can do so by setting IGNORE_CC_MISMATCH.
In any other case, set the CC environment variable to the name of the compiler that was used to compile the kernel."
A: You should compile the NVdriver kernel module with the same compiler version that was used to compile your kernel. Some Linux kernel data structures are dependent on the version of gcc used to compile it; for example, in include/linux/spinlock.h:
...
* Most gcc versions have a nasty bug with empty initializers.
*/
#if (__GNUC__ > 2)
typedef struct { } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { }
#else
typedef struct { int gcc_is_buggy; } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
#endif
If the kernel is compiled with gcc 2.x, but gcc 3.x is used when the open files in NVdriver are built (or vice versa), the size of rwlock_t will vary, and things like ioremap will fail.
To check what version of gcc was used to compile your kernel, you can examine the output of:
cat /proc/version
To check what version of gcc is currently in your $PATH, you can examine the output of:
gcc -vFor that last bit, you can also look at cc -v, which I think is a bit better. When you compile the kernel driver, the Makefile uses cc rather than gcc, and it is possible that those two point to different things.
The same happens on my machine with RedHat 8.0 and kernel 2.4.18-18.8.0
The 'LUT' version of the error occurs only with the agpgart kernel module
Using NVIDIA's agp (disabling agpgart, and adding the option
Option "NvAGP" "1"
results in a slightly different error message. IIRC
"failed to allocate DMA buffer"
The RH 8.0 kernel is compiled with gcc 3.2, used the same compiler for the nvidia module, and even compiled the NVIDIA_GLX from source rpm's
I guess the stuff in the nvidia kernel module itself is compiled with gcc 2.95. Would a (fully) gcc3.2 compiled kernel help. NVIDIA?
Guess that's it. Compiled a fresh 2.4.19 kernel, and then added NVIDIA's driver (3123), and now things work. Apparently redhat's 2.4.18-18.8.0 kernel has got stuff in it that does not play along with the NVIDIA driver (or the other way around) on my platform.
For the curious, my set-up is an athlon 650 on an Irongate motherboard, with GeForce 256
vBulletin® v3.7.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.