Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: John.C.Harrison@Intel.com
To: IGT-Dev@Lists.FreeDesktop.Org
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Subject: [igt-dev] [PATCH i-g-t v2 4/4] scripts/trace.pl: Simplify 'end' & 'notify' generation
Date: Mon, 22 Jan 2018 22:32:37 -0800	[thread overview]
Message-ID: <20180123063237.32039-5-John.C.Harrison@Intel.com> (raw)
In-Reply-To: <20180123063237.32039-1-John.C.Harrison@Intel.com>

From: John Harrison <John.C.Harrison@Intel.com>

Delay the auto-generation of end/notify values until the point where
everything is known. As opposed to potentially generating them
multiple times with differing values (in the case of 'incomplete'
entries).

v2: More complete description. [Tvrtko]

Signed-off-by: John Harrison <John.C.Harrison@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 scripts/trace.pl | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/scripts/trace.pl b/scripts/trace.pl
index c984cef6..ba969d2c 100755
--- a/scripts/trace.pl
+++ b/scripts/trace.pl
@@ -467,10 +467,11 @@ while (<>) {
 }
 
 # Sanitation pass to fixup up out of order notify and context complete, and to
-# fine the largest seqno to be used for timeline sorting purposes.
+# find the largest seqno to be used for timeline sorting purposes.
 my $max_seqno = 0;
 foreach my $key (keys %db) {
 	my $gkey = global_key($db{$key}->{'ring'}, $db{$key}->{'global'});
+	my $notify = $notify{$gkey};
 
 	die unless exists $db{$key}->{'start'};
 
@@ -478,23 +479,21 @@ foreach my $key (keys %db) {
 
 	unless (exists $db{$key}->{'end'}) {
 		# Context complete not received.
-		if (exists $notify{$gkey}) {
+		$db{$key}->{'no-end'} = 1;
+
+		if (defined($notify)) {
 			# No context complete due req merging - use notify.
-			$db{$key}->{'notify'} = $notify{$gkey};
-			$db{$key}->{'end'} = $db{$key}->{'notify'};
-			$db{$key}->{'no-end'} = 1;
+			$db{$key}->{'notify'} = $notify;
+			$db{$key}->{'end'} = $notify;
 		} else {
-			# No notify and no context complete - mark it.
-			$db{$key}->{'no-end'} = 1;
-			$db{$key}->{'end'} = $db{$key}->{'start'} + 999;
-			$db{$key}->{'notify'} = $db{$key}->{'end'};
+			# No notify and no context complete - give up for now.
 			$db{$key}->{'incomplete'} = 1;
 		}
 	} else {
 		# Notify arrived after context complete.
-		if (exists $db{$key}->{'no-notify'} and exists $notify{$gkey}) {
+		if (exists $db{$key}->{'no-notify'} and defined($notify)) {
 			delete $db{$key}->{'no-notify'};
-			$db{$key}->{'notify'} = $notify{$gkey};
+			$db{$key}->{'notify'} = $notify;
 		}
 	}
 }
@@ -510,6 +509,7 @@ foreach my $key (keys(%db)) {
 	my $seqno = $db{$key}->{'seqno'};
 	my $next_key;
 	my $i = 1;
+	my $end;
 
 	do {
 		$next_key = db_key($ring, $ctx, $seqno + $i);
@@ -518,9 +518,14 @@ foreach my $key (keys(%db)) {
 		 or $i > $key_count);  # ugly stop hack
 
 	if (exists $db{$next_key}) {
-		$db{$key}->{'notify'} = $db{$next_key}->{'end'};
-		$db{$key}->{'end'} = $db{$key}->{'notify'};
+		$end = $db{$next_key}->{'end'};
+	} else {
+		# No info at all, fake it:
+		$end = $db{$key}->{'start'} + 999;
 	}
+
+	$db{$key}->{'notify'} = $end;
+	$db{$key}->{'end'} = $end;
 }
 
 # GPU time accounting
-- 
2.15.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2018-01-23  6:32 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-23  6:32 [igt-dev] [PATCH i-g-t v2 0/4] scripts/trace.pl: Re-order calculations and fixups John.C.Harrison
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 1/4] scripts/trace.pl: More hash key optimisations John.C.Harrison
2018-01-24 10:07   ` Tvrtko Ursulin
2018-01-25 16:18     ` John.C.Harrison
2018-01-25 16:24     ` John.C.Harrison
2018-01-25 16:36       ` Tvrtko Ursulin
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 2/4] scripts/trace.pl: Sort order John.C.Harrison
2018-01-24 10:10   ` Tvrtko Ursulin
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 3/4] scripts/trace.pl: Calculate stats only after all munging John.C.Harrison
2018-01-24 10:11   ` Tvrtko Ursulin
2018-01-25 18:11   ` Tvrtko Ursulin
2018-01-23  6:32 ` John.C.Harrison [this message]
2018-01-24 10:12   ` [igt-dev] [PATCH i-g-t v2 4/4] scripts/trace.pl: Simplify 'end' & 'notify' generation Tvrtko Ursulin
2018-01-23  6:53 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups Patchwork
2018-01-23 10:20 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-01-25 16:40 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups (rev2) Patchwork
2018-01-25 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups (rev3) Patchwork
2018-01-25 18:04 ` [igt-dev] ✗ Fi.CI.IGT: warning for scripts/trace.pl: Re-order calculations and fixups (rev2) Patchwork
2018-01-25 18:49 ` [igt-dev] ✗ Fi.CI.IGT: failure for scripts/trace.pl: Re-order calculations and fixups (rev3) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180123063237.32039-5-John.C.Harrison@Intel.com \
    --to=john.c.harrison@intel.com \
    --cc=IGT-Dev@Lists.FreeDesktop.Org \
    --cc=tvrtko.ursulin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox