Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae351beb authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Combine reset_all_global_seqno() loops into one



We can merge the pair of loops over the engines and their timelines into
a single loop, making it easier to read and more consistent with the
commentary.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170330145041.9005-6-chris@chris-wilson.co.uk


Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
parent 7a453fb8
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -191,7 +191,6 @@ i915_priotree_init(struct i915_priotree *pt)

static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno)
{
	struct i915_gem_timeline *timeline = &i915->gt.global_timeline;
	struct intel_engine_cs *engine;
	enum intel_engine_id id;
	int ret;
@@ -205,7 +204,8 @@ static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno)

	/* If the seqno wraps around, we need to clear the breadcrumb rbtree */
	for_each_engine(engine, i915, id) {
		struct intel_timeline *tl = &timeline->engine[id];
		struct i915_gem_timeline *timeline;
		struct intel_timeline *tl = engine->timeline;

		if (!i915_seqno_passed(seqno, tl->seqno)) {
			/* spin until threads are complete */
@@ -216,14 +216,10 @@ static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno)
		/* Finally reset hw state */
		tl->seqno = seqno;
		intel_engine_init_global_seqno(engine, seqno);
	}

	list_for_each_entry(timeline, &i915->gt.timelines, link) {
		for_each_engine(engine, i915, id) {
			struct intel_timeline *tl = &timeline->engine[id];

			memset(tl->sync_seqno, 0, sizeof(tl->sync_seqno));
		}
		list_for_each_entry(timeline, &i915->gt.timelines, link)
			memset(timeline->engine[id].sync_seqno, 0,
			       sizeof(timeline->engine[id].sync_seqno));
	}

	return 0;