All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sharat Masetty <smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
	Sharat Masetty <smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: [PATCH 1/3] drm/msm: Change gpu_busy() function
Date: Wed, 17 Oct 2018 18:33:59 +0530	[thread overview]
Message-ID: <1539781441-13076-2-git-send-email-smasetty@codeaurora.org> (raw)
In-Reply-To: <1539781441-13076-1-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>

The gpu_busy() function turns out is useful for performance profiling as
well. So we change the input params to pass in the pointer to the previous
busy cycles, this makes the function more generic and removes the dependency
on the gpu devfreq.

Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
---
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 6 +++---
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 6 +++---
 drivers/gpu/drm/msm/msm_gpu.c         | 3 ++-
 drivers/gpu/drm/msm/msm_gpu.h         | 2 +-
 4 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
index 236a6ed..b5df80c 100644
--- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
@@ -1428,7 +1428,7 @@ static struct msm_ringbuffer *a5xx_active_ring(struct msm_gpu *gpu)
 	return a5xx_gpu->cur_ring;
 }
 
-static unsigned long a5xx_gpu_busy(struct msm_gpu *gpu)
+static unsigned long a5xx_gpu_busy(struct msm_gpu *gpu, u64 *prev_cycles)
 {
 	u64 busy_cycles;
 	unsigned long busy_time;
@@ -1436,10 +1436,10 @@ static unsigned long a5xx_gpu_busy(struct msm_gpu *gpu)
 	busy_cycles = gpu_read64(gpu, REG_A5XX_RBBM_PERFCTR_RBBM_0_LO,
 			REG_A5XX_RBBM_PERFCTR_RBBM_0_HI);
 
-	busy_time = (busy_cycles - gpu->devfreq.busy_cycles) /
+	busy_time = (busy_cycles - *prev_cycles) /
 		(clk_get_rate(gpu->core_clk) / 1000000);
 
-	gpu->devfreq.busy_cycles = busy_cycles;
+	*prev_cycles = busy_cycles;
 
 	return busy_time;
 }
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 07c3c3c..c0cd3ac 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -722,7 +722,7 @@ static void a6xx_destroy(struct msm_gpu *gpu)
 	kfree(a6xx_gpu);
 }
 
-static unsigned long a6xx_gpu_busy(struct msm_gpu *gpu)
+static unsigned long a6xx_gpu_busy(struct msm_gpu *gpu, u64 *prev_cycles)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
 	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
@@ -733,9 +733,9 @@ static unsigned long a6xx_gpu_busy(struct msm_gpu *gpu)
 			REG_A6XX_GMU_CX_GMU_POWER_COUNTER_XOCLK_0_L,
 			REG_A6XX_GMU_CX_GMU_POWER_COUNTER_XOCLK_0_H);
 
-	busy_time = ((busy_cycles - gpu->devfreq.busy_cycles) * 10) / 192;
+	busy_time = ((busy_cycles - *prev_cycles) * 10) / 192;
 
-	gpu->devfreq.busy_cycles = busy_cycles;
+	*prev_cycles = busy_cycles;
 
 	return busy_time;
 }
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index ca573f6..e9b5426 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -62,7 +62,8 @@ static int msm_devfreq_get_dev_status(struct device *dev,
 	else
 		status->current_frequency = clk_get_rate(gpu->core_clk);
 
-	status->busy_time = gpu->funcs->gpu_busy(gpu);
+	status->busy_time = gpu->funcs->gpu_busy(gpu,
+			&gpu->devfreq.busy_cycles);
 
 	time = ktime_get();
 	status->total_time = ktime_us_delta(time, gpu->devfreq.time);
diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h
index 9df48e3..0ff23ca 100644
--- a/drivers/gpu/drm/msm/msm_gpu.h
+++ b/drivers/gpu/drm/msm/msm_gpu.h
@@ -71,7 +71,7 @@ struct msm_gpu_funcs {
 	/* for generation specific debugfs: */
 	int (*debugfs_init)(struct msm_gpu *gpu, struct drm_minor *minor);
 #endif
-	unsigned long (*gpu_busy)(struct msm_gpu *gpu);
+	unsigned long (*gpu_busy)(struct msm_gpu *gpu, u64 *busy_cycles);
 	struct msm_gpu_state *(*gpu_state_get)(struct msm_gpu *gpu);
 	int (*gpu_state_put)(struct msm_gpu_state *state);
 	unsigned long (*gpu_get_freq)(struct msm_gpu *gpu);
-- 
1.9.1

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

  parent reply	other threads:[~2018-10-17 13:03 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-17 13:03 [PATCH 0/3] drm/msm: Revive GPU workload profiling Sharat Masetty
     [not found] ` <1539781441-13076-1-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-10-17 13:03   ` Sharat Masetty [this message]
     [not found]     ` <1539781441-13076-2-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-10-17 14:39       ` [PATCH 1/3] drm/msm: Change gpu_busy() function Jordan Crouse
2018-10-17 13:04   ` [PATCH 2/3] drm/msm/a6xx: Move power counter selectable to resume() Sharat Masetty
     [not found]     ` <1539781441-13076-3-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-10-17 14:09       ` Jordan Crouse
2018-10-17 13:04   ` [PATCH 3/3] drm/msm: Use Hardware counters for perf profiling Sharat Masetty
     [not found]     ` <1539781441-13076-4-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-10-17 14:35       ` Jordan Crouse
     [not found]         ` <20181017143548.GD4751-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-10-26 13:46           ` Sharat Masetty
     [not found]             ` <f57bf8b2-c44a-68f5-a051-2a17c1ac5704-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-28 20:09               ` Rob Clark

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=1539781441-13076-2-git-send-email-smasetty@codeaurora.org \
    --to=smasetty-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.