]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: switch to use kernel standard error injection
authorJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Tue, 16 Dec 2025 08:07:53 +0000 (10:07 +0200)
committerMika Kahola <mika.kahola@intel.com>
Thu, 18 Dec 2025 09:59:20 +0000 (11:59 +0200)
Switch error injection testing from i915_inject_probe_failure
to ALLOW_ERROR_INJECTION. Here taken out calls to
i915_inject_probe_failure and changed to use
ALLOW_ERROR_INJECTION for the same functions.

Below functions are dropped from testing since I
couldn't hit those at module bind time, testing
these would just fail the tests. To include these
in test would need to find way to cause resetting in i915
which would trigger these:

intel_gvt_init
intel_wopcm_init
intel_uc_fw_upload
intel_gt_init with expected -EIO (-EINVAL is tested)
lrc_init_wa_ctx
intel_huc_auth
guc_check_version_range
intel_uc_fw_fetch
uc_fw_xfer
__intel_uc_reset_hw
guc_enable_communication
uc_init_wopcm
..and all stages of __force_fw_fetch_failures

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
Link: https://patch.msgid.link/20251216080754.221974-2-juhapekka.heikkila@gmail.com
19 files changed:
drivers/gpu/drm/i915/display/intel_connector.c
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/gt/intel_engine_cs.c
drivers/gpu/drm/i915/gt/intel_gt.c
drivers/gpu/drm/i915/gt/intel_gt_print.h
drivers/gpu/drm/i915/gt/intel_lrc.c
drivers/gpu/drm/i915/gt/intel_wopcm.c
drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
drivers/gpu/drm/i915/gt/uc/intel_huc.c
drivers/gpu/drm/i915/gt/uc/intel_uc.c
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/i915/i915_params.c
drivers/gpu/drm/i915/i915_params.h
drivers/gpu/drm/i915/i915_pci.c
drivers/gpu/drm/i915/i915_utils.c
drivers/gpu/drm/i915/i915_utils.h
drivers/gpu/drm/i915/intel_gvt.c
drivers/gpu/drm/i915/intel_uncore.c

index 913d90a7a508302aeeee3698117452c5abe6cf5e..c128bc4215c412bf5c5265a6d6dc44607d3d747b 100644 (file)
@@ -156,27 +156,17 @@ void intel_connector_destroy(struct drm_connector *connector)
 int intel_connector_register(struct drm_connector *_connector)
 {
        struct intel_connector *connector = to_intel_connector(_connector);
-       struct drm_i915_private *i915 = to_i915(_connector->dev);
        int ret;
 
        ret = intel_panel_register(connector);
        if (ret)
-               goto err;
-
-       if (i915_inject_probe_failure(i915)) {
-               ret = -EFAULT;
-               goto err_panel;
-       }
+               return ret;
 
        intel_connector_debugfs_add(connector);
 
        return 0;
-
-err_panel:
-       intel_panel_unregister(connector);
-err:
-       return ret;
 }
