hulk inclusion category: bugfix bugzilla: https://atomgit.com/openeuler/kernel/issues/8555 -------------------------------- Fix kabi breakage pf struct sched_domain for newidle_stats Fixes: 9b20f39a39e9 ("sched/fair: Proportional newidle balance") Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com> --- include/linux/sched/topology.h | 8 +++++--- kernel/sched/fair.c | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h index 95e5d7772800..74b4b06d4825 100644 --- a/include/linux/sched/topology.h +++ b/include/linux/sched/topology.h @@ -130,9 +130,6 @@ struct sched_domain { unsigned int nr_balance_failed; /* initialise to 0 */ /* idle_balance() stats */ - unsigned int newidle_call; - unsigned int newidle_success; - unsigned int newidle_ratio; u64 max_newidle_lb_cost; unsigned long last_decay_max_lb_cost; @@ -179,6 +176,11 @@ struct sched_domain { struct sched_domain_shared *shared; unsigned int span_weight; + + KABI_FILL_HOLE(unsigned int newidle_call : 10) + KABI_FILL_HOLE(unsigned int newidle_success : 11) + KABI_FILL_HOLE(unsigned int newidle_ratio : 11) + /* * Span of all CPUs in this domain. * diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index d16c65d5fa34..afe02d0ba3b2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -13653,14 +13653,20 @@ void update_max_interval(void) static inline void update_newidle_stats(struct sched_domain *sd, unsigned int success) { - sd->newidle_call++; - sd->newidle_success += success; + unsigned int newidle_call = sd->newidle_call; + unsigned int newidle_success = sd->newidle_success; - if (sd->newidle_call >= 1024) { - sd->newidle_ratio = sd->newidle_success; - sd->newidle_call /= 2; - sd->newidle_success /= 2; + newidle_call++; + newidle_success += success; + + if (newidle_call >= 1024) { + sd->newidle_ratio = newidle_success; + newidle_call /= 2; + newidle_success /= 2; } + + sd->newidle_call = newidle_call; + sd->newidle_success = newidle_success; } static inline bool -- 2.34.1