--- v9
+++ v10
@@ -27,6 +27,7 @@
Signed-off-by: Zecheng Li <zecheng@google.com>
Signed-off-by: Zecheng Li <zli94@ncsu.edu>
Reviewed-by: K Prateek Nayak <kprateek.nayak@amd.com>
+Reviewed-by: Josh Don <joshdon@google.com>
---
kernel/sched/core.c | 7 ++-----
kernel/sched/debug.c | 2 +-
@@ -35,10 +36,10 @@
4 files changed, 38 insertions(+), 27 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index 64b467c1d5b6..2df42786f780 100644
+index 7fb3f5f2d48c..86fbb38901aa 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8609,7 +8609,7 @@ void __init sched_init(void)
+@@ -8900,7 +8900,7 @@ void __init sched_init(void)
wait_bit_init();
#ifdef CONFIG_FAIR_GROUP_SCHED
@@ -47,7 +48,7 @@
#endif
#ifdef CONFIG_RT_GROUP_SCHED
ptr += 2 * nr_cpu_ids * sizeof(void **);
-@@ -8618,9 +8618,6 @@ void __init sched_init(void)
+@@ -8909,9 +8909,6 @@ void __init sched_init(void)
ptr = (unsigned long)kzalloc(ptr, GFP_NOWAIT);
#ifdef CONFIG_FAIR_GROUP_SCHED
@@ -57,7 +58,7 @@
root_task_group.cfs_rq = (struct cfs_rq **)ptr;
ptr += nr_cpu_ids * sizeof(void **);
-@@ -9697,7 +9694,7 @@ static int cpu_cfs_stat_show(struct seq_file *sf, void *v)
+@@ -9993,7 +9990,7 @@ static int cpu_cfs_stat_show(struct seq_file *sf, void *v)
int i;
for_each_possible_cpu(i) {
@@ -67,10 +68,10 @@
}
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
-index 6246008c431e..7e7860d56b4b 100644
+index ed3a0d65da0c..13ee25eeb49c 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
-@@ -750,7 +750,7 @@ void dirty_sched_domain_sysctl(int cpu)
+@@ -808,7 +808,7 @@ void dirty_sched_domain_sysctl(int cpu)
#ifdef CONFIG_FAIR_GROUP_SCHED
static void print_cfs_group_stats(struct seq_file *m, int cpu, struct task_group *tg)
{
@@ -80,10 +81,10 @@
#define P(F) SEQ_printf(m, " .%-30s: %lld\n", #F, (long long)F)
#define P_SCHEDSTAT(F) SEQ_printf(m, " .%-30s: %lld\n", \
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
-index 79160d419c9f..c116e7c2b916 100644
+index 2bdbe186a9e4..db23951d6ba0 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
-@@ -6212,7 +6212,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
+@@ -6847,7 +6847,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
{
struct rq *rq = rq_of(cfs_rq);
struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
@@ -92,7 +93,7 @@
/*
* It's possible we are called with runtime_remaining < 0 due to things
-@@ -10067,7 +10067,6 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
+@@ -11123,7 +11123,6 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
{
struct cfs_rq *cfs_rq, *pos;
bool decayed = false;
@@ -100,7 +101,7 @@
/*
* Iterates the task_group tree in a bottom up fashion, see
-@@ -10087,7 +10086,7 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
+@@ -11143,7 +11142,7 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
}
/* Propagate pending load changes to the parent, if any: */
@@ -109,7 +110,7 @@
if (se && !skip_blocked_update(se))
update_load_avg(cfs_rq_of(se), se, UPDATE_TG);
-@@ -10113,8 +10112,7 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
+@@ -11169,8 +11168,7 @@ static bool __update_blocked_fair(struct rq *rq, bool *done)
*/
static void update_cfs_rq_h_load(struct cfs_rq *cfs_rq)
{
@@ -119,7 +120,7 @@
unsigned long now = jiffies;
unsigned long load;
-@@ -13880,7 +13878,6 @@ void free_fair_sched_group(struct task_group *tg)
+@@ -15108,7 +15106,6 @@ void free_fair_sched_group(struct task_group *tg)
}
kfree(tg->cfs_rq);
@@ -127,7 +128,7 @@
}
int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
-@@ -13893,9 +13890,6 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
+@@ -15121,9 +15118,6 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
tg->cfs_rq = kzalloc_objs(cfs_rq, nr_cpu_ids);
if (!tg->cfs_rq)
goto err;
@@ -137,7 +138,7 @@
tg->shares = NICE_0_LOAD;
-@@ -13910,7 +13904,7 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
+@@ -15138,7 +15132,7 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
cfs_rq = &state->cfs_rq;
se = &state->se;
init_cfs_rq(cfs_rq);
@@ -146,7 +147,7 @@
init_entity_runnable_average(se);
}
-@@ -13929,7 +13923,7 @@ void online_fair_sched_group(struct task_group *tg)
+@@ -15157,7 +15151,7 @@ void online_fair_sched_group(struct task_group *tg)
for_each_possible_cpu(i) {
rq = cpu_rq(i);
@@ -155,7 +156,7 @@
rq_lock_irq(rq, &rf);
update_rq_clock(rq);
attach_entity_cfs_rq(se);
-@@ -13946,7 +13940,7 @@ void unregister_fair_sched_group(struct task_group *tg)
+@@ -15174,7 +15168,7 @@ void unregister_fair_sched_group(struct task_group *tg)
for_each_possible_cpu(cpu) {
struct cfs_rq *cfs_rq = tg->cfs_rq[cpu];
@@ -164,7 +165,7 @@
struct rq *rq = cpu_rq(cpu);
if (se) {
-@@ -13983,7 +13977,6 @@ void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
+@@ -15211,7 +15205,6 @@ void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
init_cfs_rq_runtime(cfs_rq);
tg->cfs_rq[cpu] = cfs_rq;
@@ -172,7 +173,7 @@
/* se could be NULL for root_task_group */
if (!se)
-@@ -14014,7 +14007,7 @@ static int __sched_group_set_shares(struct task_group *tg, unsigned long shares)
+@@ -15242,7 +15235,7 @@ static int __sched_group_set_shares(struct task_group *tg, unsigned long shares)
/*
* We can't change the weight of the root cgroup.
*/
@@ -181,7 +182,7 @@
return -EINVAL;
shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES));
-@@ -14025,7 +14018,7 @@ static int __sched_group_set_shares(struct task_group *tg, unsigned long shares)
+@@ -15253,7 +15246,7 @@ static int __sched_group_set_shares(struct task_group *tg, unsigned long shares)
tg->shares = shares;
for_each_possible_cpu(i) {
struct rq *rq = cpu_rq(i);
@@ -190,7 +191,7 @@
struct rq_flags rf;
/* Propagate contribution to hierarchy */
-@@ -14076,7 +14069,7 @@ int sched_group_set_idle(struct task_group *tg, long idle)
+@@ -15304,7 +15297,7 @@ int sched_group_set_idle(struct task_group *tg, long idle)
for_each_possible_cpu(i) {
struct rq *rq = cpu_rq(i);
@@ -200,7 +201,7 @@
bool was_idle = cfs_rq_is_idle(grp_cfs_rq);
long idle_task_delta;
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index 826f21fa3f36..258dc689a535 100644
+index c9aac3ab4bd9..63574f9d57f1 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -480,8 +480,6 @@ struct task_group {
@@ -212,7 +213,7 @@
/* runqueue "owned" by this group on each CPU */
struct cfs_rq **cfs_rq;
unsigned long shares;
-@@ -920,7 +918,8 @@ struct dl_rq {
+@@ -929,7 +927,8 @@ struct dl_rq {
};
#ifdef CONFIG_FAIR_GROUP_SCHED
@@ -222,7 +223,7 @@
/* An entity is a task if it doesn't "own" a runqueue */
#define entity_is_task(se) (!se->my_q)
-@@ -2259,6 +2258,28 @@ struct cfs_tg_state {
+@@ -2299,6 +2298,28 @@ struct cfs_tg_state {
struct sched_entity se;
struct sched_statistics stats;
} __no_randomize_layout;
@@ -251,7 +252,7 @@
#endif
/* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */
-@@ -2271,8 +2292,8 @@ static inline void set_task_rq(struct task_struct *p, unsigned int cpu)
+@@ -2311,8 +2332,8 @@ static inline void set_task_rq(struct task_struct *p, unsigned int cpu)
#ifdef CONFIG_FAIR_GROUP_SCHED
set_task_rq_fair(&p->se, p->se.cfs_rq, tg->cfs_rq[cpu]);
p->se.cfs_rq = tg->cfs_rq[cpu];
@@ -263,5 +264,5 @@
#ifdef CONFIG_RT_GROUP_SCHED
--
-2.53.0
-
+2.54.0
+