-
"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..."
- HaavardThe 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 ',
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
Cc: Neil Brown
Cc: Jeff Garzik
Reviewed-by: Andrew Morton
Signed-off-by: Dan Williams