Mark Haney wrote: > I just rebooted one of my SAN hosts, running FC6, and had it boot into > the latest FC6 kernel 2.6.22-9. After the boot, the primary SAN > partitions it mounts weren't available. A check through > /var/log/messages revealed this little nugget: > > Nov 9 10:01:04 blowingrock kernel: QLogic Fibre Channel HBA Driver > Nov 9 10:01:04 blowingrock kernel: e1000: eth0: e1000_probe: Intel(R) > PRO/1000 Network Connection > Nov 9 10:01:04 blowingrock kernel: ACPI: PCI Interrupt 0000:01:01.0[A] > -> GSI 28 (level, low) -> IRQ 28 > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Found an > ISP2300, irq 28, iobase 0xffffc20001438000 > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Configuring > PCI space... > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Configure > NVRAM parameters... > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Verifying > loaded RISC code... > Nov 9 10:01:04 blowingrock kernel: ACPI: PCI Interrupt 0000:02:04.1[B] > -> GSI 26 (level, low) -> IRQ 26 > Nov 9 10:01:04 blowingrock kernel: e1000: 0000:02:04.1: e1000_probe: > (PCI:33MHz:64-bit) 00:04:23:a8:96:d7 > Nov 9 10:01:04 blowingrock kernel: Floppy drive(s): fd0 is 1.44M > Nov 9 10:01:04 blowingrock kernel: FDC 0 is a post-1991 82077 > Nov 9 10:01:04 blowingrock kernel: e1000: eth1: e1000_probe: Intel(R) > PRO/1000 Network Connection > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Firmware image > unavailable. > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Firmware > images can be retrieved from: ftp://ftp.qlogic.com/outgoing/linux/firmware/. > Nov 9 10:01:04 blowingrock kernel: qla2xxx 0000:01:01.0: Failed to > initialize adapter > > > So, in my panic, I reset grub to point back to the existing .20 kernel > and all came up just fine: > > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: Found an > ISP2300, irq 28, iobase 0xffffc20000022000 > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: Configuring > PCI space... > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: Configure > NVRAM parameters... > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: Verifying > loaded RISC code... > Nov 9 10:31:06 blowingrock kernel: Intel(R) PRO/1000 Network Driver - > version 7.3.15-k2-NAPI > Nov 9 10:31:06 blowingrock kernel: Copyright (c) 1999-2006 Intel > Corporation. > Nov 9 10:31:06 blowingrock kernel: input: PC Speaker as /class/input/input3 > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: Allocated (412 > KB) for firmware dump... > Nov 9 10:31:06 blowingrock kernel: scsi2 : qla2xxx > Nov 9 10:31:06 blowingrock kernel: hdc: ATAPI 52X CD-ROM drive, 128kB > Cache, UDMA(33) > Nov 9 10:31:06 blowingrock kernel: Uniform CD-ROM driver Revision: 3.20 > Nov 9 10:31:06 blowingrock kernel: Floppy drive(s): fd0 is 1.44M > Nov 9 10:31:06 blowingrock kernel: FDC 0 is a post-1991 82077 > Nov 9 10:31:06 blowingrock kernel: qla2xxx 0000:01:01.0: LOOP UP > detected (2 Gbps). > > > So my question, WTH is going on here? I've obviously missed a memo or > something. > > Well.. what's going on is that the kernel is trying to load the firmware for the qla2xxx driver from the initrd, but it cannot find it. It seems that the firmware is not inside the initrd (unlike your other kernel, which does have this firmware in its initrd). Why this is happening is unclear to me, because the firmware should be present inside the initrd, however you can create an initrd yourself for the new kernel (initrd-2.6.22.7-57.fc6.img should be replaced by your initrd of the new kernel): mkdir /root/new_initrd cp /boot/initrd-2.6.22.7-57.fc6.img /root/new_initrd/initrd-2.6.22.7-57.fc6.img.gz cd /root/new_initrd gunzip initrd-2.6.22.7-57.fc6.img.gz mkdir img cd img cat ../initrd-2.6.22.7-57.fc6.img | cpio -iv You should now have the contents of the initrd in the directory /root/new_initrd/img/ You can get the firmware from the website, which is located inside your logfiles or use one you might already have in /lib/firmware/. Now let's put the firmware into the initrd and put it back together: mkdir /root/new_initrd/img/lib/firmware cp the-firmware /root/new_initrd/img/lib/firmware cd /root/new_initrd/img/ find . -depth -print | cpio -oc > ../initrd-2.6.22.7-57.fc6.fixed.img ; cd .. ; gzip initrd-2.6.22.7-57.fc6.fixed.img cd .. mv initrd-2.6.22.7-57.fc6.fixed.img.gz initrd-2.6.22.7-57.fc6.fixed.img cp initrd-2.6.22.7-57.fc6.fixed.img /boot/ You should now have a new initrd with the correct firmware. It's a bit of a hassle, and there should be a better solution to this problem, but it *is* a solution :) After changing your initrd in /etc/grub.conf, it should work again. Hope it all works out.