Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0bd6c31 authored by Zhiyuan Lv's avatar Zhiyuan Lv Committed by Daniel Vetter
Browse files

drm/i915: Always enable execlists on BDW for vgpu



Broadwell hardware supports both ring buffer mode and execlist mode.
When i915 runs inside a VM with Intel GVT-g, we allow execlist mode
only.

The main reason of EXECLIST only is that GVT-g does not support the
dynamic mode switch between ring buffer mode and execlist mode when
running multiple virtual machines.

v2:
- Adjust the position of vgpu check in sanitize function (Joonas)
- Add vgpu error check in context initialization. (Joonas, Daniel)

Signed-off-by: default avatarZhiyuan Lv <zhiyuan.lv@intel.com>
Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 331f38e7
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -332,6 +332,13 @@ int i915_gem_context_init(struct drm_device *dev)
	if (WARN_ON(dev_priv->ring[RCS].default_context))
	if (WARN_ON(dev_priv->ring[RCS].default_context))
		return 0;
		return 0;


	if (intel_vgpu_active(dev) && HAS_LOGICAL_RING_CONTEXTS(dev)) {
		if (!i915.enable_execlists) {
			DRM_INFO("Only EXECLIST mode is supported in vgpu.\n");
			return -EINVAL;
		}
	}

	if (i915.enable_execlists) {
	if (i915.enable_execlists) {
		/* NB: intentionally left blank. We will allocate our own
		/* NB: intentionally left blank. We will allocate our own
		 * backing objects as we need them, thank you very much */
		 * backing objects as we need them, thank you very much */
+6 −0
Original line number Original line Diff line number Diff line
@@ -236,6 +236,12 @@ int intel_sanitize_enable_execlists(struct drm_device *dev, int enable_execlists
{
{
	WARN_ON(i915.enable_ppgtt == -1);
	WARN_ON(i915.enable_ppgtt == -1);


	/* On platforms with execlist available, vGPU will only
	 * support execlist mode, no ring buffer mode.
	 */
	if (HAS_LOGICAL_RING_CONTEXTS(dev) && intel_vgpu_active(dev))
		return 1;

	if (INTEL_INFO(dev)->gen >= 9)
	if (INTEL_INFO(dev)->gen >= 9)
		return 1;
		return 1;