Bug 233654 - isp(4) regression after r316398 r316399
Summary: isp(4) regression after r316398 r316399
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 11.2-STABLE
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-scsi mailing list
Keywords: regression
Depends on:
Reported: 2018-11-30 03:48 UTC by aler
Modified: 2018-12-18 06:57 UTC (History)
1 user (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description aler 2018-11-30 03:48:51 UTC
Previous revisions works fine.
Starting from r316399 it work for about ~10 minutes uptime and then starts spamming errors liek this:

isp0: Chan 0 Abort Cmd for N-Port 0x000c @ Port 0x1f1200
isp0: Polled Mailbox Command ()x54) Timeout (5000000us) (isp_control:4705)
isp0: Mailbox Command 'EXECUTE IOCB A64' failed (TIMEOUT)
isp0: isp_watchdog: timeout for handle 0x11882025

and nothing works until hard reset.

isp0: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0x4000-0x40ff mem 0xfbff0000-0xfbff3fff irq 30 at device 0.0 on pci6
isp1: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0x4400-0x44ff mem 0xfbfe0000-0xfbfe3fff irq 37 at device 0.1 on pci6

Loading or not loading ispfw  doesn't change anything to this problem.
Comment 1 aler 2018-12-10 12:08:03 UTC
Comment 2 Alexander Motin freebsd_committer 2018-12-10 19:00:47 UTC
I can't say there can't be a regression, but I haven't heard any other reports about this.  It may be specific to 24xx series of adapters, since they are older and I have tested them only basically.  Unfortunately there seems to be no way in code to disable new functionality.  It would be nice to create a patch for that.
Comment 3 aler 2018-12-18 06:57:35 UTC
Pre-316398 code only uses MSI-X for 2600+ cards.

This change in new code seems to fix the problem. May be it will be better to add some sysctl to optionally allow MSI-X on 24xx but anyway it should be disabled by default and might be enabled only by explicit request.

--- sys/dev/isp/ispmbox.h.orig  2018-12-18 09:49:17.549288000 +0300
+++ sys/dev/isp/ispmbox.h       2018-12-17 04:12:14.056837000 +0300
@@ -896,7 +896,7 @@
 #define        ISP_GET_VPIDX(isp, tag) \
        (ISP_CAP_MULTI_ID(isp) ? tag : 0)
 #define        ISP_CAP_MSIX(isp)       \
-       (IS_24XX(isp)? (isp->isp_fwattr & ISP2400_FW_ATTR_MSIX) : 0)
+       (IS_26XX(isp)? (isp->isp_fwattr & ISP2400_FW_ATTR_MSIX) : 0)
 #define        ISP_CAP_VP0(isp)        \
        (IS_24XX(isp)? (isp->isp_fwattr & ISP2400_FW_ATTR_VP0) : 0)