From owner-freebsd-scsi@FreeBSD.ORG Mon Mar 6 18:30:27 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 B625016A422 for ; Mon, 6 Mar 2006 18:30:27 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.FreeBSD.org (Postfix) with ESMTP id E779A43D46 for ; Mon, 6 Mar 2006 18:30:26 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from localhost (john@localhost [127.0.0.1]) by server.baldwin.cx (8.13.4/8.13.4) with ESMTP id k26IULTs019453; Mon, 6 Mar 2006 13:30:25 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Oleg Sharoiko Date: Mon, 6 Mar 2006 12:43:02 -0500 User-Agent: KMail/1.9.1 References: <20060215102749.D58480@brain.cc.rsu.ru> <20060304224419.N1270@wolf.os.rsu.ru> <1141653998.1502.23.camel@brain.cc.rsu.ru> In-Reply-To: <1141653998.1502.23.camel@brain.cc.rsu.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200603061243.04708.jhb@freebsd.org> X-Virus-Scanned: ClamAV 0.87.1/1315/Sun Mar 5 05:31:57 2006 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.4 required=4.2 tests=ALL_TRUSTED,AWL autolearn=ham version=3.1.0 X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on server.baldwin.cx 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 18:30:27 -0000 On Monday 06 March 2006 09:06, Oleg Sharoiko wrote: > 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. Actually, you can just init the mutex and sema earlier so they are always setup. That's what several other drivers do. mtx_init() is fairly cheap in the non-WITNESS case. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org