Qlogic FC scsi_target ISP2310
Alexander Sack
pisymbol at gmail.com
Fri Aug 29 16:14:03 UTC 2008
On Thu, Aug 28, 2008 at 7:25 PM, Fuujin Networks LLC
<erich at fuujinnetworks.com> wrote:
>
> [snip]
> FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
> cpu0 (BSP): APIC ID: 0
> cpu1 (AP): APIC ID: 1
> ioapic0: Changing APIC ID to 2
> ioapic0 <Version 1.1> irqs 0-23 on motherboard
> registered firmware set <isp_1040>
> registered firmware set <isp_1040_it>
> registered firmware set <isp_1080>
> registered firmware set <isp_1080_it>
> registered firmware set <isp_12160>
> registered firmware set <isp_12160_it>
> registered firmware set <isp_2100>
> registered firmware set <isp_2200>
> registered firmware set <isp_2300>
> registered firmware set <isp_2322>
> registered firmware set <isp_2400>
> isp0: <Qlogic ISP 2300 PCI FC-AL Adapter> port 0xc000-0xc0ff mem
> 0xe7103000-0xe7103fff irq 16 at device 8.0 on pci0
> firmware_get: failed to load firmware image isp_2300_it
> isp0: [ITHREAD]
> isp0: Board Type 2300, Chip Revision 0x1, loaded F/W Revision 3.3.19
> isp0: target notify code 0x1007
> isp0: target notify code 0x1007
> isp0: target notify code 0x1006
> isp0: target notify code 0x1007
> isp0: target notify code 0x1008
> (targbh0:isp0:0:-1:-1): Target Mode Enabled
> isp0: target notify code 0x1007
> isp0: target notify code 0x1007
> isp0: target notify code 0x1006
> isp0: target notify code 0x1007
> isp0: target notify code 0x1006
> isp0: target notify code 0x1007
> [snip]
>
> I'm a bit puzzled by the firmware_get failed line above. I suspect this may
> be the problem, but I have not been able to resolve it. I've tried disabling
> the bios on the FC cards, as well as messing with almost every other
> conceivable option, but the same error appears. Thoughts?
Yes, its a bug in the ISP driver. If you are in target mode, it tries
to load the isp_XXX_it version of the RISC code. I *think* the old
SCSI cards had two separate firmwares for target and initiator modes
(currently if you look at ispfw, there is the 1040, 1080, and 12160_it
firmwares).
Try this patch:
--- isp_pci.c 2008-08-29 07:58:08.000000000 -0400
+++ isp_pci.c.0 2008-08-29 08:03:24.000000000 -0400
@@ -1039,7 +1039,7 @@
}
isp->isp_osinfo.fw = NULL;
- if (isp->isp_role & ISP_ROLE_TARGET && IS_SCSI(isp)) {
+ if (isp->isp_role & ISP_ROLE_TARGET) {
snprintf(fwname, sizeof (fwname), "isp_%04x_it", did);
isp->isp_osinfo.fw = firmware_get(fwname);
}
That will fix the above error. The bad news is that this won't fix
your problem since you DID load the 3.3.19 firmware since the next
line will get the isp_2300 firmware and things will proceed normally
down in isp_reset() (where the load actually happens!).
So you really need to enable:
options DDB
options KDB
and get a stack trace so when the machine panics you can do a "bt" and
print the output (forget about the addresses, just the function
calls). Also make sure the BIOS is configured to enable target mode
(I forgot if the 2300 had a separate BIOS tunable for that).
Let us know,
-aps
More information about the freebsd-scsi
mailing list