Date: Fri, 27 Jun 2003 11:27:24 -0600 From: Scott Long <scottl@freebsd.org> To: Nate Lawson <nate@root.org> Cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/alpha/alpha busdma_machdep.csrc/sys/i386/i386 src/sys/powerpc/powerpc busdma_machdep.c Message-ID: <3EFC7E7C.4030000@freebsd.org> In-Reply-To: <20030627091203.B76929@root.org> References: <20030627083158.E946C37B4A6@hub.freebsd.org> <20030627091203.B76929@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Nate Lawson wrote: > On Fri, 27 Jun 2003, Scott Long wrote: > >> Do the first and mostly mechanical step of adding mutex support to the >> bus_dma async callback scheme. Note that sparc64 does not seem to do >> async callbacks. Note that ia64 callbacks might not be MPSAFE at the >> moment. Note that powerpc doesn't seem to do async callbacks due to >> the implementation being incomplete. >> >> Reviewed by: mostly silence on arch@ >> >> Revision Changes Path >> 1.39 +5 -0 src/sys/alpha/alpha/busdma_machdep.c >> 1.47 +5 -0 src/sys/i386/i386/busdma_machdep.c >> 1.25 +5 -0 src/sys/ia64/ia64/busdma_machdep.c >> 1.16 +1 -0 src/sys/powerpc/powerpc/busdma_machdep.c >> >>@@ -931,8 +932,12 @@ >> while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) { >> STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links); >> mtx_unlock(&bounce_lock); >>+ if (map->callback_mtx != NULL) >>+ mtx_lock(map->callback_mtx); >> bus_dmamap_load(map->dmat, map, map->buf, map->buflen, >> map->callback, map->callback_arg, /*flags*/0); >>+ if (map->callback_mtx != NULL) >>+ mtx_unlock(map->callback_mtx); >> mtx_lock(&bounce_lock); >> } >> mtx_unlock(&bounce_lock); > > > Good to see you working on this area. Why would callback_mtx be null? If > it is null, is it safe to call the function without the lock held? > > -Nate > Yes, calling with a NULL mutex would be allowed and would behave as expected. There has been some late-breaking objection to this work, so we'll see where it heads. Scott
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EFC7E7C.4030000>