Merge tag 'gvt-next-2017-12-14' of https://github.com/intel/gvt-linux into drm-intel...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / gvt / gvt.h
index 393066726993e55aacc4e5535f3447d74f033d57..1e9f11c8b7bbf432170b90a41b15d3133a9d6e21 100644 (file)
 #include "execlist.h"
 #include "scheduler.h"
 #include "sched_policy.h"
-#include "render.h"
+#include "mmio_context.h"
 #include "cmd_parser.h"
+#include "fb_decoder.h"
+#include "dmabuf.h"
 
 #define GVT_MAX_VGPU 8
 
@@ -123,7 +125,9 @@ struct intel_vgpu_irq {
 };
 
 struct intel_vgpu_opregion {
+       bool mapped;
        void *va;
+       void *va_gopregion;
        u32 gfn[INTEL_GVT_OPREGION_PAGES];
 };
 
@@ -206,8 +210,16 @@ struct intel_vgpu {
                struct kvm *kvm;
                struct work_struct release_work;
                atomic_t released;
+               struct vfio_device *vfio_device;
        } vdev;
 #endif
+
+       struct list_head dmabuf_obj_list_head;
+       struct mutex dmabuf_lock;
+       struct idr object_idr;
+
+       struct completion vblank_done;
+
 };
 
 /* validating GM healthy status*/
@@ -298,6 +310,8 @@ struct intel_gvt {
        wait_queue_head_t service_thread_wq;
        unsigned long service_request;
 
+       struct engine_mmio *engine_mmio_list;
+
        struct dentry *debugfs_root;
 };
 
@@ -336,7 +350,7 @@ int intel_gvt_load_firmware(struct intel_gvt *gvt);
 
 /* Aperture/GM space definitions for GVT device */
 #define gvt_aperture_sz(gvt)     (gvt->dev_priv->ggtt.mappable_end)
-#define gvt_aperture_pa_base(gvt) (gvt->dev_priv->ggtt.mappable_base)
+#define gvt_aperture_pa_base(gvt) (gvt->dev_priv->ggtt.gmadr.start)
 
 #define gvt_ggtt_gm_sz(gvt)      (gvt->dev_priv->ggtt.base.total)
 #define gvt_ggtt_sz(gvt) \
@@ -505,7 +519,8 @@ static inline u64 intel_vgpu_get_bar_gpa(struct intel_vgpu *vgpu, int bar)
 }
 
 void intel_vgpu_clean_opregion(struct intel_vgpu *vgpu);
-int intel_vgpu_init_opregion(struct intel_vgpu *vgpu, u32 gpa);
+int intel_vgpu_init_opregion(struct intel_vgpu *vgpu);
+int intel_vgpu_opregion_base_write_handler(struct intel_vgpu *vgpu, u32 gpa);
 
 int intel_vgpu_emulate_opregion_request(struct intel_vgpu *vgpu, u32 swsci);
 void populate_pvinfo_page(struct intel_vgpu *vgpu);
@@ -532,6 +547,8 @@ struct intel_gvt_ops {
                        const char *name);
        bool (*get_gvt_attrs)(struct attribute ***type_attrs,
                        struct attribute_group ***intel_vgpu_type_groups);
+       int (*vgpu_query_plane)(struct intel_vgpu *vgpu, void *);
+       int (*vgpu_get_dmabuf)(struct intel_vgpu *vgpu, unsigned int);
 };