diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1377-drm-amdgpu-separate-BO-from-GEM-object.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1377-drm-amdgpu-separate-BO-from-GEM-object.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1377-drm-amdgpu-separate-BO-from-GEM-object.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1377-drm-amdgpu-separate-BO-from-GEM-object.patch new file mode 100644 index 00000000..3eb2036c --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1377-drm-amdgpu-separate-BO-from-GEM-object.patch @@ -0,0 +1,92 @@ +From b052adca7c60bb69d18f4cdf6b2fd9006dc66501 Mon Sep 17 00:00:00 2001 +From: Chaudhary Amit Kumar <chaudharyamit.kumar@amd.com> +Date: Thu, 18 Oct 2018 18:36:32 +0530 +Subject: [PATCH 1377/4131] drm/amdgpu: separate BO from GEM object This allows + us to have multiple GEM objects for one BO. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: I0cb30db4177ddcb18cb7ff294c220e700c9a26bc +Signed-off-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Chaudhary Amit Kumar <chaudharyamit.kumar@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 9 ++++++++- + drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 +- + drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 4 +++- + 4 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 5323609..c876ad5 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -383,7 +383,14 @@ struct amdgpu_clock { + */ + + #define AMDGPU_GEM_DOMAIN_MAX 0x3 +-#define gem_to_amdgpu_bo(gobj) container_of((gobj), struct amdgpu_bo, gem_base) ++ ++struct amdgpu_gem_object { ++ struct drm_gem_object base; ++ struct list_head list; ++ struct amdgpu_bo *bo; ++}; ++ ++#define gem_to_amdgpu_bo(gobj) container_of((gobj), struct amdgpu_gem_object, base)->bo + + void amdgpu_gem_object_free(struct drm_gem_object *obj); + int amdgpu_gem_object_open(struct drm_gem_object *obj, +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +index 19631d0..3ba09ab 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +@@ -98,6 +98,7 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, + } + return r; + } ++ robj->pid = task_pid_nr(current); + + gobj = kzalloc(sizeof(struct amdgpu_gem_object), GFP_KERNEL); + if (unlikely(!gobj)) { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +index fb6c3d6..7ed9e8b 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +@@ -47,7 +47,6 @@ static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo) + if (bo->tbo.mem.mem_type == AMDGPU_PL_DGMA_IMPORT) + kfree(tbo->mem.bus.addr); + amdgpu_bo_kunmap(bo); +- drm_gem_object_release(&bo->gem_base); + + if (bo->gem_base.import_attach) + drm_prime_gem_destroy(&bo->gem_base, bo->tbo.sg); +@@ -368,6 +367,7 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev, + } + INIT_LIST_HEAD(&bo->shadow_list); + INIT_LIST_HEAD(&bo->va); ++ INIT_LIST_HEAD(&bo->gem_objects); + bo->preferred_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM | + AMDGPU_GEM_DOMAIN_GTT | + AMDGPU_GEM_DOMAIN_CPU | +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +index 024e5cb..b5595eb 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +@@ -72,10 +72,12 @@ struct amdgpu_bo { + void *metadata; + u32 metadata_size; + unsigned prime_shared_count; ++ /* GEM objects refereing to this BO */ ++ struct list_head gem_objects; ++ + /* list of all virtual address to which this bo is associated to */ + struct list_head va; + /* Constant after initialization */ +- struct drm_gem_object gem_base; + struct amdgpu_bo *parent; + struct amdgpu_bo *shadow; + +-- +2.7.4 + |