+ALLOW_ERROR_INJECTION(intel_connector_register, ERRNO);
 
 void intel_connector_unregister(struct drm_connector *_connector)
 {
index e282b533d5b6cb9eb88e9694b2fc862784e6b9ca..e1d29aea0ddcc474760a4a8f3990ef8b34ab6dcf 100644 (file)
@@ -199,12 +199,8 @@ void intel_display_driver_early_probe(struct intel_display *display)
 /* part #1: call before irq install */
 int intel_display_driver_probe_noirq(struct intel_display *display)
 {
-       struct drm_i915_private *i915 = to_i915(display->drm);
        int ret;
 
-       if (i915_inject_probe_failure(i915))
-               return -ENODEV;
-
        if (HAS_DISPLAY(display)) {
                ret = drm_vblank_init(display->drm,
                                      INTEL_NUM_PIPES(display));
@@ -317,6 +313,7 @@ cleanup_bios:
 
        return ret;
 }
+ALLOW_ERROR_INJECTION(intel_display_driver_probe_noirq, ERRNO);
 
 static void set_display_access(struct intel_display *display,
                               bool any_task_allowed,
index b721bbd2335674791f237be30eddd0393d092049..98a3a7a9de502f5e5bfdf3dbfb37ad481518d1f1 100644 (file)
@@ -963,9 +963,6 @@ int intel_engines_init_mmio(struct intel_gt *gt)
        drm_WARN_ON(&i915->drm, engine_mask &
                    GENMASK(BITS_PER_TYPE(mask) - 1, I915_NUM_ENGINES));
 
-       if (i915_inject_probe_failure(i915))
-               return -ENODEV;
-
        for (class = 0; class < MAX_ENGINE_CLASS + 1; ++class) {
                setup_logical_ids(gt, logical_ids, class);
 
@@ -1007,6 +1004,7 @@ cleanup:
        intel_engines_free(gt);
        return err;
 }
+ALLOW_ERROR_INJECTION(intel_engines_init_mmio, ERRNO);
 
 void intel_engine_init_execlists(struct intel_engine_cs *engine)
 {
index 3d3b1ba76e2befb3b4fa1c85d2d1d5440bee3e9a..ac527d878820be2d41265e5e6ddccd039c0b8233 100644 (file)
@@ -686,10 +686,6 @@ int intel_gt_init(struct intel_gt *gt)
 {
        int err;
 
-       err = i915_inject_probe_error(gt->i915, -ENODEV);
-       if (err)
-               return err;
-
        intel_gt_init_workarounds(gt);
 
        /*
@@ -740,10 +736,6 @@ int intel_gt_init(struct intel_gt *gt)
        if (err)
                goto err_gt;
 
-       err = i915_inject_probe_error(gt->i915, -EIO);
-       if (err)
-               goto err_gt;
-
        intel_uc_init_late(&gt->uc);
 
        intel_migrate_init(&gt->migrate, gt);
@@ -766,6 +758,7 @@ out_fw:
        intel_uncore_forcewake_put(gt->uncore, FORCEWAKE_ALL);
        return err;
 }
+ALLOW_ERROR_INJECTION(intel_gt_init, ERRNO);
 
 void intel_gt_driver_remove(struct intel_gt *gt)
 {
index 7fdc78c79273e5b615037684e900f3c1c00f4883..48f0afd05fd8a0e825c720fd63c24372f6c40920 100644 (file)
 
 #define gt_probe_error(_gt, _fmt, ...) \
        do { \
-               if (i915_error_injected()) \
-                       gt_dbg(_gt, _fmt, ##__VA_ARGS__); \
-               else \
-                       gt_err(_gt, _fmt, ##__VA_ARGS__); \
+               gt_err(_gt, _fmt, ##__VA_ARGS__); \
        } while (0)
 
 #define gt_WARN(_gt, _condition, _fmt, ...) \
index e8927ad491425287500dc1e06c3a37c7d28afdce..d36e543e98dfcc673bcb6a828353fabc462ce524 100644 (file)
@@ -1911,10 +1911,6 @@ retry:
        __i915_gem_object_flush_map(wa_ctx->vma->obj, 0, batch_ptr - batch);
        __i915_gem_object_release_map(wa_ctx->vma->obj);
 
-       /* Verify that we can handle failure to setup the wa_ctx */
-       if (!err)
-               err = i915_inject_probe_error(engine->i915, -ENODEV);
-
 err_unpin:
        if (err)
                i915_vma_unpin(wa_ctx->vma);
index 1b26ff6488b3c2a7a2f143e4c87680298137ddd4..602e088fe045aa1dc05d2e1eecbb8112ebb6629d 100644 (file)
@@ -253,9 +253,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm)
        GEM_BUG_ON(huc_fw_size >= wopcm_size);
        GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm_size);
 
-       if (i915_inject_probe_failure(i915))
-               return;
-
        if (__wopcm_regs_locked(gt->uncore, &guc_wopcm_base, &guc_wopcm_size)) {
                drm_dbg(&i915->drm, "GuC WOPCM is already locked [%uK, %uK)\n",
                        guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K);
index 2c651ec024ef5a48b9c127dd35bd9dc6f37aa6a4..f1e53312ed903d763701fa900c7af23731df010e 100644 (file)
@@ -266,10 +266,6 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
        u32 *cmds;
        int err;
 
-       err = i915_inject_probe_error(guc_to_i915(guc), -ENXIO);
-       if (err)
-               return err;
-
        GEM_BUG_ON(ct->vma);
 
        blob_size = 2 * CTB_DESC_SIZE + CTB_H2G_BUFFER_SIZE + CTB_G2H_BUFFER_SIZE;
@@ -306,6 +302,7 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
 
        return 0;
 }
+ALLOW_ERROR_INJECTION(intel_guc_ct_init, ERRNO);
 
 /**
  * intel_guc_ct_fini - Fini buffer-based communication
@@ -1394,9 +1391,6 @@ static void ct_dead_ct_worker_func(struct work_struct *w)
        if (ct->dead_ct_reported)
                return;
 
-       if (i915_error_injected())
-               return;
-
        ct->dead_ct_reported = true;
 
        guc_info(guc, "CTB is dead - reason=0x%X\n", ct->dead_ct_reason);
index 456d3372eef840b6f1f5c4982332fe42e43c5693..f3249b98c99280985c06771dd95d2b55c8dc1df0 100644 (file)
@@ -541,10 +541,6 @@ int intel_huc_auth(struct intel_huc *huc, enum intel_huc_authentication_type typ
        if (intel_huc_is_authenticated(huc, type))
                return -EEXIST;
 
-       ret = i915_inject_probe_error(gt->i915, -ENXIO);
-       if (ret)
-               goto fail;
-
        switch (type) {
        case INTEL_HUC_AUTH_BY_GUC:
                ret = intel_guc_auth_huc(guc, intel_guc_ggtt_offset(guc, huc->fw.rsa_data));
index 4a3493e8d4333eb17a613ba1515e70c59411bf33..bd07c72a66fce4c407b28b2f676dbd69f7cc6187 100644 (file)
@@ -60,10 +60,6 @@ static int __intel_uc_reset_hw(struct intel_uc *uc)
        int ret;
        u32 guc_status;
 
-       ret = i915_inject_probe_error(gt->i915, -ENXIO);
-       if (ret)
-               return ret;
-
        ret = intel_reset_guc(gt);
        if (ret) {
                gt_err(gt, "Failed to reset GuC, ret = %d\n", ret);
@@ -220,15 +216,10 @@ static void guc_handle_mmio_msg(struct intel_guc *guc)
 static int guc_enable_communication(struct intel_guc *guc)
 {
        struct intel_gt *gt = guc_to_gt(guc);
-       struct drm_i915_private *i915 = gt->i915;
        int ret;
 
        GEM_BUG_ON(intel_guc_ct_enabled(&guc->ct));
 
-       ret = i915_inject_probe_error(i915, -ENXIO);
-       if (ret)
-               return ret;
-
        ret = intel_guc_ct_enable(&guc->ct);
        if (ret)
                return ret;
@@ -323,9 +314,6 @@ static int __uc_init(struct intel_uc *uc)
        if (!intel_uc_uses_guc(uc))
                return 0;
 
-       if (i915_inject_probe_failure(uc_to_gt(uc)->i915))
-               return -ENOMEM;
-
        ret = intel_guc_init(guc);
        if (ret)
                return ret;
@@ -338,6 +326,7 @@ static int __uc_init(struct intel_uc *uc)
 
        return 0;
 }
+ALLOW_ERROR_INJECTION(__uc_init, ERRNO);
 
 static void __uc_fini(struct intel_uc *uc)
 {
@@ -381,10 +370,6 @@ static int uc_init_wopcm(struct intel_uc *uc)
        GEM_BUG_ON(!(size & GUC_WOPCM_SIZE_MASK));
        GEM_BUG_ON(size & ~GUC_WOPCM_SIZE_MASK);
 
-       err = i915_inject_probe_error(gt->i915, -ENXIO);
-       if (err)
-               return err;
-
        mask = GUC_WOPCM_SIZE_MASK | GUC_WOPCM_SIZE_LOCKED;
        err = intel_uncore_write_and_verify(uncore, GUC_WOPCM_SIZE, size, mask,
                                            size | GUC_WOPCM_SIZE_LOCKED);
index e848a04a80dc291b1d0917a48fe413d2e3bd90a7..fd04fe892c28fd38fead07f0e80070469e9ec435 100644 (file)
@@ -542,43 +542,6 @@ void intel_uc_fw_init_early(struct intel_uc_fw *uc_fw,
                                  INTEL_UC_FIRMWARE_NOT_SUPPORTED);
 }
 
-static void __force_fw_fetch_failures(struct intel_uc_fw *uc_fw, int e)
-{
-       struct drm_i915_private *i915 = __uc_fw_to_gt(uc_fw)->i915;
-       bool user = e == -EINVAL;
-
-       if (i915_inject_probe_error(i915, e)) {
-               /* non-existing blob */
-               uc_fw->file_selected.path = "<invalid>";
-               uc_fw->user_overridden = user;
-       } else if (i915_inject_probe_error(i915, e)) {
-               /* require next major version */
-               uc_fw->file_wanted.ver.major += 1;
-               uc_fw->file_wanted.ver.minor = 0;
-               uc_fw->user_overridden = user;
-       } else if (i915_inject_probe_error(i915, e)) {
-               /* require next minor version */
-               uc_fw->file_wanted.ver.minor += 1;
-               uc_fw->user_overridden = user;
-       } else if (uc_fw->file_wanted.ver.major &&
-                  i915_inject_probe_error(i915, e)) {
-               /* require prev major version */
-               uc_fw->file_wanted.ver.major -= 1;
-               uc_fw->file_wanted.ver.minor = 0;
-               uc_fw->user_overridden = user;
-       } else if (uc_fw->file_wanted.ver.minor &&
-                  i915_inject_probe_error(i915, e)) {
-               /* require prev minor version - hey, this should work! */
-               uc_fw->file_wanted.ver.minor -= 1;
-               uc_fw->user_overridden = user;
-       } else if (user && i915_inject_probe_error(i915, e)) {
-               /* officially unsupported platform */
-               uc_fw->file_wanted.ver.major = 0;
-               uc_fw->file_wanted.ver.minor = 0;
-               uc_fw->user_overridden = true;
-       }
-}
-
 static void uc_unpack_css_version(struct intel_uc_fw_ver *ver, u32 css_value)
 {
        /* Get version numbers from the CSS header */
@@ -766,7 +729,7 @@ static int guc_check_version_range(struct intel_uc_fw *uc_fw)
                return -EINVAL;
        }
 
-       return i915_inject_probe_error(gt->i915, -EINVAL);
+       return 0;
 }
 
 static int check_fw_header(struct intel_gt *gt,
@@ -905,13 +868,6 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
        GEM_BUG_ON(!gt->wopcm.size);
        GEM_BUG_ON(!intel_uc_fw_is_enabled(uc_fw));
 
-       err = i915_inject_probe_error(i915, -ENXIO);
-       if (err)
-               goto fail;
-
-       __force_fw_fetch_failures(uc_fw, -EINVAL);
-       __force_fw_fetch_failures(uc_fw, -ESTALE);
-
        err = try_firmware_load(uc_fw, &fw);
        memcpy(&file_ideal, &uc_fw->file_wanted, sizeof(file_ideal));
 
@@ -1088,10 +1044,6 @@ static int uc_fw_xfer(struct intel_uc_fw *uc_fw, u32 dst_offset, u32 dma_flags)
        u64 offset;
        int ret;
 
-       ret = i915_inject_probe_error(gt->i915, -ETIMEDOUT);
-       if (ret)
-               return ret;
-
        intel_uncore_forcewake_get(uncore, FORCEWAKE_ALL);
 
        /* Set the source address for the uCode */
@@ -1155,16 +1107,11 @@ int intel_uc_fw_mark_load_failed(struct intel_uc_fw *uc_fw, int err)
  */
 int intel_uc_fw_upload(struct intel_uc_fw *uc_fw, u32 dst_offset, u32 dma_flags)
 {
-       struct intel_gt *gt = __uc_fw_to_gt(uc_fw);
        int err;
 
        /* make sure the status was cleared the last time we reset the uc */
        GEM_BUG_ON(intel_uc_fw_is_loaded(uc_fw));
 
-       err = i915_inject_probe_error(gt->i915, -ENOEXEC);
-       if (err)
-               return err;
-
        if (!intel_uc_fw_is_loadable(uc_fw))
                return -ENOEXEC;
 
@@ -1198,10 +1145,6 @@ static int uc_fw_rsa_data_create(struct intel_uc_fw *uc_fw)
        void *vaddr;
        int err;
 
-       err = i915_inject_probe_error(gt->i915, -ENXIO);
-       if (err)
-               return err;
-
        if (!uc_fw_need_rsa_in_memory(uc_fw))
                return 0;
 
@@ -1243,6 +1186,7 @@ unpin_out:
        i915_vma_unpin_and_release(&vma, 0);
        return err;
 }
+ALLOW_ERROR_INJECTION(uc_fw_rsa_data_create, ERRNO);
 
 static void uc_fw_rsa_data_destroy(struct intel_uc_fw *uc_fw)
 {
index 9bc5ef988be7e34b636cd5ce7ddf4c4e07b7d467..e11189900c5a6aa06d149a15dd3f54a43bca250c 100644 (file)
@@ -227,9 +227,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
        struct intel_display *display = dev_priv->display;
        int ret = 0;
 
-       if (i915_inject_probe_failure(dev_priv))
-               return -ENODEV;
-
        intel_device_info_runtime_init_early(dev_priv);
 
        intel_step_init(dev_priv);
@@ -279,6 +276,7 @@ err_workqueues:
        i915_workqueues_cleanup(dev_priv);
        return ret;
 }
+ALLOW_ERROR_INJECTION(i915_driver_early_probe, ERRNO);
 
 /**
  * i915_driver_late_release - cleanup the setup done in
@@ -321,9 +319,6 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
        struct intel_gt *gt;
        int ret, i;
 
-       if (i915_inject_probe_failure(dev_priv))
-               return -ENODEV;
-
        ret = i915_gmch_bridge_setup(dev_priv);
        if (ret < 0)
                return ret;
@@ -361,6 +356,7 @@ err_uncore:
 
        return ret;
 }
+ALLOW_ERROR_INJECTION(i915_driver_mmio_probe, ERRNO);
 
 /**
  * i915_driver_mmio_release - cleanup the setup done in i915_driver_mmio_probe()
@@ -468,9 +464,6 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        int ret;
 
-       if (i915_inject_probe_failure(dev_priv))
-               return -ENODEV;
-
        if (HAS_PPGTT(dev_priv)) {
                if (intel_vgpu_active(dev_priv) &&
                    !intel_vgpu_has_full_ppgtt(dev_priv)) {
@@ -598,6 +591,7 @@ err_perf:
        i915_perf_fini(dev_priv);
        return ret;
 }
+ALLOW_ERROR_INJECTION(i915_driver_hw_probe, ERRNO);
 
 /**
  * i915_driver_hw_remove - cleanup the setup done in i915_driver_hw_probe()
index 37746dd619fd8ab05ba6d877c240e42cd86c621f..34ed82bb1b1a89cd6b10a0e7dd5f4fff4712ec6b 100644 (file)
@@ -110,11 +110,6 @@ i915_param_named_unsafe(huc_firmware_path, charp, 0400,
 i915_param_named_unsafe(gsc_firmware_path, charp, 0400,
        "GSC firmware path to use instead of the default one");
 
-#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
-i915_param_named_unsafe(inject_probe_failure, uint, 0400,
-       "Force an error after a number of failure check points (0:disabled (default), N:force failure at the Nth failure check point)");
-#endif
-
 #if IS_ENABLED(CONFIG_DRM_I915_GVT)
 i915_param_named(enable_gvt, bool, 0400,
        "Enable support for Intel GVT-g graphics virtualization host support(default:false)");
index 0fbcb5b6d7bfbec0242c51f943a18e341679b7a0..4d9d4cd3220d1bcf30756211a1b21b76f981f0c6 100644 (file)
@@ -55,7 +55,6 @@ struct drm_printer;
        param(bool, memtest, false, 0400) \
        param(int, mmio_debug, -IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
        param(unsigned int, reset, 3, 0600) \
-       param(unsigned int, inject_probe_failure, 0, 0) \
        param(char *, force_probe, CONFIG_DRM_I915_FORCE_PROBE, 0400) \
        param(unsigned int, request_timeout_ms, CONFIG_DRM_I915_REQUEST_TIMEOUT, CONFIG_DRM_I915_REQUEST_TIMEOUT ? 0600 : 0) \
        param(unsigned int, lmem_size, 0, 0400) \
index b2e311f4791a0a7277a5590cf95532e6f683c7d5..d966a00520f15a6e9e4c42ebca61afb6327d0ee1 100644 (file)
@@ -999,11 +999,6 @@ static int i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (err)
                return err;
 
-       if (i915_inject_probe_failure(pdev_to_i915(pdev))) {
-               i915_pci_remove(pdev);
-               return -ENODEV;
-       }
-
        err = i915_live_selftests(pdev);
        if (err) {
                i915_pci_remove(pdev);
@@ -1018,6 +1013,7 @@ static int i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        return 0;
 }
+ALLOW_ERROR_INJECTION(i915_pci_probe, ERRNO);
 
 static void i915_pci_shutdown(struct pci_dev *pdev)
 {
index 89b920ccbccb3c0546d2802eb790214164547e2a..8c1aad312fd4baf023c6e0f61e92a24b3c12c05b 100644 (file)
@@ -17,37 +17,9 @@ void add_taint_for_CI(struct drm_i915_private *i915, unsigned int taint)
        drm_notice(&i915->drm, "CI tainted: %#x by %pS\n",
                   taint, __builtin_return_address(0));
 
-       /* Failures that occur during fault injection testing are expected */
-       if (!i915_error_injected())
-               __add_taint_for_CI(taint);
+       __add_taint_for_CI(taint);
 }
 
