• Daniel Vetter's avatar
    dma-buf: add support for kernel cpu access · fc13020e
    Daniel Vetter authored
    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: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarRob Clark <rob@ti.com>
    Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
    fc13020e
dma-buf.c 11 KB