cvs commit: src/sys/alpha/alpha busdma_machdep.csrc/sys/i386/i386
src/sys/powerpc/powerpc busdma_machdep.c
Scott Long
scottl at freebsd.org
Fri Jun 27 22:31:41 PDT 2003
Justin T. Gibbs wrote:
>>>>@@ -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.
>
>
> Does this code run without giant? If not, shouldn't it be dropping giant
> upon calling what should be an MP safe client? If so, doesn't it need
> to pick up giant in for the non-MP safe clients?
>
> --
> Justin
>
>
Ah, good point. For all but ia64, some attempt has been made to make
the swi be MPSAFE. I'll look into it.
Scott
More information about the cvs-src
mailing list