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

Commit 635bbd23 authored by Pavankumar Kondeti's avatar Pavankumar Kondeti
Browse files

sched: walt: Refactor WALT initialization routine



The global variables are initialized in walt_sched_init(). This
function is called for each rq initialization and the global
variables are initialized again unnecessarily. Refactor the code
to fix this.

Signed-off-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
Change-Id: I085bc9ff576f655afa12fda015f054fbab3a0c91
parent 0f07a953
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6412,7 +6412,7 @@ void __init sched_init(void)
		rq->avg_idle = 2*sysctl_sched_migration_cost;
		rq->max_idle_balance_cost = sysctl_sched_migration_cost;
		rq->push_task = NULL;
		walt_sched_init(rq);
		walt_sched_init_rq(rq);

		INIT_LIST_HEAD(&rq->cfs_tasks);

+18 −11
Original line number Diff line number Diff line
@@ -3251,15 +3251,29 @@ int walt_proc_update_handler(struct ctl_table *table, int write,
	return ret;
}

void walt_sched_init(struct rq *rq)
static void walt_init_once(void)
{
	int j;

	cpumask_set_cpu(cpu_of(rq), &rq->freq_domain_cpumask);
	init_irq_work(&walt_migration_irq_work, walt_irq_work);
	init_irq_work(&walt_cpufreq_irq_work, walt_irq_work);
	walt_rotate_work_init();

	walt_cpu_util_freq_divisor =
	    (sched_ravg_window >> SCHED_CAPACITY_SHIFT) * 100;

	sched_init_task_load_windows =
		div64_u64((u64)sysctl_sched_init_task_load_pct *
			  (u64)sched_ravg_window, 100);
}

void walt_sched_init_rq(struct rq *rq)
{
	int j;

	if (cpu_of(rq) == 0)
		walt_init_once();

	cpumask_set_cpu(cpu_of(rq), &rq->freq_domain_cpumask);

	rq->walt_stats.cumulative_runnable_avg = 0;
	rq->window_start = 0;
	rq->cum_window_start = 0;
@@ -3305,11 +3319,4 @@ void walt_sched_init(struct rq *rq)
	}
	rq->cum_window_demand = 0;
	rq->notif_pending = false;

	walt_cpu_util_freq_divisor =
	    (sched_ravg_window >> SCHED_CAPACITY_SHIFT) * 100;

	sched_init_task_load_windows =
		div64_u64((u64)sysctl_sched_init_task_load_pct *
			  (u64)sched_ravg_window, 100);
}
+2 −2
Original line number Diff line number Diff line
@@ -293,7 +293,7 @@ void sort_clusters(void);

void walt_irq_work(struct irq_work *irq_work);

void walt_sched_init(struct rq *rq);
void walt_sched_init_rq(struct rq *rq);

static inline void walt_update_last_enqueue(struct task_struct *p)
{
@@ -305,7 +305,7 @@ extern unsigned int walt_rotation_enabled;

#else /* CONFIG_SCHED_WALT */

static inline void walt_sched_init(struct rq *rq) { }
static inline void walt_sched_init_rq(struct rq *rq) { }

static inline void walt_rotate_work_init(void) { }
static inline void walt_rotation_checkpoint(int nr_big) { }