From ea08b58eb670ddaaef3e49f4bf4ae7e7830e8413 Mon Sep 17 00:00:00 2001
From: Cheng Jian <cj.chengjian@huawei.com>
Date: Fri, 7 May 2021 19:37:22 +0800
Subject: [PATCH] Revert "sched: Introduce qos scheduler for co-location"

This reverts commit 709d65618750e239e76c7ceac081673f36b265d0.
---
 init/Kconfig         |  5 ---
 kernel/sched/core.c  | 95 --------------------------------------------
 kernel/sched/sched.h |  4 --
 3 files changed, 104 deletions(-)

diff --git a/init/Kconfig b/init/Kconfig
index e57c7d70328b..1386cf410c6a 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -776,11 +776,6 @@ menuconfig CGROUP_SCHED
 	  tasks.
 
 if CGROUP_SCHED
-config QOS_SCHED
-    bool "Qos task scheduling"
-    depends on CGROUP_SCHED
-    default n
-
 config FAIR_GROUP_SCHED
 	bool "Group scheduling for SCHED_OTHER"
 	depends on CGROUP_SCHED
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 8c1af86a3b21..41fee321ef83 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6329,15 +6329,6 @@ void ia64_set_curr_task(int cpu, struct task_struct *p)
 /* task_group_lock serializes the addition/removal of task groups */
 static DEFINE_SPINLOCK(task_group_lock);
 
-#ifdef CONFIG_QOS_SCHED
-static int alloc_qos_sched_group(struct task_group *tg, struct task_group *parent)
-{
-	tg->qos_level = parent->qos_level;
-
-	return 1;
-}
-#endif
-
 static void sched_free_group(struct task_group *tg)
 {
 	free_fair_sched_group(tg);
@@ -6358,11 +6349,6 @@ struct task_group *sched_create_group(struct task_group *parent)
 	if (!alloc_fair_sched_group(tg, parent))
 		goto err;
 
-#ifdef CONFIG_QOS_SCHED
-	if (!alloc_qos_sched_group(tg, parent))
-		goto err;
-#endif
-
 	if (!alloc_rt_sched_group(tg, parent))
 		goto err;
 
@@ -6431,30 +6417,6 @@ static void sched_change_group(struct task_struct *tsk, int type)
 	tg = autogroup_task_group(tsk, tg);
 	tsk->sched_task_group = tg;
 
-#ifdef CONFIG_QOS_SCHED
-	/*
-	 * No need to re-setcheduler when a task is exiting or the task
-	 * is in an autogroup.
-	 */
-	if (!rt_task(tsk)
-	    && !(tsk->flags & PF_EXITING)
-	    && !task_group_is_autogroup(tg)) {
-		struct rq *rq = task_rq(tsk);
-		struct sched_attr attr = {
-			.sched_priority = 0,
-		};
-
-		if (tg->qos_level == -1) {
-			attr.sched_policy = SCHED_IDLE;
-		} else {
-			attr.sched_policy = SCHED_NORMAL;
-		}
-		attr.sched_nice = PRIO_TO_NICE(tsk->static_prio);
-
-		__setscheduler(rq, tsk, &attr, 0);
-	}
-#endif
-
 #ifdef CONFIG_FAIR_GROUP_SCHED
 	if (tsk->sched_class->task_change_group)
 		tsk->sched_class->task_change_group(tsk, type);
@@ -6915,56 +6877,6 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css,
 }
 #endif /* CONFIG_RT_GROUP_SCHED */
 
-#ifdef CONFIG_QOS_SCHED
-static int cpu_qos_write(struct cgroup_subsys_state *css,
-			struct cftype *cftype, s64 qos_level)
-{
-	struct css_task_iter it;
-	struct task_struct *tsk;
-	struct task_group *tg;
-	struct sched_param param;
-	int pid, policy;
-	tg = css_tg(css);
-
-	if (!tg->se[0])
-		return -EINVAL;
-
-	if (qos_level != -1 && qos_level != 0)
-		return -EINVAL;
-
-	if (tg->qos_level == qos_level)
-		goto done;
-
-	if (qos_level == -1) {
-		policy = SCHED_IDLE;
-	} else {
-		policy = SCHED_NORMAL;
-	}
-
-	tg->qos_level = qos_level;
-
-	param.sched_priority = 0;
-	css_task_iter_start(css, 0, &it);
-	while ((tsk = css_task_iter_next(&it))) {
-		pid = task_tgid_vnr(tsk);
-
-		if (pid > 0 && !rt_task(tsk)) {
-			sched_setscheduler(tsk, policy, &param);
-		}
-	}
-	css_task_iter_end(&it);
-
-done:
-	return 0;
-}
-
-static s64 cpu_qos_read(struct cgroup_subsys_state *css, struct cftype *cft)
-{
-        struct task_group *tg = css_tg(css);
-        return tg->qos_level;
-}
-#endif /* CONFIG_QOS_SCHED */
-
 static struct cftype cpu_legacy_files[] = {
 #ifdef CONFIG_FAIR_GROUP_SCHED
 	{
@@ -7000,13 +6912,6 @@ static struct cftype cpu_legacy_files[] = {
 		.read_u64 = cpu_rt_period_read_uint,
 		.write_u64 = cpu_rt_period_write_uint,
 	},
-#endif
-#ifdef CONFIG_QOS_SCHED
-	{
-		.name = "qos_level",
-		.read_s64 = cpu_qos_read,
-		.write_s64 = cpu_qos_write,
-	},
 #endif
 	{ }	/* Terminate */
 };
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 502af7c7373e..ca2fd2d6171f 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -400,11 +400,7 @@ struct task_group {
 
 	struct cfs_bandwidth	cfs_bandwidth;
 
-#if defined(CONFIG_QOS_SCHED) && !defined(__GENKSYMS__)
-	long qos_level;
-#else
 	KABI_RESERVE(1)
-#endif
 	KABI_RESERVE(2)
 };
 
-- 
GitLab