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