Am 07.12.22 um 08:27 schrieb Zhang, Jesse(Jie):
[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.
Not sure why you send it again, but this patch is still a pretty clear NAK.
Christian.
Signed-off-by: jie1zhan jesse.zh...@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;
}