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

Commit 4a4c0e29 authored by Benjamin Chan's avatar Benjamin Chan Committed by Narendra Muppalla
Browse files

msm: sde: Adding SW overhead statistic for SDE rotator



Enabling SW overhead statistic collection for SDE rotator. SW overhead
is defined as time between buffer queueing and HW flush.

CRs-Fixed: 1054205
Change-Id: I7f09dafa8c2d0f1940c76913ae842835059122f4
Signed-off-by: default avatarBenjamin Chan <bkchan@codeaurora.org>
parent 315cd778
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -35,10 +35,14 @@ static int sde_rotator_stat_show(struct seq_file *s, void *data)
	u64 count = stats->count;
	int num_events;
	s64 proc_max, proc_min, proc_avg;
	s64 swoh_max, swoh_min, swoh_avg;

	proc_max = 0;
	proc_min = S64_MAX;
	proc_avg = 0;
	swoh_max = 0;
	swoh_min = S64_MAX;
	swoh_avg = 0;

	if (count > SDE_ROTATOR_NUM_EVENTS) {
		num_events = SDE_ROTATOR_NUM_EVENTS;
@@ -59,9 +63,12 @@ static int sde_rotator_stat_show(struct seq_file *s, void *data)
		s64 proc_time =
			ktime_to_us(ktime_sub(ts[SDE_ROTATOR_TS_RETIRE],
					start_time));
		s64 sw_overhead_time =
			ktime_to_us(ktime_sub(ts[SDE_ROTATOR_TS_FLUSH],
					start_time));

		seq_printf(s,
			"s:%d sq:%lld dq:%lld fe:%lld q:%lld c:%lld fl:%lld d:%lld sdq:%lld ddq:%lld t:%lld\n",
			"s:%d sq:%lld dq:%lld fe:%lld q:%lld c:%lld fl:%lld d:%lld sdq:%lld ddq:%lld t:%lld oht:%lld\n",
			i,
			ktime_to_us(ktime_sub(ts[SDE_ROTATOR_TS_FENCE],
					ts[SDE_ROTATOR_TS_SRCQB])),
@@ -81,21 +88,30 @@ static int sde_rotator_stat_show(struct seq_file *s, void *data)
					ts[SDE_ROTATOR_TS_RETIRE])),
			ktime_to_us(ktime_sub(ts[SDE_ROTATOR_TS_DSTDQB],
					ts[SDE_ROTATOR_TS_RETIRE])),
			proc_time);
			proc_time, sw_overhead_time);

		proc_max = max(proc_max, proc_time);
		proc_min = min(proc_min, proc_time);
		proc_avg += proc_time;

		swoh_max = max(swoh_max, sw_overhead_time);
		swoh_min = min(swoh_min, sw_overhead_time);
		swoh_avg += sw_overhead_time;
	}

	proc_avg = (num_events) ?
			DIV_ROUND_CLOSEST_ULL(proc_avg, num_events) : 0;
	swoh_avg = (num_events) ?
			DIV_ROUND_CLOSEST_ULL(swoh_avg, num_events) : 0;

	seq_printf(s, "count:%llu\n", count);
	seq_printf(s, "fai1:%llu\n", stats->fail_count);
	seq_printf(s, "t_max:%lld\n", proc_max);
	seq_printf(s, "t_min:%lld\n", proc_min);
	seq_printf(s, "t_avg:%lld\n", proc_avg);
	seq_printf(s, "swoh_max:%lld\n", swoh_max);
	seq_printf(s, "swoh_min:%lld\n", swoh_min);
	seq_printf(s, "swoh_avg:%lld\n", swoh_avg);

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
#define SDE_ROTATOR_DRV_NAME		"sde_rotator"

/* Event logging constants */
#define SDE_ROTATOR_NUM_EVENTS		256
#define SDE_ROTATOR_NUM_EVENTS		4096
#define SDE_ROTATOR_NUM_TIMESTAMPS	SDE_ROTATOR_TS_MAX

struct sde_rotator_device;