[PATCH 6/8] drm/amdgpu: add amdgpu_bo_create_reserved
Deucher, Alexander
Alexander.Deucher at amd.com
Thu Jul 27 17:42:43 UTC 2017
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Christian König
> Sent: Thursday, July 27, 2017 11:44 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH 6/8] drm/amdgpu: add amdgpu_bo_create_reserved
>
> From: Christian König <christian.koenig at amd.com>
>
> Same as amdgpu_bo_create_kernel, but keeps the BO reserved.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 48
> +++++++++++++++++++++++++-----
> drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 4 +++
> 2 files changed, 44 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 81d40e3..494b793 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -220,7 +220,7 @@ static void amdgpu_fill_placement_to_bo(struct
> amdgpu_bo *bo,
> }
>
> /**
> - * amdgpu_bo_create_kernel - create BO for kernel use
> + * amdgpu_bo_create_reserved - create reserved BO for kernel use
> *
> * @adev: amdgpu device object
> * @size: size for the new BO
> @@ -230,14 +230,15 @@ static void amdgpu_fill_placement_to_bo(struct
> amdgpu_bo *bo,
> * @gpu_addr: GPU addr of the pinned BO
> * @cpu_addr: optional CPU address mapping
> *
> - * Allocates and pins a BO for kernel internal use.
> + * Allocates and pins a BO for kernel internal use, and returns it still
> + * reserved.
> *
> * Returns 0 on success, negative error code otherwise.
> */
> -int amdgpu_bo_create_kernel(struct amdgpu_device *adev,
> - unsigned long size, int align,
> - u32 domain, struct amdgpu_bo **bo_ptr,
> - u64 *gpu_addr, void **cpu_addr)
> +int amdgpu_bo_create_reserved(struct amdgpu_device *adev,
> + unsigned long size, int align,
> + u32 domain, struct amdgpu_bo **bo_ptr,
> + u64 *gpu_addr, void **cpu_addr)
> {
> bool free = false;
> int r;
> @@ -275,8 +276,6 @@ int amdgpu_bo_create_kernel(struct amdgpu_device
> *adev,
> }
> }
>
> - amdgpu_bo_unreserve(*bo_ptr);
> -
> return 0;
>
> error_unreserve:
> @@ -290,6 +289,39 @@ int amdgpu_bo_create_kernel(struct
> amdgpu_device *adev,
> }
>
> /**
> + * amdgpu_bo_create_kernel - create BO for kernel use
> + *
> + * @adev: amdgpu device object
> + * @size: size for the new BO
> + * @align: alignment for the new BO
> + * @domain: where to place it
> + * @bo_ptr: resulting BO
> + * @gpu_addr: GPU addr of the pinned BO
> + * @cpu_addr: optional CPU address mapping
> + *
> + * Allocates and pins a BO for kernel internal use.
> + *
> + * Returns 0 on success, negative error code otherwise.
> + */
> +int amdgpu_bo_create_kernel(struct amdgpu_device *adev,
> + unsigned long size, int align,
> + u32 domain, struct amdgpu_bo **bo_ptr,
> + u64 *gpu_addr, void **cpu_addr)
> +{
> + int r;
> +
> + r = amdgpu_bo_create_reserved(adev, size, align, domain, bo_ptr,
> + gpu_addr, cpu_addr);
> +
> + if (r)
> + return r;
> +
> + amdgpu_bo_unreserve(*bo_ptr);
> +
> + return 0;
> +}
> +
> +/**
> * amdgpu_bo_free_kernel - free BO for kernel use
> *
> * @bo: amdgpu BO to free
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> index 3b92d52..cbf6e6d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> @@ -201,6 +201,10 @@ int amdgpu_bo_create_restricted(struct
> amdgpu_device *adev,
> struct ttm_placement *placement,
> struct reservation_object *resv,
> struct amdgpu_bo **bo_ptr);
> +int amdgpu_bo_create_reserved(struct amdgpu_device *adev,
> + unsigned long size, int align,
> + u32 domain, struct amdgpu_bo **bo_ptr,
> + u64 *gpu_addr, void **cpu_addr);
> int amdgpu_bo_create_kernel(struct amdgpu_device *adev,
> unsigned long size, int align,
> u32 domain, struct amdgpu_bo **bo_ptr,
> --
> 2.7.4
>
> _______________________________________________
> 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