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 | 7 ++++--- kernel/sched/fair.c | 10 +++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h index 95e5d7772800..9a847c38aae1 100644 --- a/include/linux/sched/topology.h +++ b/include/linux/sched/topology.h @@ -130,9 +130,10 @@ 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; + KABI_FILL_HOLE(unsigned int newidle_call : 10) + KABI_FILL_HOLE(unsigned int newidle_success : 11) + KABI_FILL_HOLE(unsigned int newidle_ratio : 11) + u64 max_newidle_lb_cost; unsigned long last_decay_max_lb_cost; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index d16c65d5fa34..3a14d9cdd894 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -13653,14 +13653,18 @@ void update_max_interval(void) static inline void update_newidle_stats(struct sched_domain *sd, unsigned int success) { - sd->newidle_call++; + unsigned int newidle_call = sd->newidle_call; + + newidle_call++; sd->newidle_success += success; - if (sd->newidle_call >= 1024) { + if (newidle_call >= 1024) { sd->newidle_ratio = sd->newidle_success; - sd->newidle_call /= 2; + newidle_call /= 2; sd->newidle_success /= 2; } + + sd->newidle_call = newidle_call; } static inline bool -- 2.34.1