aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch139
1 files changed, 139 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch
new file mode 100644
index 00000000..467a832e
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4197-drm-amdgpu-revert-Don-t-change-preferred-domian-when.patch
@@ -0,0 +1,139 @@
+From 995e96a33da84a0239a8c59fe2488673afb7ad95 Mon Sep 17 00:00:00 2001
+From: christian koenig <christian.koenig@amd.com>
+Date: Tue, 10 Apr 2018 13:42:38 +0200
+Subject: [PATCH 4197/5725] drm/amdgpu: revert "Don't change preferred domian
+ when fallback GTT v6"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This reverts commit 7d1ca1325260a9e9329b10a21e3692e6f188936f.
+
+Makes fallback handling to complicated. This is just a feature for the
+GEM interface and shouldn't leak into the core BO create function.
+
+The intended change to preserve the preferred domains is implemented in
+a follow up patch.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Acked-by: Chunming Zhou <david1.zhou@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
+
+Change-Id: Ieb6b2bf7a421039a6ef6667566e8be9122242a04
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 16 +++++++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 38 +++++++++++-------------------
+ 2 files changed, 28 insertions(+), 26 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+index c3e71dd..fb95cba 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+@@ -83,11 +83,23 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
+ }
+ }
+
++retry:
+ r = amdgpu_bo_create(adev, size, alignment, initial_domain,
+ flags, type, resv, &bo);
+ if (r) {
+- DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
+- size, initial_domain, alignment, r);
++ if (r != -ERESTARTSYS) {
++ if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
++ flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
++ goto retry;
++ }
++
++ if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
++ initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
++ goto retry;
++ }
++ DRM_DEBUG("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
++ size, initial_domain, alignment, r);
++ }
+ return r;
+ }
+ *obj = &bo->gem_base;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+index c8d4278..f14b27a 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+@@ -379,7 +379,6 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size,
+ struct amdgpu_bo *bo;
+ unsigned long page_align;
+ size_t acc_size;
+- u32 domains, preferred_domains, allowed_domains;
+ int r;
+
+ page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT;
+@@ -393,7 +392,13 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size,
+ acc_size = ttm_bo_dma_acc_size(&adev->mman.bdev, size,
+ sizeof(struct amdgpu_bo));
+
+- preferred_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM |
++ bo = kzalloc(sizeof(struct amdgpu_bo), GFP_KERNEL);
++ if (bo == NULL)
++ return -ENOMEM;
++ drm_gem_private_object_init(adev->ddev, &bo->gem_base, size);
++ INIT_LIST_HEAD(&bo->shadow_list);
++ INIT_LIST_HEAD(&bo->va);
++ bo->preferred_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM |
+ AMDGPU_GEM_DOMAIN_GTT |
+ AMDGPU_GEM_DOMAIN_CPU |
+ AMDGPU_GEM_DOMAIN_GDS |
+@@ -401,18 +406,11 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size,
+ AMDGPU_GEM_DOMAIN_OA |
+ AMDGPU_GEM_DOMAIN_DGMA |
+ AMDGPU_GEM_DOMAIN_DGMA_IMPORT);
+- allowed_domains = preferred_domains;
++ bo->allowed_domains = bo->preferred_domains;
++
+ if (type != ttm_bo_type_kernel &&
+- allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
+- allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
+- domains = preferred_domains;
+-retry:
+- bo = kzalloc(sizeof(struct amdgpu_bo), GFP_KERNEL);
+- if (bo == NULL)
+- return -ENOMEM;
+- drm_gem_private_object_init(adev->ddev, &bo->gem_base, size);
+- INIT_LIST_HEAD(&bo->shadow_list);
+- INIT_LIST_HEAD(&bo->va);flags;
++ bo->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
++ bo->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
+
+ bo->flags = flags;
+ #ifdef CONFIG_X86_32
+@@ -445,21 +443,13 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, unsigned long size,
+
+ bo->tbo.bdev = &adev->mman.bdev;
+
+- amdgpu_ttm_placement_from_domain(bo, domains);
++ amdgpu_ttm_placement_from_domain(bo, domain);
++
+ r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type,
+ &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) {
+- flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+- goto retry;
+- } else if (domains != allowed_domains) {
+- domains = allowed_domains;
+- goto retry;
+- }
+- }
+- if (unlikely(r))
++ if (unlikely(r != 0))
+ return r;
+
+ if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
+--
+2.7.4
+