From: "Koenig, Christian" <Christian.Koenig-5C7GfCeVMHo@public.gmane.org>
To: "Lou, Wentao" <Wentao.Lou-5C7GfCeVMHo@public.gmane.org>,
"amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org"
<amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>
Subject: Re: [PATCH] amdgpu_device_recover_vram always failed if only one node in shadow_list
Date: Wed, 3 Apr 2019 07:03:28 +0000 [thread overview]
Message-ID: <7fa9d7ac-fb81-46fb-3fba-962337804142@amd.com> (raw)
In-Reply-To: <MN2PR12MB328059309BE6D3A038FDF12A83570-rweVpJHSKToYX/8oZD8ObAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
Mhm, that sounds like another bug to me which we need to investigate.
Probably a race during freeing of shadow allocations.
Christian.
Am 03.04.19 um 08:35 schrieb Lou, Wentao:
> Hi Christian,
>
> Sometimes shadow->parent would be NULL in my testbed, but not reproduce today...
> Just sent out another patch following your advice.
> Thanks.
>
> BR,
> Wentao
>
>
> -----Original Message-----
> From: Christian König <ckoenig.leichtzumerken@gmail.com>
> Sent: Tuesday, April 2, 2019 6:36 PM
> To: Lou, Wentao <Wentao.Lou@amd.com>; amd-gfx@lists.freedesktop.org
> Subject: Re: [PATCH] amdgpu_device_recover_vram always failed if only one node in shadow_list
>
> Am 02.04.19 um 11:19 schrieb wentalou:
>> amdgpu_bo_restore_shadow would assign zero to r if succeeded.
>> r would remain zero if there is only one node in shadow_list.
>> current code would always return failure when r <= 0.
>> restart the timeout for each wait was a rather problematic bug as well.
>> The value of tmo SHOULD be changed, otherwise we wait tmo jiffies on each loop.
>> meanwhile, fix Call Trace by NULL of shadow->parent.
>>
>> Change-Id: I7e836ec7ab6cd0f069aac24f88e454e906637541
>> Signed-off-by: Wentao Lou <Wentao.Lou@amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 15 ++++++++++-----
>> 1 file changed, 10 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index c4c61e9..5a2dc44 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -3183,7 +3183,7 @@ static int amdgpu_device_recover_vram(struct
>> amdgpu_device *adev)
>>
>> /* No need to recover an evicted BO */
>> if (shadow->tbo.mem.mem_type != TTM_PL_TT ||
>> - shadow->parent->tbo.mem.mem_type != TTM_PL_VRAM)
>> + shadow->parent == NULL || shadow->parent->tbo.mem.mem_type !=
>> +TTM_PL_VRAM)
> That doesn't looks like a good idea to me. Did you actually run into this issue?
>
>> continue;
>>
>> r = amdgpu_bo_restore_shadow(shadow, &next); @@ -3191,11 +3191,16
>> @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)
>> break;
>>
>> if (fence) {
>> - r = dma_fence_wait_timeout(fence, false, tmo);
>> + tmo = dma_fence_wait_timeout(fence, false, tmo);
>> dma_fence_put(fence);
>> fence = next;
>> - if (r <= 0)
>> + if (tmo == 0) {
>> + r = -ETIMEDOUT;
>> break;
>> + } else if (tmo < 0) {
>> + r = tmo;
>> + break;
>> + }
>> } else {
>> fence = next;
>> }
>> @@ -3206,8 +3211,8 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)
>> tmo = dma_fence_wait_timeout(fence, false, tmo);
>> dma_fence_put(fence);
>>
>> - if (r <= 0 || tmo <= 0) {
>> - DRM_ERROR("recover vram bo from shadow failed\n");
>> + if (r < 0 || tmo <= 0) {
>> + DRM_ERROR("recover vram bo from shadow failed, tmo is %d\n", tmo);
> Maybe print both r and tmo in the message.
>
> Regards,
> Christian.
>
>> return -EIO;
>> }
>>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-04-03 7:03 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-02 9:19 [PATCH] amdgpu_device_recover_vram always failed if only one node in shadow_list wentalou
[not found] ` <1554196784-25674-1-git-send-email-Wentao.Lou-5C7GfCeVMHo@public.gmane.org>
2019-04-02 10:36 ` Christian König
[not found] ` <470b5b5e-385c-84b8-8706-40222209fa34-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-04-03 6:35 ` Lou, Wentao
[not found] ` <MN2PR12MB328059309BE6D3A038FDF12A83570-rweVpJHSKToYX/8oZD8ObAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-04-03 7:03 ` Koenig, Christian [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-04-03 6:33 wentalou
[not found] ` <1554273187-28657-1-git-send-email-Wentao.Lou-5C7GfCeVMHo@public.gmane.org>
2019-04-03 7:57 ` Christian König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7fa9d7ac-fb81-46fb-3fba-962337804142@amd.com \
--to=christian.koenig-5c7gfcevmho@public.gmane.org \
--cc=Wentao.Lou-5C7GfCeVMHo@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox