#include <linux/mutex.h>
#include "i915_drv.h"
#include "i915_request.h"
#include "i915_scheduler.h"
static struct kmem_cache *slab_dependencies;
static struct kmem_cache *slab_priorities;
static DEFINE_SPINLOCK(schedule_lock);
static const struct i915_request *
node_to_request(const struct i915_sched_node *node)
{ … }
static inline bool node_started(const struct i915_sched_node *node)
{ … }
static inline bool node_signaled(const struct i915_sched_node *node)
{ … }
static inline struct i915_priolist *to_priolist(struct rb_node *rb)
{ … }
static void assert_priolists(struct i915_sched_engine * const sched_engine)
{ … }
struct list_head *
i915_sched_lookup_priolist(struct i915_sched_engine *sched_engine, int prio)
{ … }
void __i915_priolist_free(struct i915_priolist *p)
{ … }
struct sched_cache { … };
static struct i915_sched_engine *
lock_sched_engine(struct i915_sched_node *node,
struct i915_sched_engine *locked,
struct sched_cache *cache)
{ … }
static void __i915_schedule(struct i915_sched_node *node,
const struct i915_sched_attr *attr)
{ … }
void i915_schedule(struct i915_request *rq, const struct i915_sched_attr *attr)
{ … }
void i915_sched_node_init(struct i915_sched_node *node)
{ … }
void i915_sched_node_reinit(struct i915_sched_node *node)
{ … }
static struct i915_dependency *
i915_dependency_alloc(void)
{ … }
static void
i915_dependency_free(struct i915_dependency *dep)
{ … }
bool __i915_sched_node_add_dependency(struct i915_sched_node *node,
struct i915_sched_node *signal,
struct i915_dependency *dep,
unsigned long flags)
{ … }
int i915_sched_node_add_dependency(struct i915_sched_node *node,
struct i915_sched_node *signal,
unsigned long flags)
{ … }
void i915_sched_node_fini(struct i915_sched_node *node)
{ … }
void i915_request_show_with_schedule(struct drm_printer *m,
const struct i915_request *rq,
const char *prefix,
int indent)
{ … }
static void default_destroy(struct kref *kref)
{ … }
static bool default_disabled(struct i915_sched_engine *sched_engine)
{ … }
struct i915_sched_engine *
i915_sched_engine_create(unsigned int subclass)
{ … }
void i915_scheduler_module_exit(void)
{ … }
int __init i915_scheduler_module_init(void)
{ … }