Red Hat Bugzilla – Bug 84155
Nvidia kernel module does not compile with kernel-sources
Last modified: 2007-04-18 12:51:04 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030115
Description of problem:
The following error occurs when tyring to compile an nvidia kernel module in Phoebe.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Download and untar
2. Type make
In file included from /lib/modules/2.4.20-2.21/build/include/linux/mm.h:22,
In file included from /lib/modules/2.4.20-2.21/build/include/linux/sched.h:25,
/lib/modules/2.4.20-2.21/build/include/linux/smp.h:87:1: warning: this is the
location of the previous definition
In file included from /lib/modules/2.4.20-2.21/build/include/linux/vmalloc.h:8,
/lib/modules/2.4.20-2.21/build/include/linux/highmem.h: In function `bh_kmap':
/lib/modules/2.4.20-2.21/build/include/linux/highmem.h:20: warning: pointer of
type `void *' used in arithmetic
nv.c: In function `nv_get_phys_address':
nv.c:2250: warning: implicit declaration of function `pte_offset'
nv.c:2250: invalid type argument of `unary *'
make: *** [nv.o] Error 1
Expected Results: clean compile.
Others have reported no problems compiling this with the latest gcc so I am
assuming it is a kernel header file problem found only in Phoebe.
the nvidia binary only kernel module won't work with phoebe at all. It'll
require major modifications to have a remote chance of working.
*** This bug has been marked as a duplicate of 73733 ***
erm, excuse me. There is NOTHING closed source or binary only related to this bug!
ehm excuse me but the nvidia binary only kernel module is a wonking huge binary
only blob with a thin glue layer. And yes the glue layer will need changing, but
also stuff inside the binary only blob.
tkmame: The Nvidia kernel module is comprised as 2 parts as Arjan states.
1) A small glue layer which binds the kernel to 2) a huge blob of
binary only kernel code to which the source code is not available.
Only Nvidia has this code, and only Nvidia can make changes to the
source code of their driver because only Nvidia has the source code.
The source code for the glue layer, which is pretty useless. While
you may possibly modify it if Nvidia's license allows it, it is
ultimately Nvidia's responsibility to decide what operating systems
they support, what distribution version, and what kernel versions of
that distribution. They will have to modify their kernel code from
time to time as the Linux kernel changes, and they are the only ones
whom can do so.
What does this mean for end users? It means that from time to time,
as the Linux kernel changes, the Nvidia binary only kernel modules
will break, and will require Nvidia to update their code to work with
newer kernels, both from Red Hat, and from other distributions as well,
and also the mainstream Linux kernel. This is one of the hazards that
a hardware vendor such as Nvidia must deal with when choosing to provide
binary only driver modules for Linux, and it is one of the hazards that
users of binary only kernel modules must face when choosing to use
hardware that requires binary only kernel modules.
Binary only kernel modules are not supported by Red Hat. This is not
limited to video drivers.
yes I know (now). I was under the mistaken impression that the kernel module
part was all open source. However, this does not necessarily mean that there is
not a problem with the kernel header files. Looking at the error messages, it
appears there is a multiply defined varible in the headers. However, since I
was smacked down by Arjan I'll just shut up and trust you guys know what you are
talking about. :)