[PATCH] drm/amdgpu: rename amdgpu_prime.[ch] into amdgpu_dma_buf.[ch]

Kuehling, Felix Felix.Kuehling at amd.com
Mon May 6 20:38:01 UTC 2019


On 2019-05-06 7:24 a.m., Christian König wrote:
> [CAUTION: External Email]
>
> We are getting a dma-buf implementation completely separate from drm prime,
> so rename the files now and cleanup the code a bit.
>
> No functional change.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>

Acked-by: Felix Kuehling <Felix.Kuehling at amd.com>


> ---
>   drivers/gpu/drm/amd/amdgpu/Makefile           |   2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c    |   1 +
>   .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  |   1 +
>   .../{amdgpu_prime.c => amdgpu_dma_buf.c}      | 131 +++++++++---------
>   drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h   |  46 ++++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c       |   2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h       |  16 ---
>   7 files changed, 116 insertions(+), 83 deletions(-)
>   rename drivers/gpu/drm/amd/amdgpu/{amdgpu_prime.c => amdgpu_dma_buf.c} (93%)
>   create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile
> index 7d539ba6400d..11a651ff7f0d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/Makefile
> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile
> @@ -49,7 +49,7 @@ amdgpu-y += amdgpu_device.o amdgpu_kms.o \
>          amdgpu_cs.o amdgpu_bios.o amdgpu_benchmark.o amdgpu_test.o \
>          amdgpu_pm.o atombios_dp.o amdgpu_afmt.o amdgpu_trace_points.o \
>          atombios_encoders.o amdgpu_sa.o atombios_i2c.o \
> -       amdgpu_prime.o amdgpu_vm.o amdgpu_ib.o amdgpu_pll.o \
> +       amdgpu_dma_buf.o amdgpu_vm.o amdgpu_ib.o amdgpu_pll.o \
>          amdgpu_ucode.o amdgpu_bo_list.o amdgpu_ctx.o amdgpu_sync.o \
>          amdgpu_gtt_mgr.o amdgpu_vram_mgr.o amdgpu_virt.o amdgpu_atomfirmware.o \
>          amdgpu_vf_error.o amdgpu_sched.o amdgpu_debugfs.o amdgpu_ids.o \
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index aeead072fa79..e829c53accf5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -25,6 +25,7 @@
>   #include <drm/drmP.h>
>   #include "amdgpu.h"
>   #include "amdgpu_gfx.h"
> +#include "amdgpu_dma_buf.h"
>   #include <linux/module.h>
>   #include <linux/dma-buf.h>
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 047bba8c62d6..2bc80942e5d5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -30,6 +30,7 @@
>   #include "amdgpu_object.h"
>   #include "amdgpu_vm.h"
>   #include "amdgpu_amdkfd.h"
> +#include "amdgpu_dma_buf.h"
>
>   /* Special VM and GART address alignment needed for VI pre-Fiji due to
>    * a HW bug.
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> similarity index 93%
> rename from drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
> rename to drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> index a38e0fb4a6fe..4711cf1b5bd2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> @@ -1,5 +1,5 @@
>   /*
> - * Copyright 2012 Advanced Micro Devices, Inc.
> + * Copyright 2019 Advanced Micro Devices, Inc.
>    *
>    * Permission is hereby granted, free of charge, to any person obtaining a
>    * copy of this software and associated documentation files (the "Software"),
> @@ -103,7 +103,8 @@ void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
>    * Returns:
>    * 0 on success or a negative error code on failure.
>    */
> -int amdgpu_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
> +int amdgpu_gem_prime_mmap(struct drm_gem_object *obj,
> +                         struct vm_area_struct *vma)
>   {
>          struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
>          struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
> @@ -137,57 +138,6 @@ int amdgpu_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma
>          return ret;
>   }
>
> -/**
> - * amdgpu_gem_prime_import_sg_table - &drm_driver.gem_prime_import_sg_table
> - * implementation
> - * @dev: DRM device
> - * @attach: DMA-buf attachment
> - * @sg: Scatter/gather table
> - *
> - * Imports shared DMA buffer memory exported by another device.
> - *
> - * Returns:
> - * A new GEM BO of the given DRM device, representing the memory
> - * described by the given DMA-buf attachment and scatter/gather table.
> - */
> -struct drm_gem_object *
> -amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
> -                                struct dma_buf_attachment *attach,
> -                                struct sg_table *sg)
> -{
> -       struct reservation_object *resv = attach->dmabuf->resv;
> -       struct amdgpu_device *adev = dev->dev_private;
> -       struct amdgpu_bo *bo;
> -       struct amdgpu_bo_param bp;
> -       int ret;
> -
> -       memset(&bp, 0, sizeof(bp));
> -       bp.size = attach->dmabuf->size;
> -       bp.byte_align = PAGE_SIZE;
> -       bp.domain = AMDGPU_GEM_DOMAIN_CPU;
> -       bp.flags = 0;
> -       bp.type = ttm_bo_type_sg;
> -       bp.resv = resv;
> -       ww_mutex_lock(&resv->lock, NULL);
> -       ret = amdgpu_bo_create(adev, &bp, &bo);
> -       if (ret)
> -               goto error;
> -
> -       bo->tbo.sg = sg;
> -       bo->tbo.ttm->sg = sg;
> -       bo->allowed_domains = AMDGPU_GEM_DOMAIN_GTT;
> -       bo->preferred_domains = AMDGPU_GEM_DOMAIN_GTT;
> -       if (attach->dmabuf->ops != &amdgpu_dmabuf_ops)
> -               bo->prime_shared_count = 1;
> -
> -       ww_mutex_unlock(&resv->lock);
> -       return &bo->gem_base;
> -
> -error:
> -       ww_mutex_unlock(&resv->lock);
> -       return ERR_PTR(ret);
> -}
> -
>   static int
>   __reservation_object_make_exclusive(struct reservation_object *obj)
>   {
> @@ -231,7 +181,7 @@ __reservation_object_make_exclusive(struct reservation_object *obj)
>   }
>
>   /**
> - * amdgpu_gem_map_attach - &dma_buf_ops.attach implementation
> + * amdgpu_dma_buf_map_attach - &dma_buf_ops.attach implementation
>    * @dma_buf: Shared DMA buffer
>    * @attach: DMA-buf attachment
>    *
> @@ -242,8 +192,8 @@ __reservation_object_make_exclusive(struct reservation_object *obj)
>    * Returns:
>    * 0 on success or a negative error code on failure.
>    */
> -static int amdgpu_gem_map_attach(struct dma_buf *dma_buf,
> -                                struct dma_buf_attachment *attach)
> +static int amdgpu_dma_buf_map_attach(struct dma_buf *dma_buf,
> +                                    struct dma_buf_attachment *attach)
>   {
>          struct drm_gem_object *obj = dma_buf->priv;
>          struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
> @@ -291,15 +241,15 @@ static int amdgpu_gem_map_attach(struct dma_buf *dma_buf,
>   }
>
>   /**
> - * amdgpu_gem_map_detach - &dma_buf_ops.detach implementation
> + * amdgpu_dma_buf_map_detach - &dma_buf_ops.detach implementation
>    * @dma_buf: Shared DMA buffer
>    * @attach: DMA-buf attachment
>    *
>    * This is called when a shared DMA buffer no longer needs to be accessible by
>    * another device. For now, simply unpins the buffer from GTT.
>    */
> -static void amdgpu_gem_map_detach(struct dma_buf *dma_buf,
> -                                 struct dma_buf_attachment *attach)
> +static void amdgpu_dma_buf_map_detach(struct dma_buf *dma_buf,
> +                                     struct dma_buf_attachment *attach)
>   {
>          struct drm_gem_object *obj = dma_buf->priv;
>          struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
> @@ -334,7 +284,7 @@ struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *obj)
>   }
>
>   /**
> - * amdgpu_gem_begin_cpu_access - &dma_buf_ops.begin_cpu_access implementation
> + * amdgpu_dma_buf_begin_cpu_access - &dma_buf_ops.begin_cpu_access implementation
>    * @dma_buf: Shared DMA buffer
>    * @direction: Direction of DMA transfer
>    *
> @@ -345,8 +295,8 @@ struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *obj)
>    * Returns:
>    * 0 on success or a negative error code on failure.
>    */
> -static int amdgpu_gem_begin_cpu_access(struct dma_buf *dma_buf,
> -                                      enum dma_data_direction direction)
> +static int amdgpu_dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
> +                                          enum dma_data_direction direction)
>   {
>          struct amdgpu_bo *bo = gem_to_amdgpu_bo(dma_buf->priv);
>          struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
> @@ -374,12 +324,12 @@ static int amdgpu_gem_begin_cpu_access(struct dma_buf *dma_buf,
>   }
>
>   const struct dma_buf_ops amdgpu_dmabuf_ops = {
> -       .attach = amdgpu_gem_map_attach,
> -       .detach = amdgpu_gem_map_detach,
> +       .attach = amdgpu_dma_buf_map_attach,
> +       .detach = amdgpu_dma_buf_map_detach,
>          .map_dma_buf = drm_gem_map_dma_buf,
>          .unmap_dma_buf = drm_gem_unmap_dma_buf,
>          .release = drm_gem_dmabuf_release,
> -       .begin_cpu_access = amdgpu_gem_begin_cpu_access,
> +       .begin_cpu_access = amdgpu_dma_buf_begin_cpu_access,
>          .mmap = drm_gem_dmabuf_mmap,
>          .vmap = drm_gem_dmabuf_vmap,
>          .vunmap = drm_gem_dmabuf_vunmap,
> @@ -417,6 +367,57 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
>          return buf;
>   }
>
> +/**
> + * amdgpu_gem_prime_import_sg_table - &drm_driver.gem_prime_import_sg_table
> + * implementation
> + * @dev: DRM device
> + * @attach: DMA-buf attachment
> + * @sg: Scatter/gather table
> + *
> + * Imports shared DMA buffer memory exported by another device.
> + *
> + * Returns:
> + * A new GEM BO of the given DRM device, representing the memory
> + * described by the given DMA-buf attachment and scatter/gather table.
> + */
> +struct drm_gem_object *
> +amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
> +                                struct dma_buf_attachment *attach,
> +                                struct sg_table *sg)
> +{
> +       struct reservation_object *resv = attach->dmabuf->resv;
> +       struct amdgpu_device *adev = dev->dev_private;
> +       struct amdgpu_bo *bo;
> +       struct amdgpu_bo_param bp;
> +       int ret;
> +
> +       memset(&bp, 0, sizeof(bp));
> +       bp.size = attach->dmabuf->size;
> +       bp.byte_align = PAGE_SIZE;
> +       bp.domain = AMDGPU_GEM_DOMAIN_CPU;
> +       bp.flags = 0;
> +       bp.type = ttm_bo_type_sg;
> +       bp.resv = resv;
> +       ww_mutex_lock(&resv->lock, NULL);
> +       ret = amdgpu_bo_create(adev, &bp, &bo);
> +       if (ret)
> +               goto error;
> +
> +       bo->tbo.sg = sg;
> +       bo->tbo.ttm->sg = sg;
> +       bo->allowed_domains = AMDGPU_GEM_DOMAIN_GTT;
> +       bo->preferred_domains = AMDGPU_GEM_DOMAIN_GTT;
> +       if (attach->dmabuf->ops != &amdgpu_dmabuf_ops)
> +               bo->prime_shared_count = 1;
> +
> +       ww_mutex_unlock(&resv->lock);
> +       return &bo->gem_base;
> +
> +error:
> +       ww_mutex_unlock(&resv->lock);
> +       return ERR_PTR(ret);
> +}
> +
>   /**
>    * amdgpu_gem_prime_import - &drm_driver.gem_prime_import implementation
>    * @dev: DRM device
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
> new file mode 100644
> index 000000000000..c7056cbe8685
> --- /dev/null
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
> @@ -0,0 +1,46 @@
> +/*
> + * Copyright 2019 Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + *
> + */
> +#ifndef __AMDGPU_DMA_BUF_H__
> +#define __AMDGPU_DMA_BUF_H__
> +
> +#include <drm/drm_gem.h>
> +
> +struct sg_table *amdgpu_gem_prime_get_sg_table(struct drm_gem_object *obj);
> +struct drm_gem_object *
> +amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
> +                                struct dma_buf_attachment *attach,
> +                                struct sg_table *sg);
> +struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
> +                                       struct drm_gem_object *gobj,
> +                                       int flags);
> +struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev,
> +                                           struct dma_buf *dma_buf);
> +struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *);
> +void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj);
> +void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
> +int amdgpu_gem_prime_mmap(struct drm_gem_object *obj,
> +                         struct vm_area_struct *vma);
> +
> +extern const struct dma_buf_ops amdgpu_dmabuf_ops;
> +
> +#endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 13a68f62bcc8..f4bc2d5e81b1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -36,7 +36,7 @@
>
>   #include "amdgpu.h"
>   #include "amdgpu_irq.h"
> -#include "amdgpu_gem.h"
> +#include "amdgpu_dma_buf.h"
>
>   #include "amdgpu_amdkfd.h"
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
> index f1ddfc50bcc7..b8ba6e27c61f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h
> @@ -39,22 +39,6 @@ int amdgpu_gem_object_open(struct drm_gem_object *obj,
>   void amdgpu_gem_object_close(struct drm_gem_object *obj,
>                                  struct drm_file *file_priv);
>   unsigned long amdgpu_gem_timeout(uint64_t timeout_ns);
> -struct sg_table *amdgpu_gem_prime_get_sg_table(struct drm_gem_object *obj);
> -struct drm_gem_object *
> -amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
> -                                struct dma_buf_attachment *attach,
> -                                struct sg_table *sg);
> -struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
> -                                       struct drm_gem_object *gobj,
> -                                       int flags);
> -struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev,
> -                                           struct dma_buf *dma_buf);
> -struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *);
> -void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj);
> -void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
> -int amdgpu_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
> -
> -extern const struct dma_buf_ops amdgpu_dmabuf_ops;
>
>   /*
>    * GEM objects.
> --
> 2.17.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list