[PATCH] drm/amdgpu: try allowed domain when pin framebuffer failed

Alex Deucher alexdeucher at gmail.com
Wed Dec 7 15:38:45 UTC 2022


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.

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