drm/i915: Skip pxp init if gt is wedged
authorZhanjun Dong <zhanjun.dong@intel.com>
Mon, 13 Nov 2023 22:49:53 +0000 (14:49 -0800)
committerJohn Harrison <John.C.Harrison@Intel.com>
Thu, 30 Nov 2023 00:06:34 +0000 (16:06 -0800)
The gt wedged could be triggered by missing guc firmware file, HW not
working, etc. Once triggered, it means all gt usage is dead, therefore we
can't enable pxp under this fatal error condition.

v2: Updated commit message.
v3: Updated return code check.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231113224953.378534-1-zhanjun.dong@intel.com
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/i915/pxp/intel_pxp.c

index db6f7c3..8a17eb7 100644 (file)
@@ -804,7 +804,9 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret)
                goto out_cleanup_modeset2;
 
-       intel_pxp_init(i915);
+       ret = intel_pxp_init(i915);
+       if (ret != -ENODEV)
+               drm_dbg(&i915->drm, "pxp init failed with %d\n", ret);
 
        ret = intel_display_driver_probe(i915);
        if (ret)
index e11f562..75278e7 100644 (file)
@@ -199,6 +199,9 @@ int intel_pxp_init(struct drm_i915_private *i915)
        struct intel_gt *gt;
        bool is_full_feature = false;
 
+       if (intel_gt_is_wedged(to_gt(i915)))
+               return -ENOTCONN;
+
        /*
         * NOTE: Get the ctrl_gt before checking intel_pxp_is_supported since
         * we still need it if PXP's backend tee transport is needed.