Hi, > + do { > + /* > + * Starting with MTL, we need to coordinate not only with other > + * driver threads, but also with hardware/firmware agents. A > + * dedicated locking register is used. > + */ > + if (GRAPHICS_VER_FULL(gt->i915) >= IP_VER(12, 70)) > + err = wait_for(intel_uncore_read_fw(gt->uncore, > + MTL_STEER_SEMAPHORE) == 0x1, 100); > + else > + break; > + > + /* > + * In theory we should never fail to acquire the HW semaphore; > + * this would indicate some hardware/firmware is misbehaving and > + * not releasing it properly. > + */ > + if (err == -ETIMEDOUT) { > + gt_warn(gt, > + "hardware MCR steering semaphore timed out " > + "forcing lock takeover\n"); > + /* > + * Force lock takeover > + */ > + intel_uncore_write_fw(gt->uncore, > + MTL_STEER_SEMAPHORE, 0x1); > + } > + } while (err != -ETIMEDOUT); this is '==' of course... now I missed the CI tests. Andi