In places, we assume that RCS exists. This has been true forever, but
let us catch this failure during bringup by adding an explicit check
that we do have an RCS engine.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_engine_cs.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
b/drivers/gpu/drm/i915/intel_engine_cs.c
index 71e89a93fe18..3595209d86cf 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -154,9 +154,9 @@ int intel_engines_init_early(struct drm_i915_private 
*dev_priv)
 {
        struct intel_device_info *device_info = mkwrite_device_info(dev_priv);
        unsigned int ring_mask = INTEL_INFO(dev_priv)->ring_mask;
-       unsigned int mask = 0;
        struct intel_engine_cs *engine;
        enum intel_engine_id id;
+       unsigned int mask = 0;
        unsigned int i;
        int err;
 
@@ -183,6 +183,12 @@ int intel_engines_init_early(struct drm_i915_private 
*dev_priv)
        if (WARN_ON(mask != ring_mask))
                device_info->ring_mask = mask;
 
+       /* We always presume we have at least RCS available for probing */
+       if (WARN_ON(!(mask & ENGINE_MASK(RCS)))) {
+               err = -ENODEV;
+               goto cleanup;
+       }
+
        device_info->num_rings = hweight32(mask);
 
        return 0;
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to