From owner-svn-src-projects@FreeBSD.ORG Sun Aug 25 23:16:53 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CCE02660; Sun, 25 Aug 2013 23:16:53 +0000 (UTC) (envelope-from mav@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)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BA0C8284C; Sun, 25 Aug 2013 23:16:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7PNGrWH016719; Sun, 25 Aug 2013 23:16:53 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7PNGq3I016711; Sun, 25 Aug 2013 23:16:52 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308252316.r7PNGq3I016711@svn.freebsd.org> From: Alexander Motin Date: Sun, 25 Aug 2013 23:16:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254891 - in projects/camlock/sys: cam dev/ahci dev/ata dev/mvs dev/siis X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Aug 2013 23:16:54 -0000 Author: mav Date: Sun Aug 25 23:16:52 2013 New Revision: 254891 URL: http://svnweb.freebsd.org/changeset/base/254891 Log: Since command completion no longer needs SIM lock and even requires one to be dropped during processing, move xpt_batch_start()/xpt_batch_done() out of it and assert that. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/dev/ahci/ahci.c projects/camlock/sys/dev/ata/ata-all.c projects/camlock/sys/dev/mvs/mvs.c projects/camlock/sys/dev/siis/siis.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 25 23:16:52 2013 (r254891) @@ -4411,7 +4411,7 @@ xpt_batch_done(struct cam_sim *sim) { struct ccb_hdr *ccb_h; - CAM_SIM_UNLOCK(sim); + mtx_assert(sim->mtx, MA_NOTOWNED); mtx_lock(&sim->sim_doneq_mtx); KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) != 0, ("Batch flag was not set")); @@ -4424,7 +4424,6 @@ xpt_batch_done(struct cam_sim *sim) mtx_lock(&sim->sim_doneq_mtx); } mtx_unlock(&sim->sim_doneq_mtx); - CAM_SIM_LOCK(sim); } union ccb * Modified: projects/camlock/sys/dev/ahci/ahci.c ============================================================================== --- projects/camlock/sys/dev/ahci/ahci.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/ahci/ahci.c Sun Aug 25 23:16:52 2013 (r254891) @@ -1469,11 +1469,11 @@ ahci_ch_intr_locked(void *data) device_t dev = (device_t)data; struct ahci_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); ahci_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/ata/ata-all.c ============================================================================== --- projects/camlock/sys/dev/ata/ata-all.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/ata/ata-all.c Sun Aug 25 23:16:52 2013 (r254891) @@ -352,11 +352,11 @@ ata_interrupt(void *data) { struct ata_channel *ch = (struct ata_channel *)data; - mtx_lock(&ch->state_mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->state_mtx); ata_interrupt_locked(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->state_mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/mvs/mvs.c ============================================================================== --- projects/camlock/sys/dev/mvs/mvs.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/mvs/mvs.c Sun Aug 25 23:16:52 2013 (r254891) @@ -653,11 +653,11 @@ mvs_ch_intr_locked(void *data) device_t dev = (device_t)arg->arg; struct mvs_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); mvs_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/siis/siis.c ============================================================================== --- projects/camlock/sys/dev/siis/siis.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/siis/siis.c Sun Aug 25 23:16:52 2013 (r254891) @@ -837,11 +837,11 @@ siis_ch_intr_locked(void *data) device_t dev = (device_t)data; struct siis_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); siis_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void