From nobody Wed Apr 1 11:04:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7FD093DFC86; Tue, 31 Mar 2026 13:16:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774963008; cv=none; b=s6IuxwWt6EeC9znFCjenXK1BGQ0WLZ79h87q5k6bwVvY6fuFkkteXYlmxfMpZTyr8+IqTsKJ3BTs2ig0Wuuhf/mTlioUbnZGXj/pFbxJxVlddSQuC3rvhgT1kjGAFxwSpWRh3y6mR+BnhZbPtyKgaAMiWy7eTa5U2YZsRG6fUPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774963008; c=relaxed/simple; bh=ToJm1amU84B7C3xkdXohgmvzVkmSBy0/3/PURrIxwTw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OyAEAPCaMx2p8yplmTezObc0wvSSSZsMIrALiZ5H08X1p+NX2DhGTMxLqByp+/byw0l3kMEsT96fF5HzaIw+vdYXOw756eJRoD1rWXCTuxBCUBFuPB8WnAgh8+psutsUfwGe7qs/p3dFrfvZ3QUh0PejxtRNaN40L92E0o00sDs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=utJ0Romu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="utJ0Romu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5A4EC2BCB2; Tue, 31 Mar 2026 13:16:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1774963008; bh=ToJm1amU84B7C3xkdXohgmvzVkmSBy0/3/PURrIxwTw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=utJ0Romu/Lw2Vfmju3QNiFc/EA0xnYIUlSWdQssecRsJ7FgzJFMgHPfVH2LvAMqja TLf2iG+Sd85g3nB/SE+Jb6dRTNC3m4WMt03izWbNdoYezhFxXjb8wqYBbJ1bUEVQp0 WnXJoAtGAnZHjLjg/rFM1mKp9xtk0vnD+9+2zi/SElWUWNzQn/c+oGTEudxRE+dIje 0INTYB2sNBultg56aZn3AInnqKCzbh6XpCMtAQ5LTN5t7e659wtaW28LUMwyF032f+ w94H++y/FvtDVUGczlKUyuMLCSzrD5tuW13D4sOabe9FDFBbMKMHCmIHkZpN6mBff4 jfFtn4MlU++Lg== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , "Christophe Leroy (CS GROUP)" , "Rafael J. Wysocki" , Alexander Gordeev , Anna-Maria Behnsen , Ben Segall , Boqun Feng , Christian Borntraeger , Dietmar Eggemann , Heiko Carstens , Ingo Molnar , Jan Kiszka , Joel Fernandes , Juri Lelli , Kieran Bingham , Madhavan Srinivasan , Mel Gorman , Michael Ellerman , Neeraj Upadhyay , Nicholas Piggin , "Paul E . McKenney" , Peter Zijlstra , Shrikanth Hegde , Steven Rostedt , Sven Schnelle , Thomas Gleixner , Uladzislau Rezki , Valentin Schneider , Vasily Gorbik , Vincent Guittot , Viresh Kumar , Xin Zhao , linux-pm@vger.kernel.org, linux-s390@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: [PATCH 02/14] sched/cputime: Remove superfluous and error prone kcpustat_field() parameter Date: Tue, 31 Mar 2026 15:16:10 +0200 Message-ID: <20260331131622.30505-3-frederic@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260331131622.30505-1-frederic@kernel.org> References: <20260331131622.30505-1-frederic@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The first parameter to kcpustat_field() is a pointer to the cpu kcpustat to be fetched from. This parameter is error prone because a copy to a kcpustat could be passed by accident instead of the original one. Also the kcpustat structure can already be retrieved with the help of the mandatory CPU argument. Remove the needless parameter. Signed-off-by: Frederic Weisbecker Reviewed-by: Shrikanth Hegde Tested-by: Shrikanth Hegde --- drivers/cpufreq/cpufreq_governor.c | 6 +++--- drivers/macintosh/rack-meter.c | 2 +- include/linux/kernel_stat.h | 8 +++----- kernel/rcu/tree.c | 9 +++------ kernel/rcu/tree_stall.h | 7 +++---- kernel/sched/cputime.c | 5 ++--- 6 files changed, 15 insertions(+), 22 deletions(-) diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_g= overnor.c index 36eb7aee4bcd..ed36d22195f6 100644 --- a/drivers/cpufreq/cpufreq_governor.c +++ b/drivers/cpufreq/cpufreq_governor.c @@ -105,7 +105,7 @@ void gov_update_cpu_data(struct dbs_data *dbs_data) j_cdbs->prev_cpu_idle =3D get_cpu_idle_time(j, &j_cdbs->prev_update_tim= e, dbs_data->io_is_busy); if (dbs_data->ignore_nice_load) - j_cdbs->prev_cpu_nice =3D kcpustat_field(&kcpustat_cpu(j), CPUTIME_NIC= E, j); + j_cdbs->prev_cpu_nice =3D kcpustat_field(CPUTIME_NICE, j); } } } @@ -165,7 +165,7 @@ unsigned int dbs_update(struct cpufreq_policy *policy) j_cdbs->prev_cpu_idle =3D cur_idle_time; =20 if (ignore_nice) { - u64 cur_nice =3D kcpustat_field(&kcpustat_cpu(j), CPUTIME_NICE, j); + u64 cur_nice =3D kcpustat_field(CPUTIME_NICE, j); =20 idle_time +=3D div_u64(cur_nice - j_cdbs->prev_cpu_nice, NSEC_PER_USEC); j_cdbs->prev_cpu_nice =3D cur_nice; @@ -539,7 +539,7 @@ int cpufreq_dbs_governor_start(struct cpufreq_policy *p= olicy) j_cdbs->prev_load =3D 0; =20 if (ignore_nice) - j_cdbs->prev_cpu_nice =3D kcpustat_field(&kcpustat_cpu(j), CPUTIME_NICE= , j); + j_cdbs->prev_cpu_nice =3D kcpustat_field(CPUTIME_NICE, j); } =20 gov->start(policy); diff --git a/drivers/macintosh/rack-meter.c b/drivers/macintosh/rack-meter.c index 8a1e2c08b096..26cb93191ede 100644 --- a/drivers/macintosh/rack-meter.c +++ b/drivers/macintosh/rack-meter.c @@ -87,7 +87,7 @@ static inline u64 get_cpu_idle_time(unsigned int cpu) kcpustat->cpustat[CPUTIME_IOWAIT]; =20 if (rackmeter_ignore_nice) - retval +=3D kcpustat_field(kcpustat, CPUTIME_NICE, cpu); + retval +=3D kcpustat_field(CPUTIME_NICE, cpu); =20 return retval; } diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h index b97ce2df376f..dd020ecaf67b 100644 --- a/include/linux/kernel_stat.h +++ b/include/linux/kernel_stat.h @@ -100,14 +100,12 @@ static inline unsigned long kstat_cpu_irqs_sum(unsign= ed int cpu) } =20 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN -extern u64 kcpustat_field(struct kernel_cpustat *kcpustat, - enum cpu_usage_stat usage, int cpu); +extern u64 kcpustat_field(enum cpu_usage_stat usage, int cpu); extern void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu); #else -static inline u64 kcpustat_field(struct kernel_cpustat *kcpustat, - enum cpu_usage_stat usage, int cpu) +static inline u64 kcpustat_field(enum cpu_usage_stat usage, int cpu) { - return kcpustat->cpustat[usage]; + return kcpustat_cpu(cpu).cpustat[usage]; } =20 static inline void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 55df6d37145e..3cbf79bee976 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -969,14 +969,11 @@ static int rcu_watching_snap_recheck(struct rcu_data = *rdp) if (rcu_cpu_stall_cputime && rdp->snap_record.gp_seq !=3D rdp->gp_seq) { int cpu =3D rdp->cpu; struct rcu_snap_record *rsrp; - struct kernel_cpustat *kcsp; - - kcsp =3D &kcpustat_cpu(cpu); =20 rsrp =3D &rdp->snap_record; - rsrp->cputime_irq =3D kcpustat_field(kcsp, CPUTIME_IRQ, cpu); - rsrp->cputime_softirq =3D kcpustat_field(kcsp, CPUTIME_SOFTIRQ, cpu); - rsrp->cputime_system =3D kcpustat_field(kcsp, CPUTIME_SYSTEM, cpu); + rsrp->cputime_irq =3D kcpustat_field(CPUTIME_IRQ, cpu); + rsrp->cputime_softirq =3D kcpustat_field(CPUTIME_SOFTIRQ, cpu); + rsrp->cputime_system =3D kcpustat_field(CPUTIME_SYSTEM, cpu); rsrp->nr_hardirqs =3D kstat_cpu_irqs_sum(cpu) + arch_irq_stat_cpu(cpu); rsrp->nr_softirqs =3D kstat_cpu_softirqs_sum(cpu); rsrp->nr_csw =3D nr_context_switches_cpu(cpu); diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index b67532cb8770..cf7ae51cba40 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -479,7 +479,6 @@ static void print_cpu_stat_info(int cpu) { struct rcu_snap_record rsr, *rsrp; struct rcu_data *rdp =3D per_cpu_ptr(&rcu_data, cpu); - struct kernel_cpustat *kcsp =3D &kcpustat_cpu(cpu); =20 if (!rcu_cpu_stall_cputime) return; @@ -488,9 +487,9 @@ static void print_cpu_stat_info(int cpu) if (rsrp->gp_seq !=3D rdp->gp_seq) return; =20 - rsr.cputime_irq =3D kcpustat_field(kcsp, CPUTIME_IRQ, cpu); - rsr.cputime_softirq =3D kcpustat_field(kcsp, CPUTIME_SOFTIRQ, cpu); - rsr.cputime_system =3D kcpustat_field(kcsp, CPUTIME_SYSTEM, cpu); + rsr.cputime_irq =3D kcpustat_field(CPUTIME_IRQ, cpu); + rsr.cputime_softirq =3D kcpustat_field(CPUTIME_SOFTIRQ, cpu); + rsr.cputime_system =3D kcpustat_field(CPUTIME_SYSTEM, cpu); =20 pr_err("\t hardirqs softirqs csw/system\n"); pr_err("\t number: %8lld %10d %12lld\n", diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c index fbf31db0d2f3..caaaf0a04ced 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -975,10 +975,9 @@ static int kcpustat_field_vtime(u64 *cpustat, return 0; } =20 -u64 kcpustat_field(struct kernel_cpustat *kcpustat, - enum cpu_usage_stat usage, int cpu) +u64 kcpustat_field(enum cpu_usage_stat usage, int cpu) { - u64 *cpustat =3D kcpustat->cpustat; + u64 *cpustat =3D kcpustat_cpu(cpu).cpustat; u64 val =3D cpustat[usage]; struct rq *rq; int err; --=20 2.53.0