From owner-svn-src-all@freebsd.org Fri Jun 26 11:58:43 2015 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 12FC898D49E; Fri, 26 Jun 2015 11:58:43 +0000 (UTC) (envelope-from kadesai@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EEAC21D27; Fri, 26 Jun 2015 11:58:42 +0000 (UTC) (envelope-from kadesai@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t5QBwgr4091065; Fri, 26 Jun 2015 11:58:42 GMT (envelope-from kadesai@FreeBSD.org) Received: (from kadesai@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t5QBwgRj091064; Fri, 26 Jun 2015 11:58:42 GMT (envelope-from kadesai@FreeBSD.org) Message-Id: <201506261158.t5QBwgRj091064@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kadesai set sender to kadesai@FreeBSD.org using -f From: Kashyap D Desai Date: Fri, 26 Jun 2015 11:58:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r284872 - head/sys/dev/mrsas X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Jun 2015 11:58:43 -0000 Author: kadesai Date: Fri Jun 26 11:58:42 2015 New Revision: 284872 URL: https://svnweb.freebsd.org/changeset/base/284872 Log: Kernel panic may be observed by user, if MR controller is under Chip reset (OCR) and there are some pending IOs at the time of OCR. This is mainly because of recursive mutext in OCR and IO completion function call. Generic IO completion (from ISR) needs sim_lock to be held before it calls completion to CAM (xpt_done), but in case of OCR path mrsas_ocr thread itself take sim_lock, so this condition is now handled in this patch. MFC after: 3 days Modified: head/sys/dev/mrsas/mrsas.c Modified: head/sys/dev/mrsas/mrsas.c ============================================================================== --- head/sys/dev/mrsas/mrsas.c Fri Jun 26 09:02:40 2015 (r284871) +++ head/sys/dev/mrsas/mrsas.c Fri Jun 26 11:58:42 2015 (r284872) @@ -2715,6 +2715,7 @@ mrsas_reset_ctrl(struct mrsas_softc *sc) "resetting adapter from %s.\n", __func__); /* Now return commands back to the CAM layer */ + mtx_unlock(&sc->sim_lock); for (i = 0; i < sc->max_fw_cmds; i++) { mpt_cmd = sc->mpt_cmd_list[i]; if (mpt_cmd->ccb_ptr) { @@ -2724,6 +2725,7 @@ mrsas_reset_ctrl(struct mrsas_softc *sc) mrsas_atomic_dec(&sc->fw_outstanding); } } + mtx_lock(&sc->sim_lock); status_reg = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad));