#include <linux/hardirq.h>
#include <linux/iosys-map.h>
#include <linux/kthread.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/pm_runtime.h>
#include "lima_devfreq.h"
#include "lima_drv.h"
#include "lima_sched.h"
#include "lima_vm.h"
#include "lima_mmu.h"
#include "lima_l2_cache.h"
#include "lima_gem.h"
#include "lima_trace.h"
struct lima_fence { … };
static struct kmem_cache *lima_fence_slab;
static int lima_fence_slab_refcnt;
int lima_sched_slab_init(void)
{ … }
void lima_sched_slab_fini(void)
{ … }
static inline struct lima_fence *to_lima_fence(struct dma_fence *fence)
{ … }
static const char *lima_fence_get_driver_name(struct dma_fence *fence)
{ … }
static const char *lima_fence_get_timeline_name(struct dma_fence *fence)
{ … }
static void lima_fence_release_rcu(struct rcu_head *rcu)
{ … }
static void lima_fence_release(struct dma_fence *fence)
{ … }
static const struct dma_fence_ops lima_fence_ops = …;
static struct lima_fence *lima_fence_create(struct lima_sched_pipe *pipe)
{ … }
static inline struct lima_sched_task *to_lima_task(struct drm_sched_job *job)
{ … }
static inline struct lima_sched_pipe *to_lima_pipe(struct drm_gpu_scheduler *sched)
{ … }
int lima_sched_task_init(struct lima_sched_task *task,
struct lima_sched_context *context,
struct lima_bo **bos, int num_bos,
struct lima_vm *vm)
{ … }
void lima_sched_task_fini(struct lima_sched_task *task)
{ … }
int lima_sched_context_init(struct lima_sched_pipe *pipe,
struct lima_sched_context *context)
{ … }
void lima_sched_context_fini(struct lima_sched_pipe *pipe,
struct lima_sched_context *context)
{ … }
struct dma_fence *lima_sched_context_queue_task(struct lima_sched_task *task)
{ … }
static int lima_pm_busy(struct lima_device *ldev)
{ … }
static void lima_pm_idle(struct lima_device *ldev)
{ … }
static struct dma_fence *lima_sched_run_job(struct drm_sched_job *job)
{ … }
static void lima_sched_build_error_task_list(struct lima_sched_task *task)
{ … }
static enum drm_gpu_sched_stat lima_sched_timedout_job(struct drm_sched_job *job)
{ … }
static void lima_sched_free_job(struct drm_sched_job *job)
{ … }
static const struct drm_sched_backend_ops lima_sched_ops = …;
static void lima_sched_recover_work(struct work_struct *work)
{ … }
int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
{ … }
void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
{ … }
void lima_sched_pipe_task_done(struct lima_sched_pipe *pipe)
{ … }