aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch
new file mode 100644
index 00000000..73bdabd5
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4231-drm-amdgpu-handle-domain-mask-checking-v2.patch
@@ -0,0 +1,107 @@
+From 5848a2162722409228abc7b3064f08baeab7d472 Mon Sep 17 00:00:00 2001
+From: Chunming Zhou <david1.zhou@amd.com>
+Date: Tue, 17 Apr 2018 18:34:40 +0800
+Subject: [PATCH 4231/5725] drm/amdgpu: handle domain mask checking v2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+if domain is illegal, we should return error.
+v2:
+ remove duplicated domain checking.
+
+Change-Id: I65a738f5ac4fc34be76de867afb0db1d4bd27c24
+Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
+
+Conflicts:
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+ include/uapi/drm/amdgpu_drm.h
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 8 +-------
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 11 +----------
+ include/uapi/drm/amdgpu_drm.h | 10 ++++++++++
+ 3 files changed, 12 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+index df85dcc..88de5c1 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+@@ -262,13 +262,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
+ return -EINVAL;
+
+ /* reject invalid gem domains */
+- if (args->in.domains & ~(AMDGPU_GEM_DOMAIN_CPU |
+- AMDGPU_GEM_DOMAIN_GTT |
+- AMDGPU_GEM_DOMAIN_VRAM |
+- AMDGPU_GEM_DOMAIN_DGMA |
+- AMDGPU_GEM_DOMAIN_GDS |
+- AMDGPU_GEM_DOMAIN_GWS |
+- AMDGPU_GEM_DOMAIN_OA))
++ if (args->in.domains & ~AMDGPU_GEM_DOMAIN_MASK)
+ return -EINVAL;
+
+ /* create a gem object to contain this object in */
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+index 08fcc74..af6f1c5 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+@@ -382,7 +382,6 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
+ };
+ struct amdgpu_bo *bo;
+ unsigned long page_align, size = bp->size;
+- u32 preferred_domains;
+ size_t acc_size;
+ int r;
+
+@@ -403,16 +402,8 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
+ drm_gem_private_object_init(adev->ddev, &bo->gem_base, size);
+ INIT_LIST_HEAD(&bo->shadow_list);
+ INIT_LIST_HEAD(&bo->va);
+- preferred_domains = bp->preferred_domain ? bp->preferred_domain :
++ bo->preferred_domains = bp->preferred_domain ? bp->preferred_domain :
+ bp->domain;
+- bo->preferred_domains = preferred_domains & (AMDGPU_GEM_DOMAIN_VRAM |
+- AMDGPU_GEM_DOMAIN_GTT |
+- AMDGPU_GEM_DOMAIN_CPU |
+- AMDGPU_GEM_DOMAIN_GDS |
+- AMDGPU_GEM_DOMAIN_GWS |
+- AMDGPU_GEM_DOMAIN_OA |
+- AMDGPU_GEM_DOMAIN_DGMA |
+- AMDGPU_GEM_DOMAIN_DGMA_IMPORT);
+ bo->allowed_domains = bo->preferred_domains;
+
+ if (bp->type != ttm_bo_type_kernel &&
+diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
+index be4fbb3..d04ef13 100644
+--- a/include/uapi/drm/amdgpu_drm.h
++++ b/include/uapi/drm/amdgpu_drm.h
+@@ -92,6 +92,12 @@ extern "C" {
+ #define AMDGPU_GEM_DOMAIN_OA 0x20
+ #define AMDGPU_GEM_DOMAIN_DGMA 0x40
+ #define AMDGPU_GEM_DOMAIN_DGMA_IMPORT 0x80
++#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
++ AMDGPU_GEM_DOMAIN_GTT | \
++ AMDGPU_GEM_DOMAIN_VRAM | \
++ AMDGPU_GEM_DOMAIN_GDS | \
++ AMDGPU_GEM_DOMAIN_GWS | \
++ AMDGPU_GEM_DOMAIN_OA)
+
+ /* Flag that CPU access will be required for the case of VRAM domain */
+ #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
+@@ -589,6 +595,10 @@ union drm_amdgpu_cs {
+ /* Preempt flag, IB should set Pre_enb bit if PREEMPT flag detected */
+ #define AMDGPU_IB_FLAG_PREEMPT (1<<2)
+
++/* The IB fence should do the L2 writeback but not invalidate any shader
++ * caches (L2/vL1/sL1/I$). */
++#define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
++
+ struct drm_amdgpu_cs_chunk_ib {
+ __u32 _pad;
+ /** AMDGPU_IB_FLAG_* */
+--
+2.7.4
+