Initialization timeouts in MPT driver
Andrew Boyer
aboyer at averesystems.com
Thu Oct 6 16:03:04 UTC 2011
When using mpt with a 1068e, a bad SATA SSD can prevent all other SATA drives from being recognized. It takes about 45s for the controller to respond to the IOC initialization request with a bad drive installed, but the timeout for SAS controllers is 30s.
> mpt0: <LSILogic SAS/SATA Adapter> port 0x5000-0x50ff mem 0xd9610000-0xd9613fff,0xd9600000-0xd960ffff irq 54 at device 0.0 on pci9
> mpt0: [ITHREAD]
> mpt0: MPI Version=1.5.20.0
> mpt0: Firmware version=1.30
> mpt0: mpt_wait_req(6) timed out
> mpt0: port 0 enable timed out
> mpt0: mpt_enable_ioc: failed to enable port 0
> mpt0: unable to initialize IOC
The IOC initialization timeouts on linux are ten times as long as in BSD (300 or 30 seconds vs 30 or 3 seconds), and linux is able to see all of the good drives. Changing the mpt timeouts to match linux allows freebsd to see the good drives, too.
Thoughts?
-Andrew
Index: sys/dev/mpt/mpt.c
===================================================================
--- sys/dev/mpt/mpt.c (revision 226063)
+++ sys/dev/mpt/mpt.c (working copy)
@@ -2084,7 +2084,7 @@
mpt_send_cmd(mpt, req);
error = mpt_wait_req(mpt, req, REQ_STATE_DONE, REQ_STATE_DONE,
- FALSE, (mpt->is_sas || mpt->is_fc)? 30000 : 3000);
+ FALSE, (mpt->is_sas || mpt->is_fc)? 300000 : 30000);
if (error != 0) {
mpt_prt(mpt, "port %d enable timed out\n", port);
return (-1);
--------------------------------------------------
Andrew Boyer aboyer at averesystems.com
More information about the freebsd-scsi
mailing list