Bug 84155

Summary: Nvidia kernel module does not compile with kernel-sources
Product: [Retired] Red Hat Public Beta Reporter: Christopher Stone <tkmame>
Component: kernelAssignee: Arjan van de Ven <arjanv>
Status: CLOSED NOTABUG QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: phoebeCC: mharris
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-02-12 21:47:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Christopher Stone 2003-02-12 21:09:15 UTC
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):

How reproducible:

Steps to Reproduce:
1. Download and untar
2. Type make

Actual Results:  
In file included from /lib/modules/2.4.20-2.21/build/include/linux/mm.h:22,
                 from /lib/modules/2.4.20-2.21/build/include/linux/slab.h:14,
                 from nv-linux.h:63,
                 from nv.c:14:
/lib/modules/2.4.20-2.21/build/include/linux/sched.h:548:1: warning:
"cpu_online" redefined
In file included from /lib/modules/2.4.20-2.21/build/include/linux/sched.h:25,
                 from /lib/modules/2.4.20-2.21/build/include/linux/mm.h:22,
                 from /lib/modules/2.4.20-2.21/build/include/linux/slab.h:14,
                 from nv-linux.h:63,
                 from nv.c:14:
/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,
                 from nv-linux.h:64,
                 from nv.c:14:
/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.

Additional info:

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.

Comment 1 Arjan van de Ven 2003-02-12 21:33:55 UTC
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 ***

Comment 2 Christopher Stone 2003-02-12 21:41:25 UTC
erm, excuse me.  There is NOTHING closed source or binary only related to this bug!

Comment 3 Arjan van de Ven 2003-02-12 21:47:19 UTC
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.

Comment 4 Mike A. Harris 2003-02-12 22:16:33 UTC
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.

Comment 5 Christopher Stone 2003-02-13 00:16:08 UTC
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.  :)