aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch
new file mode 100644
index 00000000..a25046ff
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3991-drm-amdgpu-add-new-bo-flag-that-indicates-BOs-don-t-.patch
@@ -0,0 +1,70 @@
+From 34154c7728a5d459197648e4056aa7133ac29e9f Mon Sep 17 00:00:00 2001
+From: Chunming Zhou <david1.zhou@amd.com>
+Date: Mon, 2 Apr 2018 11:20:44 +0800
+Subject: [PATCH 3991/4131] drm/amdgpu: add new bo flag that indicates BOs
+ don't need fallback
+
+user cases:
+1. KFD wraps amdgpu_bo_create, they have no fallback case which is different
+with amdgpu_gem_object_create.
+since upstream branch has no amdgpu_amdkfd_gpuvm.c, which need KFD
+guys add this flag to __alloc_memory_of_gpu:
++ flags |= AMDGPU_GEM_CREATE_NO_FALLBACK;
+2. UMD can specify this flag for their allocation as well if they like.
+
+Change-Id: Id3ac1a0bdd48633328d0b22c4c057fab4e94d0b3
+Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
+Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Cc: felix.kuehling@amd.com
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 ++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 5 +++--
+ include/uapi/drm/amdgpu_drm.h | 2 ++
+ 3 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+index b2a36ec..8596b38 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+@@ -386,7 +386,8 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
+ bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
+ p->bytes_moved_vis += ctx.bytes_moved;
+
+- if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
++ if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
++ !(bo->flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
+ domain = bo->allowed_domains;
+ goto retry;
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+index 8009e91..4fa7de0 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+@@ -449,8 +449,9 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size,
+ &bo->placement, page_align, &ctx, acc_size,
+ NULL, resv, &amdgpu_ttm_bo_destroy);
+
+- if (unlikely(r && r != -ERESTARTSYS) && type == ttm_bo_type_device) {
+- if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
++ if (unlikely(r && r != -ERESTARTSYS) && type == ttm_bo_type_device &&
++ !(flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
++ if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
+ flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+ goto retry;
+ } else if (domains != allowed_domains) {
+diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
+index b133e6d..e6399cb 100644
+--- a/include/uapi/drm/amdgpu_drm.h
++++ b/include/uapi/drm/amdgpu_drm.h
+@@ -109,6 +109,8 @@ extern "C" {
+ #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6)
+ /* Flag that BO sharing will be explicitly synchronized */
+ #define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)
++/* Flag that BO doesn't need fallback */
++#define AMDGPU_GEM_CREATE_NO_FALLBACK (1 << 8)
+
+ /* hybrid specific */
+ /* Flag that the memory allocation should be from top of domain */
+--
+2.7.4
+