On Wed, Dec 7, 2022 at 10:23 AM Christian König <ckoenig.leichtzumerken@xxxxxxxxx> 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@xxxxxxx> 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@xxxxxxx > >> > >> 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; > >> > >> } >