aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch')
-rw-r--r--common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch174
1 files changed, 0 insertions, 174 deletions
diff --git a/common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch b/common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch
deleted file mode 100644
index bdbc4a11..00000000
--- a/common/recipes-kernel/linux/files/0221-drm-amdgpu-cleanup-bo-list-bucket-handling.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From 401109ddd43b20b0bbf8965bac4c5d5ac68e8f5c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Fri, 18 Dec 2015 21:26:47 +0100
-Subject: [PATCH 0221/1110] drm/amdgpu: cleanup bo list bucket handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Move that into the BO list. No functional change.
-
-Signed-off-by: Christian K├Ânig <christian.koenig@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++
- drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 36 +++++++++++++++++++-
- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 51 ++---------------------------
- 3 files changed, 39 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index 8676505..b7b5d2e 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -1064,6 +1064,8 @@ struct amdgpu_bo_list {
-
- struct amdgpu_bo_list *
- amdgpu_bo_list_get(struct amdgpu_fpriv *fpriv, int id);
-+void amdgpu_bo_list_get_list(struct amdgpu_bo_list *list,
-+ struct list_head *validated);
- void amdgpu_bo_list_put(struct amdgpu_bo_list *list);
- void amdgpu_bo_list_free(struct amdgpu_bo_list *list);
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
-index f82a2dd..9da4bd0 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
-@@ -32,6 +32,9 @@
- #include "amdgpu.h"
- #include "amdgpu_trace.h"
-
-+#define AMDGPU_BO_LIST_MAX_PRIORITY 32u
-+#define AMDGPU_BO_LIST_NUM_BUCKETS (AMDGPU_BO_LIST_MAX_PRIORITY + 1)
-+
- static int amdgpu_bo_list_create(struct amdgpu_fpriv *fpriv,
- struct amdgpu_bo_list **result,
- int *id)
-@@ -106,7 +109,8 @@ static int amdgpu_bo_list_set(struct amdgpu_device *adev,
-
- entry->robj = amdgpu_bo_ref(gem_to_amdgpu_bo(gobj));
- drm_gem_object_unreference_unlocked(gobj);
-- entry->priority = info[i].bo_priority;
-+ entry->priority = min(info[i].bo_priority,
-+ AMDGPU_BO_LIST_MAX_PRIORITY);
- entry->prefered_domains = entry->robj->initial_domain;
- entry->allowed_domains = entry->prefered_domains;
- if (entry->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
-@@ -161,6 +165,36 @@ amdgpu_bo_list_get(struct amdgpu_fpriv *fpriv, int id)
- return result;
- }
-
-+void amdgpu_bo_list_get_list(struct amdgpu_bo_list *list,
-+ struct list_head *validated)
-+{
-+ /* This is based on the bucket sort with O(n) time complexity.
-+ * An item with priority "i" is added to bucket[i]. The lists are then
-+ * concatenated in descending order.
-+ */
-+ struct list_head bucket[AMDGPU_BO_LIST_NUM_BUCKETS];
-+ unsigned i;
-+
-+ for (i = 0; i < AMDGPU_BO_LIST_NUM_BUCKETS; i++)
-+ INIT_LIST_HEAD(&bucket[i]);
-+
-+ /* Since buffers which appear sooner in the relocation list are
-+ * likely to be used more often than buffers which appear later
-+ * in the list, the sort mustn't change the ordering of buffers
-+ * with the same priority, i.e. it must be stable.
-+ */
-+ for (i = 0; i < list->num_entries; i++) {
-+ unsigned priority = list->array[i].priority;
-+
-+ list_add_tail(&list->array[i].tv.head,
-+ &bucket[priority]);
-+ }
-+
-+ /* Connect the sorted buckets in the output list. */
-+ for (i = 0; i < AMDGPU_BO_LIST_NUM_BUCKETS; i++)
-+ list_splice(&bucket[i], validated);
-+}
-+
- void amdgpu_bo_list_put(struct amdgpu_bo_list *list)
- {
- mutex_unlock(&list->lock);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-index e615aa0..76ec99d 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-@@ -30,47 +30,6 @@
- #include "amdgpu.h"
- #include "amdgpu_trace.h"
-
--#define AMDGPU_CS_MAX_PRIORITY 32u
--#define AMDGPU_CS_NUM_BUCKETS (AMDGPU_CS_MAX_PRIORITY + 1)
--
--/* This is based on the bucket sort with O(n) time complexity.
-- * An item with priority "i" is added to bucket[i]. The lists are then
-- * concatenated in descending order.
-- */
--struct amdgpu_cs_buckets {
-- struct list_head bucket[AMDGPU_CS_NUM_BUCKETS];
--};
--
--static void amdgpu_cs_buckets_init(struct amdgpu_cs_buckets *b)
--{
-- unsigned i;
--
-- for (i = 0; i < AMDGPU_CS_NUM_BUCKETS; i++)
-- INIT_LIST_HEAD(&b->bucket[i]);
--}
--
--static void amdgpu_cs_buckets_add(struct amdgpu_cs_buckets *b,
-- struct list_head *item, unsigned priority)
--{
-- /* Since buffers which appear sooner in the relocation list are
-- * likely to be used more often than buffers which appear later
-- * in the list, the sort mustn't change the ordering of buffers
-- * with the same priority, i.e. it must be stable.
-- */
-- list_add_tail(item, &b->bucket[min(priority, AMDGPU_CS_MAX_PRIORITY)]);
--}
--
--static void amdgpu_cs_buckets_get_list(struct amdgpu_cs_buckets *b,
-- struct list_head *out_list)
--{
-- unsigned i;
--
-- /* Connect the sorted buckets in the output list. */
-- for (i = 0; i < AMDGPU_CS_NUM_BUCKETS; i++) {
-- list_splice(&b->bucket[i], out_list);
-- }
--}
--
- int amdgpu_cs_get_ring(struct amdgpu_device *adev, u32 ip_type,
- u32 ip_instance, u32 ring,
- struct amdgpu_ring **out_ring)
-@@ -382,22 +341,16 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
- union drm_amdgpu_cs *cs)
- {
- struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
-- struct amdgpu_cs_buckets buckets;
- struct list_head duplicates;
- bool need_mmap_lock = false;
-- int i, r;
-+ int r;
-
- INIT_LIST_HEAD(&p->validated);
-
- p->bo_list = amdgpu_bo_list_get(fpriv, cs->in.bo_list_handle);
- if (p->bo_list) {
- need_mmap_lock = p->bo_list->has_userptr;
-- amdgpu_cs_buckets_init(&buckets);
-- for (i = 0; i < p->bo_list->num_entries; i++)
-- amdgpu_cs_buckets_add(&buckets, &p->bo_list->array[i].tv.head,
-- p->bo_list->array[i].priority);
--
-- amdgpu_cs_buckets_get_list(&buckets, &p->validated);
-+ amdgpu_bo_list_get_list(p->bo_list, &p->validated);
- }
-
- INIT_LIST_HEAD(&duplicates);
---
-2.7.4
-