Skip to content

Commit 029c2b0

Browse files
Jack Xiaoalexdeucher
authored andcommitted
drm/amdgpu/mes: add mes mapping legacy queue support
Add mes mapping legacy queue framework support. Signed-off-by: Jack Xiao <[email protected]> Reviewed-by: Hawking Zhang <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 9a5f15d commit 029c2b0

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,28 @@ int amdgpu_mes_remove_hw_queue(struct amdgpu_device *adev, int queue_id)
786786
return 0;
787787
}
788788

789+
int amdgpu_mes_map_legacy_queue(struct amdgpu_device *adev,
790+
struct amdgpu_ring *ring)
791+
{
792+
struct mes_map_legacy_queue_input queue_input;
793+
int r;
794+
795+
memset(&queue_input, 0, sizeof(queue_input));
796+
797+
queue_input.queue_type = ring->funcs->type;
798+
queue_input.doorbell_offset = ring->doorbell_index;
799+
queue_input.pipe_id = ring->pipe;
800+
queue_input.queue_id = ring->queue;
801+
queue_input.mqd_addr = amdgpu_bo_gpu_offset(ring->mqd_obj);
802+
queue_input.wptr_addr = ring->wptr_gpu_addr;
803+
804+
r = adev->mes.funcs->map_legacy_queue(&adev->mes, &queue_input);
805+
if (r)
806+
DRM_ERROR("failed to map legacy queue\n");
807+
808+
return r;
809+
}
810+
789811
int amdgpu_mes_unmap_legacy_queue(struct amdgpu_device *adev,
790812
struct amdgpu_ring *ring,
791813
enum amdgpu_unmap_queues_action action,

drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,15 @@ struct mes_remove_queue_input {
248248
uint64_t gang_context_addr;
249249
};
250250

251+
struct mes_map_legacy_queue_input {
252+
uint32_t queue_type;
253+
uint32_t doorbell_offset;
254+
uint32_t pipe_id;
255+
uint32_t queue_id;
256+
uint64_t mqd_addr;
257+
uint64_t wptr_addr;
258+
};
259+
251260
struct mes_unmap_legacy_queue_input {
252261
enum amdgpu_unmap_queues_action action;
253262
uint32_t queue_type;
@@ -324,6 +333,9 @@ struct amdgpu_mes_funcs {
324333
int (*remove_hw_queue)(struct amdgpu_mes *mes,
325334
struct mes_remove_queue_input *input);
326335

336+
int (*map_legacy_queue)(struct amdgpu_mes *mes,
337+
struct mes_map_legacy_queue_input *input);
338+
327339
int (*unmap_legacy_queue)(struct amdgpu_mes *mes,
328340
struct mes_unmap_legacy_queue_input *input);
329341

@@ -367,6 +379,8 @@ int amdgpu_mes_add_hw_queue(struct amdgpu_device *adev, int gang_id,
367379
int *queue_id);
368380
int amdgpu_mes_remove_hw_queue(struct amdgpu_device *adev, int queue_id);
369381

382+
int amdgpu_mes_map_legacy_queue(struct amdgpu_device *adev,
383+
struct amdgpu_ring *ring);
370384
int amdgpu_mes_unmap_legacy_queue(struct amdgpu_device *adev,
371385
struct amdgpu_ring *ring,
372386
enum amdgpu_unmap_queues_action action,

0 commit comments

Comments
 (0)