isp(4) - kernel panic on initialization of driver

Ross westr at connection.ca
Tue Aug 26 20:42:00 UTC 2008


I've been tracking down a problem that is sometimes causing a kernel
panic to occur when initializing the isp driver in the system. (System
in question is a HP Blade - BL460c w/ QHM 6432 FC dual port card
reporting as the following:

isp0: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0x4000-0x40ff mem 0xfdff0000-0xfdff3fff irq 18 at device 0.0 on pci16
isp0: Board Type 2422, Chip Revision 0x2, resident F/W Revision 4.0.90
isp1: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0x4400-0x44ff mem 0xfdfe0000-0xfdfe3fff irq 19 at device 0.1 on pci16
isp1: Board Type 2422, Chip Revision 0x2, resident F/W Revision 4.0.90

We're doing a boot-via-san situation, and the issue looks to be that
the card is receiving a ISPASYNC_CHANGE_PDB command on isp1 before
it's ready for it. I'm guessing it's due to the fact the card already
as the firmware loaded and active (due to the boot).

Console debug (hint.isp.[01].debug=0x11f) output looks like the following on a crash:

-=
kernel: isp1: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0x4400-0x44ff mem 0xfdfe0000-0xfdfe3fff irq 19 at device 0.1 on pci16
kernel: isp1: set PCI latency to 64
kernel: isp1: [ITHREAD]
kernel: isp1: line 5345: markportdb
kernel: isp1: Port Database Changed
kernel: isp1: Port Database Changed: freeze simq (loopdown)
[crash]
-=

Further debugging shows that isp_freeze_loopdown() function that is
called at the above point never returns. Quick guess is the called
xpt_freeze_simq() function [line 290 in isp_freebsd.c] is the culprit,
but that's about the limit of my ability for tracking this down.


If anyone has any pointers to fixing this, that would be appreciated!

Thanks,
  Ross.

(Also filed http://www.freebsd.org/cgi/query-pr.cgi?pr=126866 with
basically the same notes above)

-- 




More information about the freebsd-scsi mailing list