Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/drm2/dist/drm/amd/scheduler Don't abuse str...



details:   https://anonhg.NetBSD.org/src/rev/6c7b1567463f
branches:  trunk
changeset: 835310:6c7b1567463f
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Mon Aug 27 14:03:10 2018 +0000

description:
Don't abuse struct fence internals for irreverent dolphins.

diffstat:

 sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.c |  20 +++++++----
 sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.h |   5 ++-
 sys/external/bsd/drm2/dist/drm/amd/scheduler/sched_fence.c   |  10 +++---
 3 files changed, 22 insertions(+), 13 deletions(-)

diffs (104 lines):

diff -r 3f0228938ba0 -r 6c7b1567463f sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.c
--- a/sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.c      Mon Aug 27 14:02:52 2018 +0000
+++ b/sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.c      Mon Aug 27 14:03:10 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: gpu_scheduler.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $      */
+/*     $NetBSD: gpu_scheduler.c,v 1.3 2018/08/27 14:03:10 riastradh Exp $      */
 
 /*
  * Copyright 2015 Advanced Micro Devices, Inc.
@@ -24,7 +24,7 @@
  *
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gpu_scheduler.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gpu_scheduler.c,v 1.3 2018/08/27 14:03:10 riastradh Exp $");
 
 #include <linux/kthread.h>
 #include <linux/wait.h>
@@ -224,13 +224,19 @@
        kfifo_free(&entity->job_queue);
 }
 
+static void amd_sched_entity_wakeup_cb(struct fence *f,
+    struct amd_sched_entity *entity)
+{
+       entity->dependency = NULL;
+       fence_put(f);
+       amd_sched_wakeup(entity->sched);
+}
+
 static void amd_sched_entity_wakeup(struct fence *f, struct fence_cb *cb)
 {
        struct amd_sched_entity *entity =
                container_of(cb, struct amd_sched_entity, cb);
-       entity->dependency = NULL;
-       fence_put(f);
-       amd_sched_wakeup(entity->sched);
+       amd_sched_entity_wakeup_cb(f, entity);
 }
 
 static bool amd_sched_entity_add_dependency_cb(struct amd_sched_entity *entity)
@@ -255,8 +261,8 @@
                }
 
                /* Wait for fence to be scheduled */
-               entity->cb.func = amd_sched_entity_wakeup;
-               list_add_tail(&entity->cb.node, &s_fence->scheduled_cb);
+               entity->func = amd_sched_entity_wakeup_cb;
+               list_add_tail(&entity->entry, &s_fence->scheduled_cb);
                return true;
        }
 
diff -r 3f0228938ba0 -r 6c7b1567463f sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.h
--- a/sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.h      Mon Aug 27 14:02:52 2018 +0000
+++ b/sys/external/bsd/drm2/dist/drm/amd/scheduler/gpu_scheduler.h      Mon Aug 27 14:03:10 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: gpu_scheduler.h,v 1.2 2018/08/27 04:58:23 riastradh Exp $      */
+/*     $NetBSD: gpu_scheduler.h,v 1.3 2018/08/27 14:03:10 riastradh Exp $      */
 
 /*
  * Copyright 2015 Advanced Micro Devices, Inc.
@@ -56,6 +56,9 @@
 
        struct fence                    *dependency;
        struct fence_cb                 cb;
+       void                            (*func)(struct fence *,
+                                           struct amd_sched_entity *);
+       struct list_head                entry;
 };
 
 /**
diff -r 3f0228938ba0 -r 6c7b1567463f sys/external/bsd/drm2/dist/drm/amd/scheduler/sched_fence.c
--- a/sys/external/bsd/drm2/dist/drm/amd/scheduler/sched_fence.c        Mon Aug 27 14:02:52 2018 +0000
+++ b/sys/external/bsd/drm2/dist/drm/amd/scheduler/sched_fence.c        Mon Aug 27 14:03:10 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sched_fence.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $        */
+/*     $NetBSD: sched_fence.c,v 1.3 2018/08/27 14:03:10 riastradh Exp $        */
 
 /*
  * Copyright 2015 Advanced Micro Devices, Inc.
@@ -24,7 +24,7 @@
  *
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sched_fence.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sched_fence.c,v 1.3 2018/08/27 14:03:10 riastradh Exp $");
 
 #include <linux/kthread.h>
 #include <linux/wait.h>
@@ -64,11 +64,11 @@
 
 void amd_sched_fence_scheduled(struct amd_sched_fence *s_fence)
 {
-       struct fence_cb *cur, *tmp;
+       struct amd_sched_entity *cur, *tmp;
 
        set_bit(AMD_SCHED_FENCE_SCHEDULED_BIT, &s_fence->base.flags);
-       list_for_each_entry_safe(cur, tmp, &s_fence->scheduled_cb, node) {
-               list_del_init(&cur->node);
+       list_for_each_entry_safe(cur, tmp, &s_fence->scheduled_cb, entry) {
+               list_del_init(&cur->entry);
                cur->func(&s_fence->base, cur);
        }
 }



Home | Main Index | Thread Index | Old Index