Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Nov 2016 01:25:29 -0700
From:      Scott Long <scottl@samsco.org>
To:        Michael Tuexen <tuexen@FreeBSD.org>
Cc:        Sean Bruno <sbruno@freebsd.org>, freebsd-scsi <freebsd-scsi@freebsd.org>
Subject:   Re: mpt driver issue?
Message-ID:  <1E584A39-B268-4253-A588-7A5CA5D46C97@samsco.org>
In-Reply-To: <1909C322-A218-4463-9A86-8E859B4715E6@freebsd.org>
References:  <CA9B9B19-5311-4A4E-87ED-8771C1000BEC@freebsd.org> <4398FA07-AABF-441E-A412-42BABCD59444@freebsd.org> <e9698b93-11e6-530a-1d27-ef45706eae66@freebsd.org> <CA6234F2-C0BF-472E-B904-FFBAE0ED29F9@freebsd.org> <D7516284-A279-469F-9FE3-A0E6A88791C3@samsco.org> <1909C322-A218-4463-9A86-8E859B4715E6@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Nov 7, 2016, at 1:21 AM, Michael Tuexen <tuexen@FreeBSD.org> wrote:
>=20
>> On 6 Nov 2016, at 23:46, Scott Long <scottl@samsco.org> wrote:
>>=20
>>=20
>>> On Nov 6, 2016, at 1:57 PM, Michael Tuexen <tuexen@FreeBSD.org> =
wrote:
>>>=20
>>>> On 6 Nov 2016, at 20:41, Sean Bruno <sbruno@freebsd.org> wrote:
>>>>=20
>>>>=20
>>>>=20
>>>> On 11/06/16 10:54, Michael Tuexen wrote:
>>>>> Dear all,
>>>>>=20
>>>>> it was suggested on current@ to forward this to freebsd-scsi@
>>>>>=20
>>>>> The problem shows up since r308268 and it looks like an issue
>>>>> in the mpt driver...
>>>>>=20
>>>>> Best regards
>>>>> Michael
>>>>=20
>>>> I don't see any *obvious* reason that we should hold the mpt lock =
here.
>>>> It looks ok to just drop it.
>>> I tried that and the system (with WITNESS) panic'ed...
>>> Can't write a core (not a surprise).
>>=20
>> Any info on where the panic was?
> After learning how to add a serial console to a VM und Fusion:
>=20
>>=20

Thanks.  I have a fix, but I seem to not be able to access the svn =
server over ssh right now so I can=E2=80=99t commit it.  Here=E2=80=99s =
the patch:

--- mpt.c	(revision 308358)
+++ mpt.c	(working copy)
@@ -2695,7 +2695,11 @@
 	 */
 	mpt->max_cam_seg_cnt =3D min(mpt->max_seg_cnt, (MAXPHYS / =
PAGE_SIZE) + 1);
=20
+	/* XXX Lame Locking! */
+	MPT_UNLOCK(mpt);
 	error =3D mpt_dma_buf_alloc(mpt);
+	MPT_LOCK(mpt);
+
 	if (error !=3D 0) {
 		mpt_prt(mpt, "mpt_dma_buf_alloc() failed!\n");
 		return (EIO);
@@ -2745,6 +2749,7 @@
 		 * retrieved, we are responsible for re-downloading
 		 * the firmware after any hard-reset.
 		 */
+		MPT_UNLOCK(mpt);
 		mpt->fw_image_size =3D mpt->ioc_facts.FWImageSize;
 		error =3D mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, =
0,
 		    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, =
NULL,
@@ -2752,6 +2757,7 @@
 		    &mpt->fw_dmat);
 		if (error !=3D 0) {
 			mpt_prt(mpt, "cannot create firmware dma =
tag\n");
+			MPT_LOCK(mpt);
 			return (ENOMEM);
 		}
 		error =3D bus_dmamem_alloc(mpt->fw_dmat,
@@ -2760,6 +2766,7 @@
 		if (error !=3D 0) {
 			mpt_prt(mpt, "cannot allocate firmware =
memory\n");
 			bus_dma_tag_destroy(mpt->fw_dmat);
+			MPT_LOCK(mpt);
 			return (ENOMEM);
 		}
 		mi.mpt =3D mpt;
@@ -2768,6 +2775,7 @@
 		    mpt->fw_image, mpt->fw_image_size, mpt_map_rquest, =
&mi, 0);
 		mpt->fw_phys =3D mi.phys;
=20
+		MPT_LOCK(mpt);
 		error =3D mpt_upload_fw(mpt);
 		if (error !=3D 0) {
 			mpt_prt(mpt, "firmware upload failed.\n");




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1E584A39-B268-4253-A588-7A5CA5D46C97>