Commit 18421249 authored by Hui Tang's avatar Hui Tang
Browse files

sched: Support to enable/disable dynamic_affinity

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IAUFO7



--------------------------------

Currently, the 'dynamic_affinty' can be enabled but can not
disabled by cmdline.

In some scenarios may need to be enabled by default, it is
more reasonable changing cmdline to 'dynamic_affinty=enable/disable'.

Signed-off-by: default avatarHui Tang <tanghui20@huawei.com>
parent 91ff8f4b
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -8962,12 +8962,27 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)

DEFINE_STATIC_KEY_FALSE(__dynamic_affinity_switch);

static int __init dynamic_affinity_switch_setup(char *__unused)
static int __init dynamic_affinity_switch_setup(char *str)
{
	int ret = 1;

	if (!str)
		goto out;

	if (!strcmp(str, "enable"))
		static_branch_enable(&__dynamic_affinity_switch);
	return 1;
	else if (!strcmp(str, "disable"))
		static_branch_disable(&__dynamic_affinity_switch);
	else
		ret = 0;

out:
	if (!ret)
		pr_warn("Unable to parse dynamic_affinity=\n");

	return ret;
}
__setup("dynamic_affinity", dynamic_affinity_switch_setup);
__setup("dynamic_affinity=", dynamic_affinity_switch_setup);

static inline bool prefer_cpus_valid(struct task_struct *p)
{