drm/amdgpu/userq: move some code around
Move some userq fence handling code into amdgpu_userq_fence.c. This matches the other code in that file. Reviewed-by: Sunil Khatri <sunil.khatri@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -120,6 +120,32 @@ free_fence_drv:
|
||||
return r;
|
||||
}
|
||||
|
||||
static void amdgpu_userq_walk_and_drop_fence_drv(struct xarray *xa)
|
||||
{
|
||||
struct amdgpu_userq_fence_driver *fence_drv;
|
||||
unsigned long index;
|
||||
|
||||
if (xa_empty(xa))
|
||||
return;
|
||||
|
||||
xa_lock(xa);
|
||||
xa_for_each(xa, index, fence_drv) {
|
||||
__xa_erase(xa, index);
|
||||
amdgpu_userq_fence_driver_put(fence_drv);
|
||||
}
|
||||
|
||||
xa_unlock(xa);
|
||||
}
|
||||
|
||||
void
|
||||
amdgpu_userq_fence_driver_free(struct amdgpu_usermode_queue *userq)
|
||||
{
|
||||
amdgpu_userq_walk_and_drop_fence_drv(&userq->fence_drv_xa);
|
||||
xa_destroy(&userq->fence_drv_xa);
|
||||
/* Drop the fence_drv reference held by user queue */
|
||||
amdgpu_userq_fence_driver_put(userq->fence_drv);
|
||||
}
|
||||
|
||||
void amdgpu_userq_fence_driver_process(struct amdgpu_userq_fence_driver *fence_drv)
|
||||
{
|
||||
struct amdgpu_userq_fence *userq_fence, *tmp;
|
||||
|
||||
@@ -66,6 +66,7 @@ void amdgpu_userq_fence_driver_get(struct amdgpu_userq_fence_driver *fence_drv);
|
||||
void amdgpu_userq_fence_driver_put(struct amdgpu_userq_fence_driver *fence_drv);
|
||||
int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
|
||||
struct amdgpu_usermode_queue *userq);
|
||||
void amdgpu_userq_fence_driver_free(struct amdgpu_usermode_queue *userq);
|
||||
void amdgpu_userq_fence_driver_process(struct amdgpu_userq_fence_driver *fence_drv);
|
||||
void amdgpu_userq_fence_driver_destroy(struct kref *ref);
|
||||
int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
@@ -28,32 +28,6 @@
|
||||
#include "amdgpu_userqueue.h"
|
||||
#include "amdgpu_userq_fence.h"
|
||||
|
||||
static void amdgpu_userq_walk_and_drop_fence_drv(struct xarray *xa)
|
||||
{
|
||||
struct amdgpu_userq_fence_driver *fence_drv;
|
||||
unsigned long index;
|
||||
|
||||
if (xa_empty(xa))
|
||||
return;
|
||||
|
||||
xa_lock(xa);
|
||||
xa_for_each(xa, index, fence_drv) {
|
||||
__xa_erase(xa, index);
|
||||
amdgpu_userq_fence_driver_put(fence_drv);
|
||||
}
|
||||
|
||||
xa_unlock(xa);
|
||||
}
|
||||
|
||||
static void
|
||||
amdgpu_userq_fence_driver_free(struct amdgpu_usermode_queue *userq)
|
||||
{
|
||||
amdgpu_userq_walk_and_drop_fence_drv(&userq->fence_drv_xa);
|
||||
xa_destroy(&userq->fence_drv_xa);
|
||||
/* Drop the fence_drv reference held by user queue */
|
||||
amdgpu_userq_fence_driver_put(userq->fence_drv);
|
||||
}
|
||||
|
||||
static void
|
||||
amdgpu_userqueue_cleanup(struct amdgpu_userq_mgr *uq_mgr,
|
||||
struct amdgpu_usermode_queue *queue,
|
||||
|
||||
Reference in New Issue
Block a user