From owner-freebsd-scsi@FreeBSD.ORG Fri Aug 29 19:17:51 2008 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17B151065670 for ; Fri, 29 Aug 2008 19:17:51 +0000 (UTC) (envelope-from westr@connection.ca) Received: from nc-tor-mail1.connection.ca (nc-tor-mail1.connection.ca [205.207.122.26]) by mx1.freebsd.org (Postfix) with ESMTP id E41C18FC21 for ; Fri, 29 Aug 2008 19:17:50 +0000 (UTC) (envelope-from westr@connection.ca) Received: from localhost (external.tor.connection.ca [216.234.38.18]) by nc-tor-mail1.connection.ca (Postfix) with ESMTP id 263A144B457 for ; Fri, 29 Aug 2008 15:17:50 -0400 (EDT) Date: Fri, 29 Aug 2008 15:17:50 -0400 From: Ross Organization: Network Connection X-Priority: 3 (Normal) Message-ID: <08661720.20080829151750@connection.ca> To: freebsd-scsi@freebsd.org In-Reply-To: <3c0b01820808290822tce5619bie11b8e97fe9a9062@mail.gmail.com> References: <13710393234.20080826164158@connection.ca> <48B46EE1.8060408@samsco.org> <3c0b01820808270743n5fd40995u6e9506b772f2b03c@mail.gmail.com> <86689256.20080827112751@connection.ca> <3c0b01820808271333l34ead8ele99daab695baf667@mail.gmail.com> <34442830.20080829103621@connection.ca> <3c0b01820808290822tce5619bie11b8e97fe9a9062@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Subject: Re[6]: isp(4) - kernel panic on initialization of driver X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Ross List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Aug 2008 19:17:51 -0000 AS> Give me a sec to look a this some more....bottom line is isp AS> should not be servicing async interrupts until its absolutely AS> ready! Okay, I've done a bit more digging on my side here, and have come up against a small wall - The trace shows: > isp_freeze_loopdown(c81d0e00,2,c06f800f,0,c0cf1f6c,...) at isp_freeze_loopdown+0x42 > isp_async(c81d0e00,6,0,14e1,2001d5c3,...) at isp_async+0xa72 > isp_intr(c81d0e00,8012,1,8014,c0af6718,...) at isp_intr+0xbc7 > isp_mbox_wait_complete(c81d0e00,c0af67e8,50000000,0,8,...) at isp_mbox_wait_complete+0x120 But what's missing in the trace is the call to isp_async() from isp_intr(). What I have found is the call to isp_parse_async() (see line 4560 in isp.c) which in turn calls isp_async(). Setting DEBUG to 0x14F shows the extra debug lines in there confirming the pass through [console output includes the "Async Mbox 0x8014" line before the mbox checkpoint]. I'm guessing that would be the spot to add a check against isp_state, but am not sure whether to just return from the function, or to do the goto jump to 'out' for the cleanup. Let me know if I'm on track. Cheers, Ross. --