• Dan Williams's avatar
    async_tx, dmaengine: document channel allocation and api rework · 28405d8d
    Dan Williams authored
    
    
    "Wouldn't it be better if the dmaengine layer made sure it didn't pass
    the same channel several times to a client?
    
    I mean, you seem concerned that the memcpy() API should be transparent
    and easy to use, but the whole registration interface is just
    ridiculously complicated..."
    	- Haavard
    
    The dmaengine and async_tx registration/allocation interface is indeed
    needlessly complicated.  This redesign has the following goals:
    
    1/ Simplify reference counting: dma channels are not something one would
       expect to be hotplugged, it should be an exceptional event handled by
       drivers not something clients should be mandated to handle in a
       callback.  The common case channel removal event is 'rmmod <dma driver>',
       which for simplicity should be disallowed if the channel is in use.
    2/ Add an interface for requesting exclusive access to a channel
       suitable to device-to-memory users.
    3/ Convert all memory-to-memory users over to a common allocator, the goal
       here is to not have competing channel allocation schemes.  The only
       competition should be between device-to-memory exclusive allocations and
       the memory-to-memory usage case where channels are shared between
       multiple "clients".
    
    Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
    Cc: Neil Brown <neilb@suse.de>
    Cc: Jeff Garzik <jeff@garzik.org>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    
    28405d8d