On Thu, May 26, 2016 at 10:58:35AM +0100, Liviu Dudau wrote:
On Wed, May 25, 2016 at 12:48:02PM -0700, Laura Abbott wrote:
Ion is currently using the DMA APIs in non-compliant ways for cache maintaince. The issue is Ion needs to do cache operations outside of the regular DMA model. The Ion model matches more closely with the DRM model which calls cache APIs directly. Add an appropriate abstraction layer for Ion to call cache operations outside of the DMA API.
I _really_ hate seeing architecture internal functions being abused in drivers - architecture internal functions are there to implement the official kernel APIs and are not for drivers to poke about with.
I've had this happen several times, and each time it makes maintanence of architecture code harder than it should be.
In any case, the functions you are using are probably not appropriate - the way I've defined the architecture internal functions is for each to have a specific purpose. Eg, if caches need flushing when page tables change, then the function gets implemented, otherwise it's a no-op. Using a function which _seems_ to do the right thing today in a way which is against its purpose is a recipe for your code breaking.
If you need something from the architecture which isn't already provided, then you need to talk to architecture people about proposing an official interface to that functionality, rather than trying to bolt per- architecture shims into drivers.