drm/i915: Update PV INFO page definition for Intel GVT-g
authorZhiyuan Lv <zhiyuan.lv@intel.com>
Fri, 28 Aug 2015 07:41:17 +0000 (15:41 +0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 2 Sep 2015 09:46:12 +0000 (11:46 +0200)
Some more definitions in the PV info page are added. They are mainly
for the guest notification to Intel GVT-g device model. They are used
for Broadwell enabling.

The notification of PPGTT page table creation/destroy is to notify
GVT-g device model the life cycle of guest page tables. Then device
model will implement shadow page table for guests.

The notification of context create/destroy is optional. If it is used,
the device model will create/destroy shadow context corresponding to
the context's life cycle. Guest driver needs to make sure that the
context's LRCA and backing storage address unchanged. If it is not
used, the device model will perform the context shadow work in the
context scheduling time.

Signed-off-by: Zhiyuan Lv <zhiyuan.lv@intel.com>
Signed-off-by: Zhi Wang <zhi.a.wang@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_vgpu.h

index 97a88b5f6a260013c6d0f315b4bc297fd4d2ab26..21c97f44d637b24b1d20dc1383a67bd5f65eaf8c 100644 (file)
 #define INTEL_VGT_IF_VERSION \
        INTEL_VGT_IF_VERSION_ENCODE(VGT_VERSION_MAJOR, VGT_VERSION_MINOR)
 
+/*
+ * notifications from guest to vgpu device model
+ */
+enum vgt_g2v_type {
+       VGT_G2V_PPGTT_L3_PAGE_TABLE_CREATE = 2,
+       VGT_G2V_PPGTT_L3_PAGE_TABLE_DESTROY,
+       VGT_G2V_PPGTT_L4_PAGE_TABLE_CREATE,
+       VGT_G2V_PPGTT_L4_PAGE_TABLE_DESTROY,
+       VGT_G2V_EXECLIST_CONTEXT_CREATE,
+       VGT_G2V_EXECLIST_CONTEXT_DESTROY,
+       VGT_G2V_MAX,
+};
+
 struct vgt_if {
        uint64_t magic;         /* VGT_MAGIC */
        uint16_t version_major;
@@ -70,11 +83,28 @@ struct vgt_if {
        uint32_t rsv3[0x200 - 24];      /* pad to half page */
        /*
         * The bottom half page is for response from Gfx driver to hypervisor.
-        * Set to reserved fields temporarily by now.
         */
        uint32_t rsv4;
        uint32_t display_ready; /* ready for display owner switch */
-       uint32_t rsv5[0x200 - 2];       /* pad to one page */
+
+       uint32_t rsv5[4];
+
+       uint32_t g2v_notify;
+       uint32_t rsv6[7];
+
+       uint32_t pdp0_lo;
+       uint32_t pdp0_hi;
+       uint32_t pdp1_lo;
+       uint32_t pdp1_hi;
+       uint32_t pdp2_lo;
+       uint32_t pdp2_hi;
+       uint32_t pdp3_lo;
+       uint32_t pdp3_hi;
+
+       uint32_t execlist_context_descriptor_lo;
+       uint32_t execlist_context_descriptor_hi;
+
+       uint32_t  rsv7[0x200 - 24];    /* pad to one page */
 } __packed;
 
 #define vgtif_reg(x) \