[PATCH 2/6] drm/amdgpu:need som change on vega10 mailbox

Alex Deucher alexdeucher at gmail.com
Wed May 3 15:20:16 UTC 2017


On Wed, May 3, 2017 at 5:05 AM, Christian König <deathsimple at vodafone.de> wrote:
> Am 03.05.2017 um 05:48 schrieb Monk Liu:
>>
>> if sriov gpu reset is invoked by job timeout, it is run
>> in a global work-queue which is very slow and better not call
>> msleep ortherwise it takes long time to get back CPU.
>>
>> so make below changes:
>>
>> 1: Change msleep 1 to mdelay 5
>> 2: Ignore the ack fail from pf after time out,
>>     because VF FLR will clear ack, sometime VF FLR is done
>>     prior to the beginning of poll_ack so we can ignore this ack
>>
>> TODO:
>> Put job_timedout (and the following gpu reset) in a driver thread,
>> instead of the global work_struct.
>>
>> Change-Id: I4608c67b55c67c88597e03eee35a126d7e850839
>> Signed-off-by: Monk Liu <Monk.Liu at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 18 ++++++++++--------
>>   drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c | 10 +++++-----
>>   2 files changed, 15 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
>> b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
>> index 712f36e..e967a7b 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
>> @@ -124,8 +124,8 @@ static int xgpu_ai_poll_ack(struct amdgpu_device
>> *adev)
>>                         r = -ETIME;
>>                         break;
>>                 }
>> -               msleep(1);
>> -               timeout -= 1;
>> +               mdelay(5);
>> +               timeout -= 5;
>>                 reg = RREG32_NO_KIQ(SOC15_REG_OFFSET(NBIO, 0,
>>
>> mmBIF_BX_PF0_MAILBOX_CONTROL));
>> @@ -141,12 +141,12 @@ static int xgpu_ai_poll_msg(struct amdgpu_device
>> *adev, enum idh_event event)
>>         r = xgpu_ai_mailbox_rcv_msg(adev, event);
>>         while (r) {
>>                 if (timeout <= 0) {
>> -                       pr_err("Doesn't get ack from pf.\n");
>> +                       pr_err("Doesn't get msg:%d from pf.\n", event);
>>                         r = -ETIME;
>>                         break;
>>                 }
>> -               msleep(1);
>> -               timeout -= 1;
>> +               mdelay(5);
>> +               timeout -= 5;
>>                 r = xgpu_ai_mailbox_rcv_msg(adev, event);
>>         }
>> @@ -165,7 +165,7 @@ static int xgpu_ai_send_access_requests(struct
>> amdgpu_device *adev,
>>         /* start to poll ack */
>>         r = xgpu_ai_poll_ack(adev);
>>         if (r)
>> -               return r;
>> +               pr_err("Doesn't get ack from pf, continue\n");
>>         xgpu_ai_mailbox_set_valid(adev, false);
>>   @@ -174,8 +174,10 @@ static int xgpu_ai_send_access_requests(struct
>> amdgpu_device *adev,
>>                 req == IDH_REQ_GPU_FINI_ACCESS ||
>>                 req == IDH_REQ_GPU_RESET_ACCESS) {
>>                 r = xgpu_ai_poll_msg(adev, IDH_READY_TO_ACCESS_GPU);
>> -               if (r)
>> +               if (r) {
>> +                       pr_err("Doesn't get READY_TO_ACCESS_GPU from pf,
>> give up\n");
>>                         return r;
>> +               }
>>         }
>>         return 0;
>> @@ -211,7 +213,7 @@ static int xgpu_ai_mailbox_ack_irq(struct
>> amdgpu_device *adev,
>>                                         struct amdgpu_irq_src *source,
>>                                         struct amdgpu_iv_entry *entry)
>>   {
>> -       DRM_DEBUG("get ack intr and do nothing.\n");
>> +       printk("get ack intr and do nothing.\n");
>
>
> Changing a DRM_DEBUG to a printk looks odd. How about using pr_warn or
> pr_info instead?
>
> Apart from that patch looks good to me, but I don't deeply into that stuff.
>
> So with the printk fixed feel free to add an Acked-by: Christian König
> <christian.koenig at amd.com> to it.

Same here.  with that fixed:
Acked-by: Alex Deucher <alexander.deucher at amd.com>

>
> Regards,
> Christian.
>
>
>>         return 0;
>>   }
>>   diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
>> b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
>> index 7bdc51b..f0d64f1 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
>> @@ -398,8 +398,8 @@ static int xgpu_vi_poll_ack(struct amdgpu_device
>> *adev)
>>                         r = -ETIME;
>>                         break;
>>                 }
>> -               msleep(1);
>> -               timeout -= 1;
>> +               mdelay(5);
>> +               timeout -= 5;
>>                 reg = RREG32_NO_KIQ(mmMAILBOX_CONTROL);
>>         }
>> @@ -418,8 +418,8 @@ static int xgpu_vi_poll_msg(struct amdgpu_device
>> *adev, enum idh_event event)
>>                         r = -ETIME;
>>                         break;
>>                 }
>> -               msleep(1);
>> -               timeout -= 1;
>> +               mdelay(5);
>> +               timeout -= 5;
>>                 r = xgpu_vi_mailbox_rcv_msg(adev, event);
>>         }
>> @@ -447,7 +447,7 @@ static int xgpu_vi_send_access_requests(struct
>> amdgpu_device *adev,
>>                 request == IDH_REQ_GPU_RESET_ACCESS) {
>>                 r = xgpu_vi_poll_msg(adev, IDH_READY_TO_ACCESS_GPU);
>>                 if (r)
>> -                       return r;
>> +                       pr_err("Doesn't get ack from pf, continue\n");
>>         }
>>         return 0;
>
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list