[PATCH 5/5] drm/amdgpu/gfx: enable mes to map legacy queue support
Christian König
christian.koenig at amd.com
Thu Apr 25 14:03:10 UTC 2024
Shashank can you take a look as well.
Thanks,
Christian.
Am 25.04.24 um 15:40 schrieb Alex Deucher:
> Series looks good to me.
>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
> On Thu, Apr 25, 2024 at 6:07 AM Jack Xiao <Jack.Xiao at amd.com> wrote:
>> Enable mes to map legacy queue support.
>>
>> Signed-off-by: Jack Xiao <Jack.Xiao at amd.com>
>> Reviewed-by: Hawking Zhang <Hawking.Zhang at amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 39 +++++++++++++++++++++----
>> 1 file changed, 34 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> index d95555dc5485..172b7ba5d0a6 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> @@ -622,10 +622,28 @@ int amdgpu_gfx_enable_kcq(struct amdgpu_device *adev, int xcc_id)
>> queue_mask |= (1ull << amdgpu_queue_mask_bit_to_set_resource_bit(adev, i));
>> }
>>
>> - DRM_INFO("kiq ring mec %d pipe %d q %d\n", kiq_ring->me, kiq_ring->pipe,
>> - kiq_ring->queue);
>> amdgpu_device_flush_hdp(adev, NULL);
>>
>> + if (adev->enable_mes)
>> + queue_mask = ~0ULL;
>> +
>> + if (adev->enable_mes) {
>> + for (i = 0; i < adev->gfx.num_compute_rings; i++) {
>> + j = i + xcc_id * adev->gfx.num_compute_rings;
>> + r = amdgpu_mes_map_legacy_queue(adev,
>> + &adev->gfx.compute_ring[j]);
>> + if (r) {
>> + DRM_ERROR("failed to map compute queue\n");
>> + return r;
>> + }
>> + }
>> +
>> + return 0;
>> + }
>> +
>> + DRM_INFO("kiq ring mec %d pipe %d q %d\n", kiq_ring->me, kiq_ring->pipe,
>> + kiq_ring->queue);
>> +
>> spin_lock(&kiq->ring_lock);
>> r = amdgpu_ring_alloc(kiq_ring, kiq->pmf->map_queues_size *
>> adev->gfx.num_compute_rings +
>> @@ -636,9 +654,6 @@ int amdgpu_gfx_enable_kcq(struct amdgpu_device *adev, int xcc_id)
>> return r;
>> }
>>
>> - if (adev->enable_mes)
>> - queue_mask = ~0ULL;
>> -
>> kiq->pmf->kiq_set_resources(kiq_ring, queue_mask);
>> for (i = 0; i < adev->gfx.num_compute_rings; i++) {
>> j = i + xcc_id * adev->gfx.num_compute_rings;
>> @@ -665,6 +680,20 @@ int amdgpu_gfx_enable_kgq(struct amdgpu_device *adev, int xcc_id)
>>
>> amdgpu_device_flush_hdp(adev, NULL);
>>
>> + if (adev->enable_mes) {
>> + for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
>> + j = i + xcc_id * adev->gfx.num_gfx_rings;
>> + r = amdgpu_mes_map_legacy_queue(adev,
>> + &adev->gfx.gfx_ring[j]);
>> + if (r) {
>> + DRM_ERROR("failed to map gfx queue\n");
>> + return r;
>> + }
>> + }
>> +
>> + return 0;
>> + }
>> +
>> spin_lock(&kiq->ring_lock);
>> /* No need to map kcq on the slave */
>> if (amdgpu_gfx_is_master_xcc(adev, xcc_id)) {
>> --
>> 2.41.0
>>
More information about the amd-gfx
mailing list