Red Hat Bugzilla – Bug 73732
Kernels compiled with gcc 3.2 can't use modules compiled with gcc 2.96
Last modified: 2007-04-18 12:46:30 EDT
Third Party Modules and the Red Hat Linux 8.0
- Why can't I load some third party modules in Red Hat Linux 8.0
The insmod in Red Hat Linux 8.0 looks for modules and kernels which do not have
a matching gcc version. This is done because both the base and the Red Hat
kernel ABI for gcc 2 and gcc 3 built kernels are not the same. This is due
to workarounds for old (egcs) compiler bugs which change the padding in
kernel data structures.
Other vendors using gcc 3 series compilers received many strange bug
reports that turned out to be gcc 2 and gcc 3 module mixups. We saw the
same problems and verified the cause in our earlier beta releases. In order to
assist our customers Red Hat extended insmod to detect the problem case
and display an error message.
- How do I solve this problem
If you have a third party module and rebuild it with a gcc3 series compiler
against the RHL8.0 kernel then it will load. The kernel interface is not a
binary stable one so you should always build modules against new kernels.
There are specific exceptions here for the Advanced Server product where
Red Hat provide certain ISV guarantees.
- I recompiled it and it didn't help
Some modules mix C source with object modules provided by the vendor. Notable
examples include Highpoint, Nvidia and OSS. If the code in the binary part
of the module references no Linux structures directly in any way then it
should be safe to use. Insmod obviously cannot tell this itself and to protect
users displays the error message.
If you know the driver binary pieces do not reference kernel data
structures directly then you can use the "-f" option to insmod to override
the checking code.
End user reports suggest that the Nvidia driver performs as expected with the
insmod -f option. However please remember that Red Hat does not provide base
release support for kernels that have binary only modules loaded and this is not
a Red Hat statement of compatibility.