]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/gvt/gvt.h
Merge tag 'v4.11-rc7' into drm-next
[karo-tx-linux.git] / drivers / gpu / drm / i915 / gvt / gvt.h
index becae2fa3b29d9956cf69469968c6a1c7c74b770..930732e5c7806d8970183f5d389c52d388bf2fc3 100644 (file)
@@ -138,6 +138,10 @@ struct intel_vgpu_display {
        struct intel_vgpu_sbi sbi;
 };
 
+struct vgpu_sched_ctl {
+       int weight;
+};
+
 struct intel_vgpu {
        struct intel_gvt *gvt;
        int id;
@@ -147,6 +151,7 @@ struct intel_vgpu {
        bool failsafe;
        bool resetting;
        void *sched_data;
+       struct vgpu_sched_ctl sched_ctl;
 
        struct intel_vgpu_fence fence;
        struct intel_vgpu_gm gm;
@@ -160,6 +165,7 @@ struct intel_vgpu {
        struct list_head workload_q_head[I915_NUM_ENGINES];
        struct kmem_cache *workloads;
        atomic_t running_workload_num;
+       ktime_t last_ctx_submit_time;
        DECLARE_BITMAP(tlb_handle_pending, I915_NUM_ENGINES);
        struct i915_gem_context *shadow_ctx;
 
@@ -215,6 +221,7 @@ struct intel_vgpu_type {
        unsigned int low_gm_size;
        unsigned int high_gm_size;
        unsigned int fence;
+       unsigned int weight;
        enum intel_vgpu_edid resolution;
 };
 
@@ -236,6 +243,7 @@ struct intel_gvt {
        DECLARE_HASHTABLE(cmd_table, GVT_CMD_HASH_BITS);
        struct intel_vgpu_type *types;
        unsigned int num_types;
+       struct intel_vgpu *idle_vgpu;
 
        struct task_struct *service_thread;
        wait_queue_head_t service_thread_wq;
@@ -249,6 +257,7 @@ static inline struct intel_gvt *to_gvt(struct drm_i915_private *i915)
 
 enum {
        INTEL_GVT_REQUEST_EMULATE_VBLANK = 0,
+       INTEL_GVT_REQUEST_SCHED = 1,
 };
 
 static inline void intel_gvt_request_service(struct intel_gvt *gvt,
@@ -322,6 +331,8 @@ struct intel_vgpu_creation_params {
        __u64 resolution;
        __s32 primary;
        __u64 vgpu_id;
+
+       __u32 weight;
 };
 
 int intel_vgpu_alloc_resource(struct intel_vgpu *vgpu,
@@ -376,6 +387,8 @@ static inline void intel_vgpu_write_pci_bar(struct intel_vgpu *vgpu,
 int intel_gvt_init_vgpu_types(struct intel_gvt *gvt);
 void intel_gvt_clean_vgpu_types(struct intel_gvt *gvt);
 
+struct intel_vgpu *intel_gvt_create_idle_vgpu(struct intel_gvt *gvt);
+void intel_gvt_destroy_idle_vgpu(struct intel_vgpu *vgpu);
 struct intel_vgpu *intel_gvt_create_vgpu(struct intel_gvt *gvt,
                                         struct intel_vgpu_type *type);
 void intel_gvt_destroy_vgpu(struct intel_vgpu *vgpu);