[PATCH] drm/amdgpu: put MQDs in VRAM

Luben Tuikov luben.tuikov at amd.com
Wed May 3 13:37:32 UTC 2023


Reviewed-by: Luben Tuikov <luben.tuikov at amd.com>

Regards,
Luben

On 2023-05-01 10:55, Alex Deucher wrote:
> Ping?
> 
> Alex
> 
> On Fri, Apr 28, 2023 at 11:57 AM Alex Deucher <alexander.deucher at amd.com> wrote:
>>
>> Reduces preemption latency.
>> Only enable this for gfx10 and 11 for now
>> to avoid changing behavior on gfx 8 and 9.
>>
>> v2: move MES MQDs into VRAM as well (YuBiao)
>> v3: enable on gfx10, 11 only (Alex)
>> v4: minor style changes, document why gfx10/11 only (Alex)
>>
>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>> ---
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 9 +++++++--
>>  drivers/gpu/drm/amd/amdgpu/mes_v10_1.c  | 1 +
>>  drivers/gpu/drm/amd/amdgpu/mes_v11_0.c  | 1 +
>>  3 files changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> index 90f5d302d5f3..b91be56ba773 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>> @@ -382,6 +382,11 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>>         int r, i, j;
>>         struct amdgpu_kiq *kiq = &adev->gfx.kiq[xcc_id];
>>         struct amdgpu_ring *ring = &kiq->ring;
>> +       u32 domain = AMDGPU_GEM_DOMAIN_GTT;
>> +
>> +       /* Only enable on gfx10 and 11 for now to avoid changing behavior on older chips */
>> +       if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 0, 0))
>> +               domain |= AMDGPU_GEM_DOMAIN_VRAM;
>>
>>         /* create MQD for KIQ */
>>         if (!adev->enable_mes_kiq && !ring->mqd_obj) {
>> @@ -413,7 +418,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>>                         ring = &adev->gfx.gfx_ring[i];
>>                         if (!ring->mqd_obj) {
>>                                 r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
>> -                                                           AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>> +                                                           domain, &ring->mqd_obj,
>>                                                             &ring->mqd_gpu_addr, &ring->mqd_ptr);
>>                                 if (r) {
>>                                         dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
>> @@ -435,7 +440,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>>                 ring = &adev->gfx.compute_ring[j];
>>                 if (!ring->mqd_obj) {
>>                         r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
>> -                                                   AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>> +                                                   domain, &ring->mqd_obj,
>>                                                     &ring->mqd_gpu_addr, &ring->mqd_ptr);
>>                         if (r) {
>>                                 dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
>> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
>> index 0599f8a6813e..4560476c7c31 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
>> @@ -901,6 +901,7 @@ static int mes_v10_1_mqd_sw_init(struct amdgpu_device *adev,
>>                 return 0;
>>
>>         r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
>> +                                   AMDGPU_GEM_DOMAIN_VRAM |
>>                                     AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>>                                     &ring->mqd_gpu_addr, &ring->mqd_ptr);
>>         if (r) {
>> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>> index e853bcb892fc..3adb450eec07 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>> @@ -999,6 +999,7 @@ static int mes_v11_0_mqd_sw_init(struct amdgpu_device *adev,
>>                 return 0;
>>
>>         r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
>> +                                   AMDGPU_GEM_DOMAIN_VRAM |
>>                                     AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>>                                     &ring->mqd_gpu_addr, &ring->mqd_ptr);
>>         if (r) {
>> --
>> 2.40.0
>>



More information about the amd-gfx mailing list