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>
