This patchset introduces the implementation of GVT context. GVT context is a special GEM context used by GVT-g. GVT-g uses it as the shadow context.It doesn't have a drm client nor a PPGTT. And it requires a larger ring buffer with several special features need by GVT-g workload scheduler like context status change notification, context single submission... ABAT results and link: == Series Details == Series: Introduce the implementation of GVT context (rev2) URL : https://patchwork.freedesktop.org/series/8470/ State : warning == Summary == Series 8470v2 Introduce the implementation of GVT context http://patchwork.freedesktop.org/api/1.0/series/8470/revisions/2/mbox Test gem_exec_flush: Subgroup basic-batch-kernel-default-cmd: fail -> PASS (ro-byt-n2820) Test kms_pipe_crc_basic: Subgroup suspend-read-crc-pipe-b: skip -> DMESG-WARN (ro-bdw-i7-5557U) And the dmesg warning has been reported at: https://bugs.freedesktop.org/show_bug.cgi?id=96448 v12: - Move intel_gvt_init() into driver early initialization stage. v11: - Take Chris's comments. Drop host GGTT memory space static partition patch which would block i915 fastboot. v10: - Take Joonas' comments. v9: - Take Chris' comments. v8: - Take Joonas/Chris's comments. v7: - Take Joonas comments. v6: - Take Chris comments. v5: - Drop PPGTT related patches. - Let most functions take struct drm_i915_private * - Fixed some misspelled words in Kconfig - Only complied some feature when CONFIG_DRM_I915_GVT=y - Drop the fecne related changes, will send it after this series. v4: - Based on the latest drm-intel-nightly branch. - Drop PPGTT refactor patches. (GVT-g will use LRI to load PDPs) - Drop i915_gem_context() refactor patches, reuse kernel context functions. (Dave Gordon) - Drop context allocation params and refactor as the lrc deferred allocation function has been refactored in another styles. - Re-wrtie GVT context creation function TODO ----- - As static host GGTT partition is removed, GVT would reserve GGTT space from host by drm_reserve_node and may evict some gem objects through shrinker. - According to the discussion, GVT would load golden CFG/MMIO snapshot from userspace. Difference from community release --------------------------------- This patchset is different from regular iGVT-g code release[4], which is still based on old host-mediated architecture. Furthermore, this patchset only supports BDW whereas code release supports HSW/BDW/SKL. We will add SKL support later based on this RFC code and HSW support will be dropped. Internally we tested this RFC patchset with both linux and windows VM and the architecture changes work fine. Acknowledgment --------------- iGVT-g implementation is several years effort and many people contributed to the code. There names are not here yet. In later formal patchset we will reflect individual's contribution. Meanwhile, in the previous iGVT-g related discussion, Daniel, Chris and Joonas ever gave very good inputs. We appreciate them and look forward to more comments/suggestions from community. We are trying to get more familiar with i915 but may still have gaps. We are willing to adopt suggestions to keep improving. We hope to work with community together to make iGVT-g a great component in i915 to support graphics virtualization. Thanks! Reference --------- [1] https://01.org/igvt-g [2] http://lists.freedesktop.org/archives/intel-gfx/2014-September/053098.html [3] http://lists.freedesktop.org/archives/intel-gfx/2015-September/075397.html Zhi Wang (9): drm/i915: Factor out i915_pvinfo.h drm/i915: Use offsetof() to calculate the offset of members in PVINFO page drm/i915: Fold vGPU active check into inner functions drm/i915: gvt: Introduce the basic architecture of GVT-g drm/i915: Make ring buffer size of a LRC context configurable drm/i915: Make addressing mode bits in context descriptor configurable drm/i915: Introduce execlist context status change notification drm/i915: Support LRC context single submission drm/i915: Introduce GVT context creation API drivers/gpu/drm/i915/Kconfig | 22 +++++ drivers/gpu/drm/i915/Makefile | 5 ++ drivers/gpu/drm/i915/gvt/Makefile | 5 ++ drivers/gpu/drm/i915/gvt/debug.h | 34 ++++++++ drivers/gpu/drm/i915/gvt/gvt.c | 145 ++++++++++++++++++++++++++++++++ drivers/gpu/drm/i915/gvt/gvt.h | 69 +++++++++++++++ drivers/gpu/drm/i915/gvt/hypercall.h | 38 +++++++++ drivers/gpu/drm/i915/gvt/mpt.h | 49 +++++++++++ drivers/gpu/drm/i915/i915_dma.c | 8 ++ drivers/gpu/drm/i915/i915_drv.h | 16 ++++ drivers/gpu/drm/i915/i915_gem_context.c | 38 +++++++++ drivers/gpu/drm/i915/i915_gem_gtt.c | 11 +-- drivers/gpu/drm/i915/i915_params.c | 5 ++ drivers/gpu/drm/i915/i915_params.h | 1 + drivers/gpu/drm/i915/i915_pvinfo.h | 113 +++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_reg.h | 12 +++ drivers/gpu/drm/i915/i915_vgpu.c | 13 ++- drivers/gpu/drm/i915/i915_vgpu.h | 90 +------------------- drivers/gpu/drm/i915/intel_gvt.c | 100 ++++++++++++++++++++++ drivers/gpu/drm/i915/intel_gvt.h | 45 ++++++++++ drivers/gpu/drm/i915/intel_lrc.c | 54 +++++++++--- drivers/gpu/drm/i915/intel_lrc.h | 5 ++ 22 files changed, 766 insertions(+), 112 deletions(-) create mode 100644 drivers/gpu/drm/i915/gvt/Makefile create mode 100644 drivers/gpu/drm/i915/gvt/debug.h create mode 100644 drivers/gpu/drm/i915/gvt/gvt.c create mode 100644 drivers/gpu/drm/i915/gvt/gvt.h create mode 100644 drivers/gpu/drm/i915/gvt/hypercall.h create mode 100644 drivers/gpu/drm/i915/gvt/mpt.h create mode 100644 drivers/gpu/drm/i915/i915_pvinfo.h create mode 100644 drivers/gpu/drm/i915/intel_gvt.c create mode 100644 drivers/gpu/drm/i915/intel_gvt.h -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx