diff options
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-.patch | 70 |
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 + |