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

Zhang, Jesse(Jie) Jesse.Zhang at amd.com
Wed Dec 7 07:27:02 UTC 2022


[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<mailto: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;
        }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20221207/506c2e6b/attachment.htm>


More information about the amd-gfx mailing list