[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