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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[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;

        }


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux