Messages in this thread | | | From | "Sosnowski, Maciej" <> | Date | Thu, 18 Dec 2008 14:33:29 +0000 | Subject | RE: [PATCH 07/13] dmaengine: introduce dma_request_channel and private channels |
| |
Dan Williams wrote: > On Fri, Dec 12, 2008 at 7:29 AM, Sosnowski, Maciej > <maciej.sosnowski@intel.com> wrote: >>> +static struct dma_chan *private_candidate(dma_cap_mask_t *mask, >>> struct dma_device *dev) +{ >>> + struct dma_chan *chan; >>> + struct dma_chan *ret = NULL; >>> + >>> + /* devices with multiple channels need special handling as we >>> need to + * ensure that all channels are either private or >>> public. + */ + if (dev->chancnt > 1 && >>> !dma_has_cap(DMA_PRIVATE, dev->cap_mask)) + >>> list_for_each_entry(chan, &dev->channels, device_node) { + >>> /* some channels are already publicly allocated */ + >>> if (chan->client_count) + return NULL; >>> + } >> >> Isn't it a dangerous approach to let clients consume for their >> exclusive usage channels meant for general-purpose ("pubilc" ones)? >> Why not to limit private_candidate to devices with DMA_PRIVATE >> capability only? >> > > This allows unused channels to be claimed by dma_request_channel(). > It is not dangerous as long as ->client_count is zero.
What about situation, where some or all "public" channels in the system have been claimed by one client for its exclusive usage before another client appears trying to use available "public" channels? Despite of presence in the system of channels that supposed to be "public", the second cilent realizes that the channels are not available anymore at all or at least limited... Doesn't it contradict the general idea of "public" (general purpose) channels?
Regards, Maciej
| |