drm/i915: Disable semaphore on vGPU for now
authorZhenyu Wang <zhenyuw@linux.intel.com>
Wed, 27 Mar 2019 09:06:36 +0000 (17:06 +0800)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Mar 2019 15:13:28 +0000 (15:13 +0000)
This is to disable semaphore usage when on vGPU for now. Unfortunately
GVT-g hasn't fully enabled semaphore usage yet, so current guest with
semaphore use would cause vGPU failure.

Although current semaphore failure with vGPU can be simply resolved by
allowing cmd parser to accept MI_SEMAPHORE_WAIT command with address
audit, we're checking general usage of semaphore and how we should
handle it properly for virtualization in consider of function and
security concern. So we decide to request to disable it for now in
guest driver. Once GVT could support it, we would add new compat bit
to turn it on.

Fixes: e88619646971 ("drm/i915: Use HW semaphores for inter-engine synchronisation on gen8+") #vgpu
Cc: Kevin Tian <kevin.tian@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190327090636.3547-1-zhenyuw@linux.intel.com
drivers/gpu/drm/i915/intel_lrc.c

index 3870215061997e29c5251d6f940803c42fbc741f..bec232acc8d7b1c344d9b62bd8450cfe6a0cb542 100644 (file)
@@ -2313,8 +2313,9 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
        engine->park = NULL;
        engine->unpark = NULL;
 
-       engine->flags |= I915_ENGINE_HAS_SEMAPHORES;
        engine->flags |= I915_ENGINE_SUPPORTS_STATS;
+       if (!intel_vgpu_active(engine->i915))
+               engine->flags |= I915_ENGINE_HAS_SEMAPHORES;
        if (engine->preempt_context)
                engine->flags |= I915_ENGINE_HAS_PREEMPTION;
 }