Date: Tue, 2 Sep 2008 14:42:13 -0400 From: "Alexander Sack" <pisymbol@gmail.com> To: Ross <westr@connection.ca> Cc: freebsd-scsi@freebsd.org Subject: Re: Re[8]: isp(4) - kernel panic on initialization of driver Message-ID: <3c0b01820809021142v1192123aq1116c5528dda4920@mail.gmail.com> In-Reply-To: <479922773.20080902125207@connection.ca> 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> <08661720.20080829151750@connection.ca> <3c0b01820808291515j759236e6h262c533846587d57@mail.gmail.com> <479922773.20080902125207@connection.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 2, 2008 at 12:52 PM, Ross <westr@connection.ca> wrote: > > AS> I think your doing some great work but I don't think this is the > AS> *right* direction to take. The bottom line is the ISP should have > AS> interrupts disabled until it completes a full reset and loads the > AS> firmware, period. You shouldn't have to ignore ASYNC events during a > AS> reset - that doesn't make sense to me....yet....! > > I've created a small patch that so far seems to be working (survived > ~10+ reboots). From what I can tell, using the ISP_ENABLE_INTS & > ISP_DISABLE_INTS functions won't do anything to stop the problem. Yes Ross, I just discovered this myself that AYNC events are let through to the host regardless of ISP_ENABLE_INTS. > Basically my hypotheses is that the ASYNC command is already sitting > around in the mailbox of the card waiting to be read, so no interrupt > is actually being generated during the time the driver is starting up > - so you can't disable it. That's right but the ISP should be reset. YWe actually issue mailbox commands BEFORE we do the RISC reset. I think that maybe ultimately the bug. > (The card is active with a valid running rom before freebsd gets it's > paws on it, so it's probably already cleanly read it, but hasn't acted > upon it) Yes I believe your right. > The crash is located with the very first mailbox read, where if it > doesn't recognize the mailbox response, it parses it anyways > (in case it's something that needs to be done), and exit out if > there's an error. > > But the isp_parse_async() function makes the assumption that isp_state > == ISP_RUNSTATE, so it's safe to do anything. Where in fact is > actually gets called when not in ISP_RUNSTATE (with the assumption > that no problematic async command could be generated at this point). > > I'm guessing the true fix would be upon startup to somehow make sure > the mailbox queue is emptied before attempting to query the card > (for the firmware version). But how to do that is beyond me. Are you ok with trying another patch to maybe do exactly that? Let me take a look at your patch as well. Thanks! -aps
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3c0b01820809021142v1192123aq1116c5528dda4920>