Bug 19113

Summary: VMware 2.0.2 modules do not compile with redhat 7.0
Product: [Retired] Red Hat Linux Reporter: Need Real Name <thomass>
Component: kernelAssignee: Michael K. Johnson <johnsonm>
Status: CLOSED WONTFIX QA Contact: Brock Organ <borgan>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: dr, jim.zurita
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2000-10-17 11:23:12 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
vmmon kernel module from VMware 2.0.2, Makefile modif. to use kgcc none

Description Need Real Name 2000-10-14 19:23:15 UTC
The latest version of VMware, version 2.0.2, doesn't work with redhat 7.0. 
The modules compiled by vmware-config.pl do not work, even though I've 
edited the vmware modules Makefiles to use kgcc and temporarily 
replaced /usr/include/linux with a symlink to /usr/src/linux/include/linux 
to compensate for the vmware problem described in 
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=18408. The compilation 
of the vmware modules causes a lot of warnings about redefinitions. The 
compiled modules insert into the kernel without problems, but the machine 
freezes when a vmware VM is booted (not when the vmware program is 
started).

If I replace the redhat kernel with a plain-vanilla linux-2.2.16 kernel 
the warnings go away and the vmware VM works.

Comment 1 Alan Cox 2000-10-14 21:27:49 UTC
That sounds like its probably VMware's problem. Like most vendors we ship
kernels with modified
VM to do things like 4Gig ram. Do provide some info on the redefinitions you see
though, just in case its our mess.


Comment 2 Need Real Name 2000-10-15 09:57:20 UTC
Here's some further information about the redefinition warnings.

I'm only providing information for compilation of a single .c file in
the first of the three vmware modules, but I've attached the vmmon
module source code to this bug report, so you can try to compile
everything for yourself. I've replaced CC=gcc with CC=kgcc in the
Makefile.

I've compiled driver.c in the vmmon module (make driver.o). Below I've
quoted the compilation command and the compiler output, using the
redhat-kernel source and using a plain 2.2.16 kernel source.

compilation command (make driver.o):
kgcc -O2 -DMODULE -D__KERNEL__ -fno-strength-reduce -pipe -m486 -malign-
loops=2 -malign-jumps=2 -malign-functions=2 -fno-omit-frame-pointer -DCPU=586 -
Wall -Wstrict-prototypes -DVMWARE__FIX_IO_APIC_BASE=FIX_IO_APIC_BASE_0 -
I./include -I./common -I./linux -I./export/include -I/usr/src/linux/include -c 
linux/driver.c

############ Compiler output with redhat-2.2.16-22 kernel source: #########

In file included from /usr/src/linux/include/linux/sched.h:20,
                 from linux/driver.c:21:
/usr/src/linux/include/linux/smp.h:77: warning: `smp_num_cpus' redefined
/usr/src/linux/include/linux/modules/i386_ksyms.ver:28: warning: this is the 
location of the previous definition
/usr/src/linux/include/linux/smp.h:83: warning: `smp_call_function' redefined
/usr/src/linux/include/linux/modules/i386_ksyms.ver:118: warning: this is the 
location of the previous definition
In file included from /usr/src/linux/include/linux/sched.h:74,
                 from linux/driver.c:21:
/usr/src/linux/include/asm/processor.h:96: warning: `cpu_data' redefined
/usr/src/linux/include/linux/modules/i386_ksyms.ver:6: warning: this is the 
location of the previous definition
In file included from /usr/src/linux/include/linux/interrupt.h:51,
                 from linux/driver.c:31:
/usr/src/linux/include/asm/hardirq.h:23: warning: `synchronize_irq' redefined
/usr/src/linux/include/linux/modules/i386_ksyms.ver:138: warning: this is the 
location of the previous definition
In file included from /usr/src/linux/include/linux/interrupt.h:52,
                 from linux/driver.c:31:
/usr/src/linux/include/asm/softirq.h:75: warning: `synchronize_bh' redefined
/usr/src/linux/include/linux/modules/i386_ksyms.ver:142: warning: this is the 
location of the previous definition
{standard input}: Assembler messages:
{standard input}:9: Warning: Ignoring changed section attributes for .modinfo

######## END OF Compiler output with redhat-2.2.16-22 kernel source: #########


############ Compiler output with plain 2.2.16 kernel source: #########

{standard input}: Assembler messages:
{standard input}:9: Warning: Ignoring changed section attributes for .modinfo

######## END OF Compiler output with plain 2.2.16 kernel source: ######


Comment 3 Need Real Name 2000-10-15 10:00:25 UTC
Created attachment 4169 [details]
vmmon kernel module from VMware 2.0.2, Makefile modif. to use kgcc

Comment 4 Need Real Name 2000-10-15 15:37:30 UTC
Justed wanted to note, that I can compile the modules against the redhat 2.2.16-
22 kernel source if I enable SMP support in the kernel source. Maybe this can 
narrow the bug search area down.


Comment 5 Need Real Name 2000-10-15 18:56:50 UTC
With respect to the previous comment: I forgot to mention that I also added -
DSUPPORT_SMP to the command line.

New discoveries:
If I configure the kernel *without* CONFIG_MODVERSIONS and add the switch -
DMODVERSIONS to the compilation command for the vmware module it compiles 
without warnings. Isn't that very strange and counter-intuitive?

Another thing that I'd like to point out, is that the symbols defined in 
i386_ksyms.ver that are being redefined are these (manually retyped here, 
beware of typos):

#define cpu_data _set_ver(cpu_data)

#define smp_num_cpus _set_ver(smp_num_cpus)

#define smp_call_function _set_ver()

#define synchronize_irq _set_ver(synchronize_irq)

#define synchronize_bh _set_ver(synchronize_bh)

I know nothing about it, and haven't looked any further into the source, but it 
seems weird that something like smp_num_cpus should depend on module 
versioning, doesn't it?


Comment 6 Alan Cox 2000-10-17 15:55:28 UTC
The sources come with the kernel set up for an SMP build. If you switch to non
SMP you need to
save the .config file, do a 'make mrproper' then put the .config back, make
oldconfig and build the
tree.

Its a funny of the way the kernel build process works. Its a prob;lem in the
2.2.x 'official' tarballs too and very hard to cure