-#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
-static unsigned int i915_probe_fail_count;
-
-int __i915_inject_probe_error(struct drm_i915_private *i915, int err,
-                             const char *func, int line)
-{
-       if (i915_probe_fail_count >= i915_modparams.inject_probe_failure)
-               return 0;
-
-       if (++i915_probe_fail_count < i915_modparams.inject_probe_failure)
-               return 0;
-
-       drm_info(&i915->drm, "Injecting failure %d at checkpoint %u [%s:%d]\n",
-                err, i915_modparams.inject_probe_failure, func, line);
-
-       i915_modparams.inject_probe_failure = 0;
-       return err;
-}
-
-bool i915_error_injected(void)
-{
-       return i915_probe_fail_count && !i915_modparams.inject_probe_failure;
-}
-
-#endif
-
 bool i915_vtd_active(struct drm_i915_private *i915)
 {
        if (device_iommu_mapped(i915->drm.dev))
index 4f75115b87d6ebfb7385a11dbc7f78b026189e8b..9e5b7fcadbe2efd5d34deef088fecd5720ac39ca 100644 (file)
@@ -43,28 +43,8 @@ struct drm_i915_private;
                             __stringify(x), (long)(x))
 #endif
 
-#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
-
-int __i915_inject_probe_error(struct drm_i915_private *i915, int err,
-                             const char *func, int line);
-#define i915_inject_probe_error(_i915, _err) \
-       __i915_inject_probe_error((_i915), (_err), __func__, __LINE__)
-bool i915_error_injected(void);
-
-#else
-
-#define i915_inject_probe_error(i915, e) ({ BUILD_BUG_ON_INVALID(i915); 0; })
-#define i915_error_injected() false
-
-#endif
-
-#define i915_inject_probe_failure(i915) i915_inject_probe_error((i915), -ENODEV)
-
 #define i915_probe_error(i915, fmt, ...) ({ \
