> -----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