Qlogic FC scsi_target ISP2310

Alexander Sack pisymbol at gmail.com
Fri Aug 29 16:15:27 UTC 2008


On Fri, Aug 29, 2008 at 12:14 PM, Alexander Sack <pisymbol at gmail.com> wrote:
> 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);
>                }

Whoops!  Its reversed!

--- isp_pci.c.0	2008-08-29 08:03:24.000000000 -0400
+++ isp_pci.c	2008-08-29 07:58:08.000000000 -0400
@@ -1039,7 +1039,7 @@
 		}

 		isp->isp_osinfo.fw = NULL;
-		if (isp->isp_role & ISP_ROLE_TARGET) {
+		if (isp->isp_role & ISP_ROLE_TARGET && IS_SCSI(isp)) {
 			snprintf(fwname, sizeof (fwname), "isp_%04x_it", did);
 			isp->isp_osinfo.fw = firmware_get(fwname);
 		}

Sorry about that!

-aps


More information about the freebsd-scsi mailing list