]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: Add new vGPU cap info bit VGT_CAPS_HUGE_GTT
authorChangbin Du <changbin.du@intel.com>
Tue, 8 May 2018 09:07:05 +0000 (17:07 +0800)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Tue, 5 Jun 2018 13:57:01 +0000 (16:57 +0300)
This adds a new vGPU cap info bit VGT_CAPS_HUGE_GTT, which is to detect
whether the host supports shadowing of huge gtt pages. If host does
support it, remove the page sizes restriction for vGPU.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1525770425-5373-1-git-send-email-changbin.du@intel.com
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_pvinfo.h
drivers/gpu/drm/i915/i915_vgpu.h

index cb680ddafa0c5da762043f6b8183e5de91e8cd02..2a51a2b6d22cfc23bf5da43813eddf46a186c96d 100644 (file)
@@ -5409,12 +5409,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 {
        int ret;
 
-       /*
-        * We need to fallback to 4K pages since gvt gtt handling doesn't
-        * support huge page entries - we will need to check either hypervisor
-        * mm can support huge guest page or just do emulation in gvt.
-        */
-       if (intel_vgpu_active(dev_priv))
+       /* We need to fallback to 4K pages if host doesn't support huge gtt. */
+       if (intel_vgpu_active(dev_priv) && !intel_vgpu_has_huge_gtt(dev_priv))
                mkwrite_device_info(dev_priv)->page_sizes =
                        I915_GTT_PAGE_SIZE_4K;
 
index 195203f298dfcfdc03f91b529af65f8e6337aad9..55bde4a0228969c3bbb9d153b01101edbdc919d8 100644 (file)
@@ -54,6 +54,7 @@ enum vgt_g2v_type {
  */
 #define VGT_CAPS_FULL_48BIT_PPGTT      BIT(2)
 #define VGT_CAPS_HWSP_EMULATION                BIT(3)
+#define VGT_CAPS_HUGE_GTT              BIT(4)
 
 struct vgt_if {
        u64 magic;              /* VGT_MAGIC */
index bb8338450dc11021b003155d59b3a4bbbe24b4f9..551acc3900464bb7d4aee586ba7792155631bef5 100644 (file)
@@ -36,6 +36,12 @@ intel_vgpu_has_hwsp_emulation(struct drm_i915_private *dev_priv)
        return dev_priv->vgpu.caps & VGT_CAPS_HWSP_EMULATION;
 }
 
+static inline bool
+intel_vgpu_has_huge_gtt(struct drm_i915_private *dev_priv)
+{
+       return dev_priv->vgpu.caps & VGT_CAPS_HUGE_GTT;
+}
+
 int intel_vgt_balloon(struct drm_i915_private *dev_priv);
 void intel_vgt_deballoon(struct drm_i915_private *dev_priv);