* rather than continue on into oblivion. For everyone else,
         * the system should still plod along, but they have been warned!
         */
-       add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
+       add_taint_for_CI(TAINT_WARN);
 error:
        __i915_gem_set_wedged(i915);
        goto finish;
 
        return i915_ggtt_offset(i915->gt.scratch);
 }
 
+static inline void add_taint_for_CI(unsigned int taint)
+{
+       /*
+        * The system is "ok", just about surviving for the user, but
+        * CI results are now unreliable as the HW is very suspect.
+        * CI checks the taint state after every test and will reboot
+        * the machine if the kernel is tainted.
+        */
+       add_taint(taint, LOCKDEP_STILL_OK);
+}
+
 #endif
 
 static inline void
 fw_domain_wait_ack_clear(const struct intel_uncore_forcewake_domain *d)
 {
-       if (wait_ack_clear(d, FORCEWAKE_KERNEL))
+       if (wait_ack_clear(d, FORCEWAKE_KERNEL)) {
                DRM_ERROR("%s: timed out waiting for forcewake ack to clear.\n",
                          intel_uncore_forcewake_domain_to_str(d->id));
+               add_taint_for_CI(TAINT_WARN); /* CI now unreliable */
+       }
 }
 
 enum ack_type {
 static inline void
 fw_domain_wait_ack_set(const struct intel_uncore_forcewake_domain *d)
 {
-       if (wait_ack_set(d, FORCEWAKE_KERNEL))
+       if (wait_ack_set(d, FORCEWAKE_KERNEL)) {
                DRM_ERROR("%s: timed out waiting for forcewake ack request.\n",
                          intel_uncore_forcewake_domain_to_str(d->id));
+               add_taint_for_CI(TAINT_WARN); /* CI now unreliable */
+       }
 }
 
 static inline void