From owner-freebsd-scsi@FreeBSD.ORG Mon Mar 6 14:06:43 2006 Return-Path: X-Original-To: freebsd-scsi@freebsd.org Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9D75D16A420; Mon, 6 Mar 2006 14:06:43 +0000 (GMT) (envelope-from os@rsu.ru) Received: from mail.r61.net (mail.r61.net [195.208.245.235]) by mx1.FreeBSD.org (Postfix) with ESMTP id C2DEA43D48; Mon, 6 Mar 2006 14:06:42 +0000 (GMT) (envelope-from os@rsu.ru) Received: from brain.cc.rsu.ru (brain.cc.rsu.ru [195.208.252.154]) (authenticated bits=0) by mail.r61.net (8.13.4/8.13.4) with ESMTP id k26E6clO013561 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT); Mon, 6 Mar 2006 17:06:39 +0300 (MSK) (envelope-from os@rsu.ru) From: Oleg Sharoiko To: John Baldwin In-Reply-To: <20060304224419.N1270@wolf.os.rsu.ru> References: <20060215102749.D58480@brain.cc.rsu.ru> <200602281205.43592.jhb@freebsd.org> <20060303153838.Q772@brain.cc.rsu.ru> <200603031112.45211.jhb@freebsd.org> <20060304224419.N1270@wolf.os.rsu.ru> Content-Type: text/plain Date: Mon, 06 Mar 2006 17:06:38 +0300 Message-Id: <1141653998.1502.23.camel@brain.cc.rsu.ru> Mime-Version: 1.0 X-Mailer: Evolution 2.4.2.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.86.2, clamav-milter version 0.86 on asterix.r61.net X-Virus-Status: Clean Cc: freebsd-scsi@freebsd.org, Andrey Beresovsky Subject: Re: Boot hangs on ips0: resetting adapter, this may take up to 5 minutes X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Mar 2006 14:06:43 -0000 On Sat, 2006-03-04 at 23:07 +0300, Oleg Sharoiko wrote: > ips0: mem > 0xd0300000-0xd0300fff,0xd4000000-0xd7ffffff irq 11 at device 1.0 on pci3 > ips0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0xd0300000 > ips0: irq allocation failed > panic: Assertion mtx_unowned(m) failed at > /usr/src-HEAD-20060228-223000UTC/sys/kern/kern_mutex.c:885 > cpuid = 0 > KDB: enter: panic > [thread pid 0 tid 0 ] > Stopped at kdb_enter+0x31: leave > db> There seems to be a small bug in the ips driver. I doesn't relate to the hang at all, but as I suppose it needs to be fixed anyway. ips_pci_attach() from dev/ips/ips_pci.c does "goto error;" to make a cleanup when something goes wrong. There we have error: ips_pci_free(sc); return (ENXIO); ips_pci_free() always calls mtx_destroy(&sc->queue_mtx); sema_destroy(&sc->cmd_sema); but ips_pci_attach may jump to error: event before queue_mtx gets initialized. Unfortunately I'm not sure how to fix this in the most proper way. I suppose it would be nice to check in ips_pci_free() if the mutex is initialized or not, but I don't know how to implement this check. Another possible solution is to move initializition before first "goto error"; So I'm leaving this for the one who knows better. By the way, shouldn't sc->queue also be freed in ips_pci_free ? -- Oleg Sharoiko. Software and Network Engineer Computer Center of Rostov State University.