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

Commit 6f18847e authored by Joonwoo Park's avatar Joonwoo Park
Browse files

sched: WALT: introduce sched_group_{up,down}_migrate knobs



Introduce sched_group_upmigrate and sched_group_downmigrate to control
these tunables at a runtime.

Change-Id: I8d88b0ca15dc1daec99b03de116192acc2660ba7
Signed-off-by: default avatarJoonwoo Park <joonwoop@codeaurora.org>
parent 4784ec24
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ extern unsigned int sysctl_sched_cpu_high_irqload;
extern unsigned int sysctl_sched_use_walt_cpu_util;
extern unsigned int sysctl_sched_use_walt_task_util;
extern unsigned int sysctl_sched_boost;
extern unsigned int sysctl_sched_group_upmigrate_pct;
extern unsigned int sysctl_sched_group_downmigrate_pct;
#endif

#ifdef CONFIG_SCHED_HMP
@@ -53,8 +55,6 @@ extern unsigned int sysctl_sched_spill_nr_run;
extern unsigned int sysctl_sched_spill_load_pct;
extern unsigned int sysctl_sched_upmigrate_pct;
extern unsigned int sysctl_sched_downmigrate_pct;
extern unsigned int sysctl_sched_group_upmigrate_pct;
extern unsigned int sysctl_sched_group_downmigrate_pct;
extern unsigned int sysctl_early_detection_duration;
extern unsigned int sysctl_sched_small_wakee_task_load_pct;
extern unsigned int sysctl_sched_big_waker_task_load_pct;
@@ -67,6 +67,14 @@ extern unsigned int sysctl_sched_freq_aggregate_threshold_pct;
extern unsigned int sysctl_sched_prefer_sync_wakee_to_waker;
extern unsigned int sysctl_sched_short_burst;
extern unsigned int sysctl_sched_short_sleep;

#elif defined(CONFIG_SCHED_WALT)

extern int
walt_proc_update_handler(struct ctl_table *table, int write,
			 void __user *buffer, size_t *lenp,
			 loff_t *ppos);

#endif /* CONFIG_SCHED_HMP */

enum sched_tunable_scaling {
+30 −0
Original line number Diff line number Diff line
@@ -3065,3 +3065,33 @@ void walt_irq_work(struct irq_work *irq_work)

	core_ctl_check(this_rq()->window_start);
}

#ifndef CONFIG_SCHED_HMP
int walt_proc_update_handler(struct ctl_table *table, int write,
			     void __user *buffer, size_t *lenp,
			     loff_t *ppos)
{
	int ret;
	unsigned int *data = (unsigned int *)table->data;
	static DEFINE_MUTEX(mutex);

	mutex_lock(&mutex);
	ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
	if (ret || !write) {
		mutex_unlock(&mutex);
		return ret;
	}

	if (data == &sysctl_sched_group_upmigrate_pct)
		sched_group_upmigrate =
		    pct_to_real(sysctl_sched_group_upmigrate_pct);
	else if (data == &sysctl_sched_group_downmigrate_pct)
		sched_group_downmigrate =
		    pct_to_real(sysctl_sched_group_downmigrate_pct);
	else
		ret = -EINVAL;
	mutex_unlock(&mutex);

	return ret;
}
#endif
+25 −16
Original line number Diff line number Diff line
@@ -300,6 +300,31 @@ static struct ctl_table kern_table[] = {
		.mode           = 0644,
		.proc_handler   = proc_dointvec,
	},
	{
		.procname	= "sched_group_upmigrate",
		.data		= &sysctl_sched_group_upmigrate_pct,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
#ifdef CONFIG_SCHED_HMP
		.proc_handler	= sched_hmp_proc_update_handler,
#else
		.proc_handler	= walt_proc_update_handler,
#endif
		.extra1		= &sysctl_sched_group_downmigrate_pct,
	},
	{
		.procname	= "sched_group_downmigrate",
		.data		= &sysctl_sched_group_downmigrate_pct,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
#ifdef CONFIG_SCHED_HMP
		.proc_handler	= sched_hmp_proc_update_handler,
#else
		.proc_handler	= walt_proc_update_handler,
#endif
		.extra1		= &zero,
		.extra2		= &sysctl_sched_group_upmigrate_pct,
	},
#endif
#ifdef CONFIG_SCHED_HMP
	{
@@ -376,22 +401,6 @@ static struct ctl_table kern_table[] = {
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_group_upmigrate",
		.data		= &sysctl_sched_group_upmigrate_pct,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
	},
	{
		.procname	= "sched_group_downmigrate",
		.data		= &sysctl_sched_group_downmigrate_pct,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
	},
	{
		.procname	= "sched_init_task_load",
		.data		= &sysctl_sched_init_task_load_pct,