]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
dma-buf: remove kmap_atomic interface
authorChristian König <christian.koenig@amd.com>
Mon, 28 May 2018 11:34:01 +0000 (13:34 +0200)
committerChristian König <easy2remember.chk@googlemail.com>
Wed, 20 Jun 2018 13:59:34 +0000 (15:59 +0200)
Neither used nor correctly implemented anywhere. Just completely remove
the interface.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Sumit Semwal <sumit.semwal@linaro.org>
Link: https://patchwork.freedesktop.org/patch/226645/
17 files changed:
drivers/dma-buf/dma-buf.c
drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
drivers/gpu/drm/armada/armada_gem.c
drivers/gpu/drm/drm_prime.c
drivers/gpu/drm/i915/i915_gem_dmabuf.c
drivers/gpu/drm/i915/selftests/mock_dmabuf.c
drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
drivers/gpu/drm/tegra/gem.c
drivers/gpu/drm/udl/udl_dmabuf.c
drivers/gpu/drm/vmwgfx/vmwgfx_prime.c
drivers/media/common/videobuf2/videobuf2-dma-contig.c
drivers/media/common/videobuf2/videobuf2-dma-sg.c
drivers/media/common/videobuf2/videobuf2-vmalloc.c
drivers/staging/android/ion/ion.c
drivers/tee/tee_shm.c
include/drm/drm_prime.h
include/linux/dma-buf.h

index 50771063c617abab26afc3b771b24b26024a54b3..13884474d1588f7a086154d3b06dbd09ff28e881 100644 (file)
@@ -405,7 +405,6 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
                          || !exp_info->ops->map_dma_buf
                          || !exp_info->ops->unmap_dma_buf
                          || !exp_info->ops->release
-                         || !exp_info->ops->map_atomic
                          || !exp_info->ops->map
                          || !exp_info->ops->mmap)) {
                return ERR_PTR(-EINVAL);
@@ -687,26 +686,14 @@ EXPORT_SYMBOL_GPL(dma_buf_unmap_attachment);
  *      void \*dma_buf_kmap(struct dma_buf \*, unsigned long);
  *      void dma_buf_kunmap(struct dma_buf \*, unsigned long, void \*);
  *
- *   There are also atomic variants of these interfaces. Like for kmap they
- *   facilitate non-blocking fast-paths. Neither the importer nor the exporter
- *   (in the callback) is allowed to block when using these.
- *
- *   Interfaces::
- *      void \*dma_buf_kmap_atomic(struct dma_buf \*, unsigned long);
- *      void dma_buf_kunmap_atomic(struct dma_buf \*, unsigned long, void \*);
- *
- *   For importers all the restrictions of using kmap apply, like the limited
- *   supply of kmap_atomic slots. Hence an importer shall only hold onto at
- *   max 2 atomic dma_buf kmaps at the same time (in any given process context).
+ *   Implementing the functions is optional for exporters and for importers all
+ *   the restrictions of using kmap apply.
  *
  *   dma_buf kmap calls outside of the range specified in begin_cpu_access are
  *   undefined. If the range is not PAGE_SIZE aligned, kmap needs to succeed on
  *   the partial chunks at the beginning and end but may return stale or bogus
  *   data outside of the range (in these partial chunks).
  *
- *   Note that these calls need to always succeed. The exporter needs to
- *   complete any preparations that might fail in begin_cpu_access.
- *
  *   For some cases the overhead of kmap can be too high, a vmap interface
  *   is introduced. This interface should be used very carefully, as vmalloc
  *   space is a limited resources on many architectures.
@@ -859,43 +846,6 @@ int dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 }
 EXPORT_SYMBOL_GPL(dma_buf_end_cpu_access);
 
