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

Commit f6d68e27 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "sched: constrain HMP scheduler tunable range with in better way"

parents fbf3c441 cc60f079
Loading
Loading
Loading
Loading
+4 −22
Original line number Diff line number Diff line
@@ -1502,29 +1502,11 @@ int sched_hmp_proc_update_handler(struct ctl_table *table, int write,
	if (write && (old_val == *data))
		goto done;

	/*
	 * Special handling for sched_freq_aggregate_threshold_pct
	 * which can be greater than 100. Use 1000 as an upper bound
	 * value which works for all practical use cases.
	 */
	if (data == &sysctl_sched_freq_aggregate_threshold_pct) {
		if (*data > 1000) {
	if (sysctl_sched_downmigrate_pct > sysctl_sched_upmigrate_pct) {
		*data = old_val;
		ret = -EINVAL;
		goto done;
	}
	} else if (data != &sysctl_sched_select_prev_cpu_us) {
		/*
		 * all tunables other than sched_select_prev_cpu_us are
		 * in percentage.
		 */
		if (sysctl_sched_downmigrate_pct >
		    sysctl_sched_upmigrate_pct || *data > 100) {
			*data = old_val;
			ret = -EINVAL;
			goto done;
		}
	}

	/*
	 * Big task tunable change will need to re-classify tasks on
+23 −0
Original line number Diff line number Diff line
@@ -130,6 +130,9 @@ static int one_hundred = 100;
#ifdef CONFIG_PRINTK
static int ten_thousand = 10000;
#endif
#ifdef CONFIG_SCHED_HMP
static int one_thousand = 1000;
#endif

/* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
static unsigned long dirty_bytes_min = 2 * PAGE_SIZE;
@@ -336,6 +339,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_spill_nr_run",
@@ -351,6 +356,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_downmigrate",
@@ -358,6 +365,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_init_task_load",
@@ -365,6 +374,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_select_prev_cpu_us",
@@ -372,6 +383,7 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler   = sched_hmp_proc_update_handler,
		.extra1		= &zero,
	},
	{
		.procname       = "sched_enable_colocation",
@@ -397,6 +409,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler   = sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname	= "sched_big_waker_task_load",
@@ -404,6 +418,8 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler   = sched_hmp_proc_update_handler,
		.extra1		= &zero,
		.extra2		= &one_hundred,
	},
	{
		.procname       = "sched_enable_thread_grouping",
@@ -440,6 +456,13 @@ static struct ctl_table kern_table[] = {
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= sched_hmp_proc_update_handler,
		.extra1		= &zero,
		/*
		 * Special handling for sched_freq_aggregate_threshold_pct
		 * which can be greater than 100. Use 1000 as an upper bound
		 * value which works for all practical use cases.
		 */
		.extra2		= &one_thousand,
	},
	{
		.procname	= "sched_boost",