Bug 43759 - rebuilding kernel fails when trying to compile aic7xxx_drv.o
Summary: rebuilding kernel fails when trying to compile aic7xxx_drv.o
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: kernel
Version: 7.1
Hardware: i686
OS: Linux
Target Milestone: ---
Assignee: Arjan van de Ven
QA Contact: Brock Organ
Depends On:
TreeView+ depends on / blocked
Reported: 2001-06-07 01:46 UTC by Need Real Name
Modified: 2007-04-18 16:33 UTC (History)
0 users

Clone Of:
Last Closed: 2001-06-09 04:57:31 UTC

Attachments (Terms of Use)

Description Need Real Name 2001-06-07 01:46:12 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; DigExt; 

Description of problem:
When trying to rebuild the kernel it fails when trying to compile 
aic7xxx_drv.o for the scsi controller.  I have a super micro 370dl3 
motherboard with a Onboard Adaptec AIC-7892 single channel Ultra3/160 SCSI 
controller.  I used kgcc to compile redhat 7.1 with the command make 
CC=kgcc bzImage....

How reproducible:

Steps to Reproduce:
1. just load in the scsi low level driver aic7xxx_drv and use the default 
parameters. when trying to build a new kernel.

Actual Results:  last lines of compile
drivers/scsi/aic7xxx_new/aic7xxx_drv.o(.text+0x118): multiple definition 
of 'ahc_dmamem_alloc'
drivers/scsi/aic7xxx_new/scsi_drv.o(.text+0xa108): first defined here
make: *** [vmlinux] Error 1

Expected Results:  It should have continued compiling and made the bzImage 

Additional info:

One additional note.  I am using the xfs file system by sgi.  I do not 
think this has any relevance to this particular bug.  However I do have to 
use the kgcc to compile because of it.

Comment 1 Arjan van de Ven 2001-06-07 08:49:04 UTC
I just tried this, and for me it compiles fine. Maybe there's a bit more
to this than just setting SCSI and aic7xxx from "M" to "Y", so could you
attach your .config?

Also, maybe SGI broke the kernel so please report this problem also to them.
As for using kgcc; we (Red Hat) trust egcs less than gcc 2.96 for building
kernels, and egcs is known to miscompile some codefragments; the kernel tries
to avoid those but I can't guarantee there are none left.

Comment 2 Need Real Name 2001-06-09 04:57:27 UTC
I figured out my problem ... I needed to do a make mrproper first.  I ran into 
another quirk. In order to make the initrd file I needed to compile aic as a 
module however in order to get it to boot the system it needed to be compiled 
into the kernel since I boot to a scsi drive.  Here is how I solved the problem 
in case someone else experiences something similar.  

how to build a linux kernel with xfs and scsi drives.
first must build kernel with aic7xxx module support then build with aic 
compiled in.

when building kernel run a make mrproper first
make xconfig
then make sure enable xfs support
enable scsi aic7xxx 
(this assumes you did a previous build as a module so you can use that 
directory to make an 

then save and exit
make clean
make dep
make bzImage
make modules 
install bzimage to /boot
make modules_install (be sure to rename previous module install before you do 

now copy back the old /lib/modules directory with aic as a module
go to /boot
do a mkinitrd /boot/initrd-nameofkernel nameofkernel
it should build the initrd and find the aic module which it needed to work
then go back to the modules directory and but back the modules that you 
compiled for the 

current kernel.
edit /etc/lilo.conf
add new entry to lilo.
do a lilo -t -v to test and make sure there are no problems.
type lilo to commit changes
reboot to new kernel....

Comment 3 Arjan van de Ven 2001-06-11 14:47:52 UTC
Things is, if you build it in your kernel, you don't need a initrd at all,
and if you build it as a module, you can boot BECAUSE of the initrd....

Note You need to log in before you can comment on or make changes to this bug.