[PATCH 3/6] watchdog

Chris Wilson chris at chris-wilson.co.uk
Wed Jan 13 12:27:46 UTC 2021


Quoting Tvrtko Ursulin (2021-01-13 12:03:08)
>  void __i915_request_queue(struct i915_request *rq,
>                           const struct i915_sched_attr *attr)
>  {
> +       struct intel_context *ce = rq->context;
> +
> +       if (ce->watchdog.timeout_us) {
> +               hrtimer_init(&rq->watchdog.timer, CLOCK_MONOTONIC,
> +                            HRTIMER_MODE_REL);
> +               rq->watchdog.timer.function = request_watchdog_expired;
> +               hrtimer_start_range_ns(&rq->watchdog.timer,
> +                                      ns_to_ktime(ce->watchdog.timeout_us *
> +                                                  NSEC_PER_USEC),
> +                                      NSEC_PER_MSEC, /* FIXME check if it gives the "not sooner" guarantee or slack is both ways */
> +                                      HRTIMER_MODE_REL);
> +               i915_request_get(rq);
> +       }

Ignoring the existence of userspace today that requires >60s batches,
the trivial test to break this is to queue more than 10s worth of
work since this measuring time from user-ioctl to completion.
gem_exec_hostile/far-fence as a reminder on how we can legitimately
construct arbitrary amounts of work. (In this case, submit 3 5s batches,
the last should not fail.)
-Chris


More information about the Intel-gfx-trybot mailing list