Re: [PATCH 16/21] drm/i915: Only query timestamp when measuring elapsed time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 03/06/16 17:08, Chris Wilson wrote:
Avoid the two calls to ktime_get_raw_ns() (at best it reads the TSC) as
we only need to compute the elapsed time for a timed wait.

v2: Eliminate the unused local variable reducing the function size by 64
bytes (using the storage space on the callers stack rather than adding
to our stack frame). Writing the code this emits smaller and faster code
for the normal case.

Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
  drivers/gpu/drm/i915/i915_gem.c | 14 +++++---------
  1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 269d00a40483..fdbad07b5f42 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1212,7 +1212,6 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
  	DEFINE_WAIT(reset);
  	struct intel_wait wait;
  	unsigned long timeout_remain;
-	s64 before = 0; /* Only to silence a compiler warning. */
  	int ret = 0;

  	might_sleep();
@@ -1231,12 +1230,9 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
  		if (*timeout == 0)
  			return -ETIME;

+		/* Record current time in case interrupted, or wedged */
  		timeout_remain = nsecs_to_jiffies_timeout(*timeout);
-
-		/*
-		 * Record current time in case interrupted by signal, or wedged.
-		 */
-		before = ktime_get_raw_ns();
+		*timeout += ktime_get_raw_ns();
  	}

  	trace_i915_gem_request_wait_begin(req);
@@ -1299,9 +1295,9 @@ complete:
  	trace_i915_gem_request_wait_end(req);

  	if (timeout) {
-		s64 tres = *timeout - (ktime_get_raw_ns() - before);
-
-		*timeout = tres < 0 ? 0 : tres;
+		*timeout -= ktime_get_raw_ns();
+		if (*timeout < 0)
+			*timeout = 0;

  		/*
  		 * Apparently ktime isn't accurate enough and occasionally has a


Still a no from me on this one.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux