Thanks to the hints from the Scientific Linux mailing list I got the Adaptec
aic79xx driver running.

Here is the HOWTO 

The aic79xx driver V1.3 supplied by Scientific Linux does not work if U320
SCSI devices run on the same channel of an Adaptec card with other SCSI
devices with different speed.
Adaptec supplies a corrected aic79xx driver V.2.0 as source and as rpm, but
the rpm suitable for Scientific Linux 4.2 is not yet available.

To use this HOWTO on a 64-bit system (Opteron, Xeon EM64T), replace all i686
occurences by x86_64
Compile aic79xx driver V.2.0.15 for i386 on Scientific Linux 4.2 (kernel
2.6.9-22.0.1) HOWTO
# Get the kernel source rpm and copy it to /install:
#
ftp://ftp.scientificlinux.org/disk/disk1/linux/scientific/4x/SRPMS/vendor/er
rata/kernel-2.6.9-22.0.1.EL.src.rpm
<ftp://ftp.scientificlinux.org/disk/disk1/linux/scientific/4x/SRPMS/vendor/e
rrata/kernel-2.6.9-22.0.1.EL.src.rpm> 
#
# Create the kernel source tree
rpm -ivh /install/kernel-2.6.9-22.0.1.EL.src.rpm
cd /usr/src/redhat/SPECS/
rpmbuild -bp --target=i686 kernel-2.6.spec
#
# Save the old aic7xxx directory
mv /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/aic7xxx  \
   /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/aic7xxx_sav
#
# Clean the kernel source tree
cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
make mrproper
#
# Get the aic79xx driver source code for Linux kernel 2.6 and copy it to
/install:
#http://www.adaptec.com/worldwide/support/driverdetail.jsp?sess=no&language=
English+US&cat=/Product/ASC-39320A-R&filekey=aic7Yxx-2.0.15-6.3.11-linux-2.6
.tgz
#
# Insert aic79xx source into kernel source
cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/
tar xzf /install/aic7Yxx-2.0.15-6.3.11-linux-2.6.gz
#
# Get config file from active kernel
cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
cp -p --reply=yes /usr/src/kernels/2.6.9-22.0.1.EL-smp-i686/.config  \
   /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
#
# Save Makefile
cp -p /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/Makefile  \
   /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/Makefile_sav
#
# Adjust aic79xx parameters in config file
sed -i "/^# CONFIG_SCSI_AIC79XX.*/s/^#
CONFIG_SCSI_AIC79XX.*/CONFIG_SCSI_AIC79XX=m/"  \
   /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
if grep -q CONFIG_AIC79XX_CMDS_PER_DEVICE
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
then
   sed -i
"/CONFIG_AIC79XX_CMDS_PER_DEVICE.*/s/^.*CONFIG_AIC79XX_CMDS_PER_DEVICE.*/CON
FIG_AIC79XX_CMDS_PER_DEVICE=32/"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
else
   sed -i "/CONFIG_SCSI_AIC79XX=m/a\CONFIG_AIC79XX_CMDS_PER_DEVICE=32"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
fi
if grep -q CONFIG_AIC79XX_RESET_DELAY_MS
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
then
   sed -i
"/CONFIG_AIC79XX_RESET_DELAY_MS.*/s/^.*CONFIG_AIC79XX_RESET_DELAY_MS.*/CONFI
G_AIC79XX_RESET_DELAY_MS=15000/"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
else
   sed -i "/CONFIG_SCSI_AIC79XX=m/a\CONFIG_AIC79XX_RESET_DELAY_MS=15000"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
fi
if grep -q CONFIG_AIC79XX_DEBUG_MASK
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
then
   sed -i "/^# CONFIG_AIC79XX_DEBUG_MASK.*/s/^#
CONFIG_AIC79XX_DEBUG_MASK.*/CONFIG_AIC79XX_DEBUG_MASK=0/"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
else
   sed -i "/CONFIG_SCSI_AIC79XX=m/a\CONFIG_AIC79XX_DEBUG_MASK=0"  \
      /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.config
fi
#
# Define extraversion in Makefile according to the kernel
if uname -r | grep -q smp
then
   sed -i "/^EXTRAVERSION/s/-prep/smp/"
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/Makefile
else
   sed -i "/^EXTRAVERSION/s/-prep//"
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/Makefile
fi
#
# Make the module
make
#
if uname -r | grep -q smp
then
# Save the old aic79xx smp kernel module
   if [ -f
/lib/modules/2.6.9-22.0.1.ELsmp/kernel/drivers/scsi/aic7xxx/aic79xx.ko ] ;
then
      cp -p --reply=yes
/lib/modules/2.6.9-22.0.1.ELsmp/kernel/drivers/scsi/aic7xxx/aic79xx.ko  \
 
/lib/modules/2.6.9-22.0.1.ELsmp/kernel/drivers/scsi/aic7xxx/aic79xx.ko_sav
   fi
#
# Copy the new smp module to its destination and adjust protection
   cp -p --reply=yes
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/aic7xxx/aic79xx.
ko  \
      /lib/modules/2.6.9-22.0.1.ELsmp/kernel/drivers/scsi/aic7xxx/aic79xx.ko
   chmod 744
/lib/modules/2.6.9-22.0.1.ELsmp/kernel/drivers/scsi/aic7xxx/aic79xx.ko
#
# Create new smp initrd
   cp -p --reply=yes /boot/initrd-2.6.9-22.0.1.ELsmp.img
/boot/initrd-2.6.9-22.0.1.ELsmp.img.sav
   mkinitrd -f /boot/initrd-2.6.9-22.0.1.ELsmp.img 2.6.9-22.0.1.ELsmp
else
#
# Save the old aic79xx kernel module
   if [ -f
/lib/modules/2.6.9-22.0.1.EL/kernel/drivers/scsi/aic7xxx/aic79xx.ko ] ; then
      cp -p --reply=yes
/lib/modules/2.6.9-22.0.1.EL/kernel/drivers/scsi/aic7xxx/aic79xx.ko  \
 
/lib/modules/2.6.9-22.0.1.EL/kernel/drivers/scsi/aic7xxx/aic79xx.ko_sav
   fi
#
# Copy the new module to its destination and adjust protection
   cp -p --reply=yes
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/aic7xxx/aic79xx.
ko  \
      /lib/modules/2.6.9-22.0.1.EL/kernel/drivers/scsi/aic7xxx/aic79xx.ko
   chmod 744
/lib/modules/2.6.9-22.0.1.EL/kernel/drivers/scsi/aic7xxx/aic79xx.ko
#
# Create new initrd
   cp -p --reply=yes /boot/initrd-2.6.9-22.0.1.EL.img
/boot/initrd-2.6.9-22.0.1.EL.img.sav
   mkinitrd -f /boot/initrd-2.6.9-22.0.1.EL.img 2.6.9-22.0.1.EL
fi


 	Dr. Peter Stauffert
	Boehringer Ingelheim Pharma GmbH & Co. KG
		Department of Lead Discovery
		Computational Chemistry
		D-88397 Biberach / Germany