dma-buf: add support for kernel cpu access
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 19 Mar 2012 23:02:37 +0000 (00:02 +0100)
committerSumit Semwal <sumit.semwal@ti.com>
Mon, 26 Mar 2012 06:03:02 +0000 (11:33 +0530)
commitfc13020e086bfedf2afb95c91c026d5af1f80107
treea06be5c3eff6865a42046b51270e4d60e30609f4
parent6b607e3a658fee490bdabfdeb739a3eb498b1bff
dma-buf: add support for kernel cpu access

Big differences to other contenders in the field (like ion) is
that this also supports highmem, so we have to split up the cpu
access from the kernel side into a prepare and a kmap step.

Prepare is allowed to fail and should do everything required so that
the kmap calls can succeed (like swapin/backing storage allocation,
flushing, ...).

More in-depth explanations will follow in the follow-up documentation
patch.

Changes in v2:

- Clear up begin_cpu_access confusion noticed by Sumit Semwal.
- Don't automatically fallback from the _atomic variants to the
  non-atomic variants. The _atomic callbacks are not allowed to
  sleep, so we want exporters to make this decision explicit. The
  function signatures are explicit, so simpler exporters can still
  use the same function for both.
- Make the unmap functions optional. Simpler exporters with permanent
  mappings don't need to do anything at unmap time.

Changes in v3:

- Adjust the WARN_ON checks for the new ->ops functions as suggested
  by Rob Clark and Sumit Semwal.
- Rebased on top of latest dma-buf-next git.

Changes in v4:

- Fixup a missing - in a return -EINVAL; statement.

Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
drivers/base/dma-buf.c
include/linux/dma-buf.h