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