#include <drm/drm_file.h>
#include <linux/dma-fence-array.h>
#include <linux/file.h>
#include <linux/pm_runtime.h>
#include <linux/dma-resv.h>
#include <linux/sync_file.h>
#include <linux/uaccess.h>
#include <linux/vmalloc.h>
#include "etnaviv_cmdbuf.h"
#include "etnaviv_drv.h"
#include "etnaviv_gpu.h"
#include "etnaviv_gem.h"
#include "etnaviv_perfmon.h"
#include "etnaviv_sched.h"
#define BO_INVALID_FLAGS …
#define BO_LOCKED …
#define BO_PINNED …
static struct etnaviv_gem_submit *submit_create(struct drm_device *dev,
struct etnaviv_gpu *gpu, size_t nr_bos, size_t nr_pmrs)
{ … }
static int submit_lookup_objects(struct etnaviv_gem_submit *submit,
struct drm_file *file, struct drm_etnaviv_gem_submit_bo *submit_bos,
unsigned nr_bos)
{ … }
static void submit_unlock_object(struct etnaviv_gem_submit *submit, int i)
{ … }
static int submit_lock_objects(struct etnaviv_gem_submit *submit,
struct ww_acquire_ctx *ticket)
{ … }
static int submit_fence_sync(struct etnaviv_gem_submit *submit)
{ … }
static void submit_attach_object_fences(struct etnaviv_gem_submit *submit)
{ … }
static int submit_pin_objects(struct etnaviv_gem_submit *submit)
{ … }
static int submit_bo(struct etnaviv_gem_submit *submit, u32 idx,
struct etnaviv_gem_submit_bo **bo)
{ … }
static int submit_reloc(struct etnaviv_gem_submit *submit, void *stream,
u32 size, const struct drm_etnaviv_gem_submit_reloc *relocs,
u32 nr_relocs)
{ … }
static int submit_perfmon_validate(struct etnaviv_gem_submit *submit,
u32 exec_state, const struct drm_etnaviv_gem_submit_pmr *pmrs)
{ … }
static void submit_cleanup(struct kref *kref)
{ … }
void etnaviv_submit_put(struct etnaviv_gem_submit *submit)
{ … }
int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
struct drm_file *file)
{ … }