diff options
author | Oak Zeng <Oak.Zeng@amd.com> | 2019-06-03 21:25:52 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-06-11 12:56:59 -0500 |
commit | 8636e53c4715d0fb92980d39e070c2c897b5a96e (patch) | |
tree | 77e8f9823adaecf008877b02c9df7ef8b8e60ea0 /drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | |
parent | d39b7737346328b66c46c54be973c5b3c176fc67 (diff) |
drm/amdkfd: Separate mqd allocation and initialization
Introduce a new mqd allocation interface and split the original
init_mqd function into two functions: allocate_mqd and init_mqd.
Also renamed uninit_mqd to free_mqd. This is preparation work to
fix a circular lock dependency.
Signed-off-by: Oak Zeng <Oak.Zeng@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h')
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h index 66b8c67e5340..550b61e81015 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h @@ -39,7 +39,7 @@ * @destroy_mqd: Destroys the HQD slot and by that preempt the relevant queue. * Used only for no cp scheduling. * - * @uninit_mqd: Releases the mqd buffer from local gpu memory. + * @free_mqd: Releases the mqd buffer from local gpu memory. * * @is_occupied: Checks if the relevant HQD slot is occupied. * @@ -64,8 +64,11 @@ */ extern int pipe_priority_map[]; struct mqd_manager { - int (*init_mqd)(struct mqd_manager *mm, void **mqd, - struct kfd_mem_obj **mqd_mem_obj, uint64_t *gart_addr, + struct kfd_mem_obj* (*allocate_mqd)(struct kfd_dev *kfd, + struct queue_properties *q); + + void (*init_mqd)(struct mqd_manager *mm, void **mqd, + struct kfd_mem_obj *mqd_mem_obj, uint64_t *gart_addr, struct queue_properties *q); int (*load_mqd)(struct mqd_manager *mm, void *mqd, @@ -73,7 +76,7 @@ struct mqd_manager { struct queue_properties *p, struct mm_struct *mms); - int (*update_mqd)(struct mqd_manager *mm, void *mqd, + void (*update_mqd)(struct mqd_manager *mm, void *mqd, struct queue_properties *q); int (*destroy_mqd)(struct mqd_manager *mm, void *mqd, @@ -81,7 +84,7 @@ struct mqd_manager { unsigned int timeout, uint32_t pipe_id, uint32_t queue_id); - void (*uninit_mqd)(struct mqd_manager *mm, void *mqd, + void (*free_mqd)(struct mqd_manager *mm, void *mqd, struct kfd_mem_obj *mqd_mem_obj); bool (*is_occupied)(struct mqd_manager *mm, void *mqd, @@ -102,11 +105,12 @@ struct mqd_manager { uint32_t mqd_size; }; -struct kfd_mem_obj *allocate_hiq_mqd(struct kfd_dev *dev); +struct kfd_mem_obj *allocate_hiq_mqd(struct kfd_dev *dev, + struct queue_properties *q); struct kfd_mem_obj *allocate_sdma_mqd(struct kfd_dev *dev, struct queue_properties *q); -void uninit_mqd_hiq_sdma(struct mqd_manager *mm, void *mqd, +void free_mqd_hiq_sdma(struct mqd_manager *mm, void *mqd, struct kfd_mem_obj *mqd_mem_obj); void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, |