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

Reply via email to