-       if (i915_error_injected()) \
-               drm_dbg(&(i915)->drm, fmt, ##__VA_ARGS__); \
-       else \
-               drm_err(&(i915)->drm, fmt, ##__VA_ARGS__); \
+       drm_err(&(i915)->drm, fmt, ##__VA_ARGS__); \
 })
 
 #ifndef fetch_and_zero
index c3efc3454ec20b27c05dcf9f51207f277ee88842..5f615ec0e580c90c71c81da2b18a51bd7864868e 100644 (file)
@@ -238,9 +238,6 @@ EXPORT_SYMBOL_NS_GPL(intel_gvt_clear_ops, "I915_GVT");
  */
 int intel_gvt_init(struct drm_i915_private *dev_priv)
 {
-       if (i915_inject_probe_failure(dev_priv))
-               return -ENODEV;
-
        mutex_lock(&intel_gvt_mutex);
        list_add_tail(&dev_priv->vgpu.entry, &intel_gvt_devices);
        if (intel_gvt_ops)
index 4adeb271fcbf6ec768da43c45fcca10f746e5db6..fdd2a940f9838f4552895c5d5f4dc9eecb25a6b2 100644 (file)
@@ -2072,9 +2072,6 @@ static int __fw_domain_init(struct intel_uncore *uncore,
        GEM_BUG_ON(domain_id >= FW_DOMAIN_ID_COUNT);
        GEM_BUG_ON(uncore->fw_domain[domain_id]);
 
-       if (i915_inject_probe_failure(uncore->i915))
-               return -ENOMEM;
-
        d = kzalloc(sizeof(*d), GFP_KERNEL);
        if (!d)
                return -ENOMEM;
@@ -2118,6 +2115,7 @@ static int __fw_domain_init(struct intel_uncore *uncore,
 
        return 0;
 }
+ALLOW_ERROR_INJECTION(__fw_domain_init, ERRNO);
 
 static void fw_domain_fini(struct intel_uncore *uncore,
                           enum forcewake_domain_id domain_id)