-/**
- * dma_buf_kmap_atomic - Map a page of the buffer object into kernel address
- * space. The same restrictions as for kmap_atomic and friends apply.
- * @dmabuf:    [in]    buffer to map page from.
- * @page_num:  [in]    page in PAGE_SIZE units to map.
- *
- * This call must always succeed, any necessary preparations that might fail
- * need to be done in begin_cpu_access.
- */
-void *dma_buf_kmap_atomic(struct dma_buf *dmabuf, unsigned long page_num)
-{
-       WARN_ON(!dmabuf);
-
-       if (!dmabuf->ops->map_atomic)
-               return NULL;
-       return dmabuf->ops->map_atomic(dmabuf, page_num);
-}
-EXPORT_SYMBOL_GPL(dma_buf_kmap_atomic);
-
-/**
- * dma_buf_kunmap_atomic - Unmap a page obtained by dma_buf_kmap_atomic.
- * @dmabuf:    [in]    buffer to unmap page from.
- * @page_num:  [in]    page in PAGE_SIZE units to unmap.
- * @vaddr:     [in]    kernel space pointer obtained from dma_buf_kmap_atomic.
- *
- * This call must always succeed.
- */
-void dma_buf_kunmap_atomic(struct dma_buf *dmabuf, unsigned long page_num,
-                          void *vaddr)
-{
-       WARN_ON(!dmabuf);
-
-       if (dmabuf->ops->unmap_atomic)
-               dmabuf->ops->unmap_atomic(dmabuf, page_num, vaddr);
-}
-EXPORT_SYMBOL_GPL(dma_buf_kunmap_atomic);
-
 /**
  * dma_buf_kmap - Map a page of the buffer object into kernel address space. The
  * same restrictions as for kmap and friends apply.
index bbbb4f9578db723bd87deff650547af8eae346d2..0558da049827ae1dd2e4bfd649b7256e73d24398 100644 (file)
@@ -238,9 +238,7 @@ static const struct dma_buf_ops amdgpu_dmabuf_ops = {
        .release = drm_gem_dmabuf_release,
        .begin_cpu_access = amdgpu_gem_begin_cpu_access,
        .map = drm_gem_dmabuf_kmap,
-       .map_atomic = drm_gem_dmabuf_kmap_atomic,
        .unmap = drm_gem_dmabuf_kunmap,
-       .unmap_atomic = drm_gem_dmabuf_kunmap_atomic,
        .mmap = drm_gem_dmabuf_mmap,
        .vmap = drm_gem_dmabuf_vmap,
        .vunmap = drm_gem_dmabuf_vunmap,
index a97f509743a596631254ebcd4ec56b853fd9e034..3fb37c75c065d6c548df56f100eb678ed8924481 100644 (file)
@@ -490,8 +490,6 @@ static const struct dma_buf_ops armada_gem_prime_dmabuf_ops = {
        .map_dma_buf    = armada_gem_prime_map_dma_buf,
        .unmap_dma_buf  = armada_gem_prime_unmap_dma_buf,
        .release        = drm_gem_dmabuf_release,
-       .map_atomic     = armada_gem_dmabuf_no_kmap,
-       .unmap_atomic   = armada_gem_dmabuf_no_kunmap,
        .map            = armada_gem_dmabuf_no_kmap,
        .unmap          = armada_gem_dmabuf_no_kunmap,
        .mmap           = armada_gem_dmabuf_mmap,
index 0055d919070cd16e33fa42ba96bcc333b3ff608a..186db2e4c57a11d60dbb4b3b7912e1de7fc03626 100644 (file)
@@ -433,35 +433,6 @@ void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr)
 }
 EXPORT_SYMBOL(drm_gem_dmabuf_vunmap);
 
-/**
- * drm_gem_dmabuf_kmap_atomic - map_atomic implementation for GEM
- * @dma_buf: buffer to be mapped
- * @page_num: page number within the buffer
- *
- * Not implemented. This can be used as the &dma_buf_ops.map_atomic callback.
- */
-void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf,
-                                unsigned long page_num)
-{
-       return NULL;
-}
-EXPORT_SYMBOL(drm_gem_dmabuf_kmap_atomic);
-
-/**
- * drm_gem_dmabuf_kunmap_atomic - unmap_atomic implementation for GEM
- * @dma_buf: buffer to be unmapped
- * @page_num: page number within the buffer
- * @addr: virtual address of the buffer
- *
- * Not implemented. This can be used as the &dma_buf_ops.unmap_atomic callback.
- */
-void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf,
-                                 unsigned long page_num, void *addr)
-{
-
-}
-EXPORT_SYMBOL(drm_gem_dmabuf_kunmap_atomic);
-
 /**
  * drm_gem_dmabuf_kmap - map implementation for GEM
  * @dma_buf: buffer to be mapped
@@ -519,9 +490,7 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops =  {
        .unmap_dma_buf = drm_gem_unmap_dma_buf,
        .release = drm_gem_dmabuf_release,
        .map = drm_gem_dmabuf_kmap,
-       .map_atomic = drm_gem_dmabuf_kmap_atomic,
        .unmap = drm_gem_dmabuf_kunmap,
-       .unmap_atomic = drm_gem_dmabuf_kunmap_atomic,
        .mmap = drm_gem_dmabuf_mmap,
        .vmap = drm_gem_dmabuf_vmap,
        .vunmap = drm_gem_dmabuf_vunmap,
index 69a7aec49e84e06d70b5800af653d951d522049a..82e2ca17a441eed4c9f562b9d9ee9aa45f2e740a 100644 (file)
@@ -111,15 +111,6 @@ static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr)
        i915_gem_object_unpin_map(obj);
 }
 
-static void *i915_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num)
-{
-       return NULL;
-}
-
-static void i915_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr)
-{
-
-}
 static void *i915_gem_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num)
 {
        struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf);
@@ -225,9 +216,7 @@ static const struct dma_buf_ops i915_dmabuf_ops =  {
        .unmap_dma_buf = i915_gem_unmap_dma_buf,
        .release = drm_gem_dmabuf_release,
        .map = i915_gem_dmabuf_kmap,
-       .map_atomic = i915_gem_dmabuf_kmap_atomic,
        .unmap = i915_gem_dmabuf_kunmap,
-       .unmap_atomic = i915_gem_dmabuf_kunmap_atomic,
        .mmap = i915_gem_dmabuf_mmap,
        .vmap = i915_gem_dmabuf_vmap,
        .vunmap = i915_gem_dmabuf_vunmap,
index 302f7d1036359ab47db4009037561b99e2d617d6..f81fda8ea45ed9d81c68b3ff1a7b33fa6b56691d 100644 (file)
@@ -130,9 +130,7 @@ static const struct dma_buf_ops mock_dmabuf_ops =  {
        .unmap_dma_buf = mock_unmap_dma_buf,
        .release = mock_dmabuf_release,
        .map = mock_dmabuf_kmap,
-       .map_atomic = mock_dmabuf_kmap_atomic,
        .unmap = mock_dmabuf_kunmap,
-       .unmap_atomic = mock_dmabuf_kunmap_atomic,
        .mmap = mock_dmabuf_mmap,
        .vmap = mock_dmabuf_vmap,
        .vunmap = mock_dmabuf_vunmap,
index 8e41d649e248dd14ba6a5340c9e24db177088a6d..1a073f9b283494c9e514052de86b912f172ffe4e 100644 (file)
@@ -148,8 +148,6 @@ static const struct dma_buf_ops omap_dmabuf_ops = {
        .release = drm_gem_dmabuf_release,
        .begin_cpu_access = omap_gem_dmabuf_begin_cpu_access,
        .end_cpu_access = omap_gem_dmabuf_end_cpu_access,
-       .map_atomic = omap_gem_dmabuf_kmap_atomic,
-       .unmap_atomic = omap_gem_dmabuf_kunmap_atomic,
        .map = omap_gem_dmabuf_kmap,
        .unmap = omap_gem_dmabuf_kunmap,
        .mmap = omap_gem_dmabuf_mmap,
index 8b0b4ff64bb41a812468af38518a266e4ac945db..d7661702c11c37cc85fe838bb50c54952819a302 100644 (file)
@@ -596,18 +596,6 @@ static int tegra_gem_prime_end_cpu_access(struct dma_buf *buf,
        return 0;
 }
 
-static void *tegra_gem_prime_kmap_atomic(struct dma_buf *buf,
-                                        unsigned long page)
-{
-       return NULL;
-}
-
-static void tegra_gem_prime_kunmap_atomic(struct dma_buf *buf,
-                                         unsigned long page,
-                                         void *addr)
-{
-}
-
 static void *tegra_gem_prime_kmap(struct dma_buf *buf, unsigned long page)
 {
        return NULL;
@@ -648,8 +636,6 @@ static const struct dma_buf_ops tegra_gem_prime_dmabuf_ops = {
        .release = tegra_gem_prime_release,
        .begin_cpu_access = tegra_gem_prime_begin_cpu_access,
        .end_cpu_access = tegra_gem_prime_end_cpu_access,
-       .map_atomic = tegra_gem_prime_kmap_atomic,
-       .unmap_atomic = tegra_gem_prime_kunmap_atomic,
        .map = tegra_gem_prime_kmap,
        .unmap = tegra_gem_prime_kunmap,
        .mmap = tegra_gem_prime_mmap,
index 91ae60309d3e91231da70a1a8387d30f32a8495c..556f62662aa92b41fefb738c1036dbd2eef18432 100644 (file)
@@ -157,27 +157,12 @@ static void *udl_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num)
        return NULL;
 }
 
-static void *udl_dmabuf_kmap_atomic(struct dma_buf *dma_buf,
-                                   unsigned long page_num)
-{
-       /* TODO */
-
-       return NULL;
-}
-
 static void udl_dmabuf_kunmap(struct dma_buf *dma_buf,
                              unsigned long page_num, void *addr)
 {
        /* TODO */
 }
 
