#ifndef _GVT_SCHEDULER_H_
#define _GVT_SCHEDULER_H_
#include "gt/intel_engine_types.h"
#include "execlist.h"
#include "interrupt.h"
struct intel_gvt_workload_scheduler { … };
#define INDIRECT_CTX_ADDR_MASK …
#define INDIRECT_CTX_SIZE_MASK …
struct shadow_indirect_ctx { … };
#define PER_CTX_ADDR_MASK …
struct shadow_per_ctx { … };
struct intel_shadow_wa_ctx { … };
struct intel_vgpu_workload { … };
struct intel_vgpu_shadow_bb { … };
#define workload_q_head(vgpu, e) …
void intel_vgpu_queue_workload(struct intel_vgpu_workload *workload);
int intel_gvt_init_workload_scheduler(struct intel_gvt *gvt);
void intel_gvt_clean_workload_scheduler(struct intel_gvt *gvt);
void intel_gvt_wait_vgpu_idle(struct intel_vgpu *vgpu);
int intel_vgpu_setup_submission(struct intel_vgpu *vgpu);
void intel_vgpu_reset_submission(struct intel_vgpu *vgpu,
intel_engine_mask_t engine_mask);
void intel_vgpu_clean_submission(struct intel_vgpu *vgpu);
int intel_vgpu_select_submission_ops(struct intel_vgpu *vgpu,
intel_engine_mask_t engine_mask,
unsigned int interface);
extern const struct intel_vgpu_submission_ops
intel_vgpu_execlist_submission_ops;
struct intel_vgpu_workload *
intel_vgpu_create_workload(struct intel_vgpu *vgpu,
const struct intel_engine_cs *engine,
struct execlist_ctx_descriptor_format *desc);
void intel_vgpu_destroy_workload(struct intel_vgpu_workload *workload);
void intel_vgpu_clean_workloads(struct intel_vgpu *vgpu,
intel_engine_mask_t engine_mask);
#endif