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

Commit db16fb73 authored by Kyle Piefer's avatar Kyle Piefer Committed by Gerrit - the friendly Code Review server
Browse files

devfreq: Weight stall cycles more for GPU bus DCVS



Update GPU Bus DCVS to weight high stall cycles (as a percentage
of total bus usage) heavier in order to vote up the bus when the
GPU is stalling a lot waiting for data.

Change-Id: I8a331a48a1ab737c51f1001ea1991f09af9ef900
Signed-off-by: default avatarKyle Piefer <kpiefer@codeaurora.org>
parent 3ce60773
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#define HIST                    5
#define TARGET                  80
#define CAP                     75
#define WAIT_THRESHOLD          10
/* AB vote is in multiple of BW_STEP Mega bytes */
#define BW_STEP                 160

@@ -59,6 +60,7 @@ static int devfreq_gpubw_get_target(struct devfreq *df,
	int act_level;
	int norm_max_cycles;
	int norm_cycles;
	int wait_active_percent;
	int gpu_percent;
	/*
	 * Normalized AB should at max usage be the gpu_bimc frequency in MHz.
@@ -91,6 +93,8 @@ static int devfreq_gpubw_get_target(struct devfreq *df,
			(unsigned int) priv->bus.total_time;
	norm_cycles = (unsigned int)(priv->bus.ram_time + priv->bus.ram_wait) /
			(unsigned int) priv->bus.total_time;
	wait_active_percent = (100 * (unsigned int)priv->bus.ram_wait) /
			(unsigned int) priv->bus.ram_time;
	gpu_percent = (100 * (unsigned int)priv->bus.gpu_time) /
			(unsigned int) priv->bus.total_time;

@@ -109,7 +113,8 @@ static int devfreq_gpubw_get_target(struct devfreq *df,
		act_level = (act_level < 0) ? 0 : act_level;
		act_level = (act_level >= priv->bus.num) ?
		(priv->bus.num - 1) : act_level;
		if (norm_cycles > priv->bus.up[act_level] &&
		if ((norm_cycles > priv->bus.up[act_level] ||
				wait_active_percent > WAIT_THRESHOLD) &&
				gpu_percent > CAP)
			bus_profile->flag = DEVFREQ_FLAG_FAST_HINT;
		else if (norm_cycles < priv->bus.down[act_level] && level)