[PATCH] drm/amdgpu: try allowed domain when pin framebuffer failed
Christian König
ckoenig.leichtzumerken at gmail.com
Wed Dec 7 15:52:44 UTC 2022
Am 07.12.22 um 16:38 schrieb Alex Deucher:
> On Wed, Dec 7, 2022 at 10:23 AM Christian König
> <ckoenig.leichtzumerken at gmail.com> wrote:
>> I would go a step further and just allow GTT domain on ASICs != CARRIZO
>> | STONEY.
>>
>> I can't see a good reason we should still have any limitation here, VRAM
>> doesn't have any advantage any more as far as I know.
> Well, if VRAM is available we want to make sure someone uses it
> otherwise it's just wasted.
Well it still gets used when it's free. So now problem at all here.
We should just not force anything into VRAM or GTT any more if it's
technically not necessary.
Christian.
>
> Alex
>
>
>> Christian.
>>
>> Am 07.12.22 um 16:10 schrieb Alex Deucher:
>>> Does this patch fix the problem?
>>>
>>> Alex
>>>
>>> On Wed, Dec 7, 2022 at 2:27 AM Zhang, Jesse(Jie) <Jesse.Zhang at amd.com> wrote:
>>>> [AMD Official Use Only - General]
>>>>
>>>>
>>>> drm/amdgpu: try allowed domain when pin framebuffer failed.
>>>>
>>>>
>>>>
>>>> [WHY&HOW]
>>>>
>>>>
>>>>
>>>> in some scenarios, the allocate memory often failed. such as do hot plug or play games.
>>>>
>>>> so we can try allowed domain, if the preferred domain cannot allocate memory.
>>>>
>>>>
>>>>
>>>> Signed-off-by: jie1zhan jesse.zhang at amd.com
>>>>
>>>> Change-Id: I4b62e2ff072d02c515f901000a5789339d481273
>>>>
>>>>
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>>>
>>>> index 1ae0c8723348..05fcaf7f9d92 100644
>>>>
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>>>
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>>>
>>>> @@ -39,6 +39,7 @@
>>>>
>>>> #include "amdgpu.h"
>>>>
>>>> #include "amdgpu_trace.h"
>>>>
>>>> #include "amdgpu_amdkfd.h"
>>>>
>>>> +#include "amdgpu_display.h"
>>>>
>>>>
>>>>
>>>> /**
>>>>
>>>> * DOC: amdgpu_object
>>>>
>>>> @@ -942,8 +943,14 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
>>>>
>>>> bo->placements[i].lpfn = lpfn;
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> + retry:
>>>>
>>>> r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
>>>>
>>>> if (unlikely(r)) {
>>>>
>>>> + //try allowed domain when pin failed. just a workaround.
>>>>
>>>> + if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
>>>>
>>>> + amdgpu_bo_placement_from_domain(bo, bo->allowed_domains);
>>>>
>>>> + goto retry;
>>>>
>>>> + }
>>>>
>>>> dev_err(adev->dev, "%p pin failed\n", bo);
>>>>
>>>> goto error;
>>>>
>>>> }
More information about the amd-gfx
mailing list