-static void udl_dmabuf_kunmap_atomic(struct dma_buf *dma_buf,
-                                    unsigned long page_num,
-                                    void *addr)
-{
-       /* TODO */
-}
-
 static int udl_dmabuf_mmap(struct dma_buf *dma_buf,
                           struct vm_area_struct *vma)
 {
@@ -192,9 +177,7 @@ static const struct dma_buf_ops udl_dmabuf_ops = {
        .map_dma_buf            = udl_map_dma_buf,
        .unmap_dma_buf          = udl_unmap_dma_buf,
        .map                    = udl_dmabuf_kmap,
-       .map_atomic             = udl_dmabuf_kmap_atomic,
        .unmap                  = udl_dmabuf_kunmap,
-       .unmap_atomic           = udl_dmabuf_kunmap_atomic,
        .mmap                   = udl_dmabuf_mmap,
        .release                = drm_gem_dmabuf_release,
 };
index fbffb37ccf42e6d547878c96eb581197093bec0a..373bc6da2f843265c763328b453444d665a9acb7 100644 (file)
@@ -71,17 +71,6 @@ static void vmw_prime_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr)
 {
 }
 
-static void *vmw_prime_dmabuf_kmap_atomic(struct dma_buf *dma_buf,
-               unsigned long page_num)
-{
-       return NULL;
-}
-
-static void vmw_prime_dmabuf_kunmap_atomic(struct dma_buf *dma_buf,
-               unsigned long page_num, void *addr)
-{
-
-}
 static void *vmw_prime_dmabuf_kmap(struct dma_buf *dma_buf,
                unsigned long page_num)
 {
@@ -108,9 +97,7 @@ const struct dma_buf_ops vmw_prime_dmabuf_ops =  {
        .unmap_dma_buf = vmw_prime_unmap_dma_buf,
        .release = NULL,
        .map = vmw_prime_dmabuf_kmap,
-       .map_atomic = vmw_prime_dmabuf_kmap_atomic,
        .unmap = vmw_prime_dmabuf_kunmap,
-       .unmap_atomic = vmw_prime_dmabuf_kunmap_atomic,
        .mmap = vmw_prime_dmabuf_mmap,
        .vmap = vmw_prime_dmabuf_vmap,
        .vunmap = vmw_prime_dmabuf_vunmap,
index 12d0072c52c2881241c18460a0524c8f8584c306..aff0ab7bf83d565e81507e48f9ae793586d2f3fd 100644 (file)
@@ -358,7 +358,6 @@ static const struct dma_buf_ops vb2_dc_dmabuf_ops = {
        .map_dma_buf = vb2_dc_dmabuf_ops_map,
        .unmap_dma_buf = vb2_dc_dmabuf_ops_unmap,
        .map = vb2_dc_dmabuf_ops_kmap,
-       .map_atomic = vb2_dc_dmabuf_ops_kmap,
        .vmap = vb2_dc_dmabuf_ops_vmap,
        .mmap = vb2_dc_dmabuf_ops_mmap,
        .release = vb2_dc_dmabuf_ops_release,
index cf94765e593fbc6643269809de385b621e677f50..015e737095cdd6644b4e0332120aa3ee993eb1d0 100644 (file)
@@ -507,7 +507,6 @@ static const struct dma_buf_ops vb2_dma_sg_dmabuf_ops = {
        .map_dma_buf = vb2_dma_sg_dmabuf_ops_map,
        .unmap_dma_buf = vb2_dma_sg_dmabuf_ops_unmap,
        .map = vb2_dma_sg_dmabuf_ops_kmap,
-       .map_atomic = vb2_dma_sg_dmabuf_ops_kmap,
        .vmap = vb2_dma_sg_dmabuf_ops_vmap,
        .mmap = vb2_dma_sg_dmabuf_ops_mmap,
        .release = vb2_dma_sg_dmabuf_ops_release,
index cdec023a918df613d1a7763dc4eb0f6db5a4ca28..6dfbd5b0590759e0c712094dffb96518900efa1a 100644 (file)
@@ -346,7 +346,6 @@ static const struct dma_buf_ops vb2_vmalloc_dmabuf_ops = {
        .map_dma_buf = vb2_vmalloc_dmabuf_ops_map,
        .unmap_dma_buf = vb2_vmalloc_dmabuf_ops_unmap,
        .map = vb2_vmalloc_dmabuf_ops_kmap,
-       .map_atomic = vb2_vmalloc_dmabuf_ops_kmap,
        .vmap = vb2_vmalloc_dmabuf_ops_vmap,
        .mmap = vb2_vmalloc_dmabuf_ops_mmap,
        .release = vb2_vmalloc_dmabuf_ops_release,
index e74db790254978703f1ad711cc2784143a33164a..a5220445b5e8f2c0625fa2f6293b82728b7f5411 100644 (file)
@@ -369,8 +369,6 @@ static const struct dma_buf_ops dma_buf_ops = {
        .detach = ion_dma_buf_detatch,
        .begin_cpu_access = ion_dma_buf_begin_cpu_access,
        .end_cpu_access = ion_dma_buf_end_cpu_access,
-       .map_atomic = ion_dma_buf_kmap,
-       .unmap_atomic = ion_dma_buf_kunmap,
        .map = ion_dma_buf_kmap,
        .unmap = ion_dma_buf_kunmap,
 };
index 556960a1bab3b4631b10a2803ab54167b06c376b..df4a1553b78b1ab5123640387ab5eab526bb87a4 100644 (file)
@@ -80,11 +80,6 @@ static void tee_shm_op_release(struct dma_buf *dmabuf)
        tee_shm_release(shm);
 }
 
-static void *tee_shm_op_map_atomic(struct dma_buf *dmabuf, unsigned long pgnum)
-{
-       return NULL;
-}
-
 static void *tee_shm_op_map(struct dma_buf *dmabuf, unsigned long pgnum)
 {
        return NULL;
@@ -107,7 +102,6 @@ static const struct dma_buf_ops tee_shm_dma_buf_ops = {
        .map_dma_buf = tee_shm_op_map_dma_buf,
        .unmap_dma_buf = tee_shm_op_unmap_dma_buf,
        .release = tee_shm_op_release,
-       .map_atomic = tee_shm_op_map_atomic,
        .map = tee_shm_op_map,
        .mmap = tee_shm_op_mmap,
 };
index ef338151cea8d91b567de84957e514f86fd53e35..d716d653b096465805e0e5c2f26c3bd0e388a708 100644 (file)
@@ -93,10 +93,6 @@ void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach,
                           enum dma_data_direction dir);
 void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf);
 void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr);
-void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf,
-                                unsigned long page_num);
-void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf,
-                                 unsigned long page_num, void *addr);
 void *drm_gem_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num);
 void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf, unsigned long page_num,
                           void *addr);
index c0ad5bf61188e401adbcc25e74f2b0d8640c249d..58725f890b5b6185cda07d48591d9f1162f78c3d 100644 (file)
@@ -205,8 +205,6 @@ struct dma_buf_ops {
         * to be restarted.
         */
        int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
-       void *(*map_atomic)(struct dma_buf *, unsigned long);
-       void (*unmap_atomic)(struct dma_buf *, unsigned long, void *);
        void *(*map)(struct dma_buf *, unsigned long);
        void (*unmap)(struct dma_buf *, unsigned long, void *);
 
@@ -394,8 +392,6 @@ int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
                             enum dma_data_direction dir);
 int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
                           enum dma_data_direction dir);
-void *dma_buf_kmap_atomic(struct dma_buf *, unsigned long);
-void dma_buf_kunmap_atomic(struct dma_buf *, unsigned long, void *);
 void *dma_buf_kmap(struct dma_buf *, unsigned long);
 void dma_buf_kunmap(struct dma_buf *, unsigned long, void *);