From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Frederic Weisbecker <frederic@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Ben Segall <bsegall@google.com>,
Boqun Feng <boqun.feng@gmail.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Ingo Molnar <mingo@redhat.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
Joel Fernandes <joelagnelf@nvidia.com>,
Juri Lelli <juri.lelli@redhat.com>,
Kieran Bingham <kbingham@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Mel Gorman <mgorman@suse.de>,
Michael Ellerman <mpe@ellerman.id.au>,
Neeraj Upadhyay <neeraj.upadhyay@kernel.org>,
Nicholas Piggin <npiggin@gmail.com>,
"Paul E . McKenney" <paulmck@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sven Schnelle <svens@linux.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Uladzislau Rezki <urezki@gmail.com>,
Valentin Schneider <vschneid@redhat.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Xin Zhao <jackzxcui1989@163.com>,
linux-pm@vger.kernel.org, linux-s390@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 04/14] powerpc/time: Prepare to stop elapsing in dynticks-idle
Date: Mon, 13 Apr 2026 13:00:07 +0200 [thread overview]
Message-ID: <2dab11d1-18ca-4da4-a33e-3f2c3c4b6320@kernel.org> (raw)
In-Reply-To: <20260331131622.30505-5-frederic@kernel.org>
Le 31/03/2026 à 15:16, Frederic Weisbecker a écrit :
> Currently the tick subsystem stores the idle cputime accounting in
> private fields, allowing cohabitation with architecture idle vtime
> accounting. The former is fetched on online CPUs, the latter on offline
> CPUs.
>
> For consolidation purpose, architecture vtime accounting will continue
> to account the cputime but will make a break when the idle tick is
> stopped. The dyntick cputime accounting will then be relayed by the tick
> subsystem so that the idle cputime is still seen advancing coherently
> even when the tick isn't there to flush the idle vtime.
>
> Prepare for that and introduce three new APIs which will be used in
> subsequent patches:
>
> _ vtime_dynticks_start() is deemed to be called when idle enters in
> dyntick mode. The idle cputime that elapsed so far is accumulated.
>
> - vtime_dynticks_stop() is deemed to be called when idle exits from
> dyntick mode. The vtime entry clocks are fast-forward to current time
> so that idle accounting restarts elapsing from now.
>
> - vtime_reset() is deemed to be called from dynticks idle IRQ entry to
> fast-forward the clock to current time so that the IRQ time is still
> accounted by vtime while nohz cputime is paused.
>
> Also accumulated vtime won't be flushed from dyntick-idle ticks to avoid
> accounting twice the idle cputime, along with nohz accounting.
>
> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
> Tested-by: Shrikanth Hegde <sshegde@linux.ibm.com>
> ---
> arch/powerpc/kernel/time.c | 41 ++++++++++++++++++++++++++++++++++++++
> include/linux/vtime.h | 6 ++++++
> 2 files changed, 47 insertions(+)
>
...
> diff --git a/include/linux/vtime.h b/include/linux/vtime.h
> index 336875bea767..61b94c12d7dd 100644
> --- a/include/linux/vtime.h
> +++ b/include/linux/vtime.h
> @@ -37,11 +37,17 @@ extern void vtime_account_irq(struct task_struct *tsk, unsigned int offset);
> extern void vtime_account_softirq(struct task_struct *tsk);
> extern void vtime_account_hardirq(struct task_struct *tsk);
> extern void vtime_flush(struct task_struct *tsk);
> +extern void vtime_reset(void);
> +extern void vtime_dyntick_start(void);
> +extern void vtime_dyntick_stop(void);
> #else /* !CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */
> static inline void vtime_account_irq(struct task_struct *tsk, unsigned int offset) { }
> static inline void vtime_account_softirq(struct task_struct *tsk) { }
> static inline void vtime_account_hardirq(struct task_struct *tsk) { }
> static inline void vtime_flush(struct task_struct *tsk) { }
> +static inline void vtime_reset(void) { }
> +static inline void vtime_dyntick_start(void) { }
> +extern inline void vtime_dyntick_stop(void) { }
You mean 'static' inline, not 'extern' ?
Christophe
> #endif
>
> /*
next prev parent reply other threads:[~2026-04-13 11:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 13:16 [PATCH 00/14 v3] tick/sched: Refactor idle cputime accounting Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 01/14] sched/idle: Handle offlining first in idle loop Frederic Weisbecker
2026-03-31 13:59 ` Rafael J. Wysocki
2026-03-31 13:16 ` [PATCH 02/14] sched/cputime: Remove superfluous and error prone kcpustat_field() parameter Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 03/14] sched/cputime: Correctly support generic vtime idle time Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 04/14] powerpc/time: Prepare to stop elapsing in dynticks-idle Frederic Weisbecker
2026-04-13 11:00 ` Christophe Leroy (CS GROUP) [this message]
2026-04-29 13:42 ` Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 05/14] s390/time: " Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 06/14] tick/sched: Unify idle cputime accounting Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 07/14] tick/sched: Remove nohz disabled special case in cputime fetch Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 08/14] tick/sched: Move dyntick-idle cputime accounting to cputime code Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 09/14] tick/sched: Remove unused fields Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 10/14] tick/sched: Account tickless idle cputime only when tick is stopped Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 11/14] tick/sched: Consolidate idle time fetching APIs Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 12/14] sched/cputime: Provide get_cpu_[idle|iowait]_time_us() off-case Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 13/14] sched/cputime: Handle idle irqtime gracefully Frederic Weisbecker
2026-03-31 13:16 ` [PATCH 14/14] sched/cputime: Handle dyntick-idle steal time correctly Frederic Weisbecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2dab11d1-18ca-4da4-a33e-3f2c3c4b6320@kernel.org \
--to=chleroy@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=anna-maria@linutronix.de \
--cc=boqun.feng@gmail.com \
--cc=borntraeger@linux.ibm.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=frederic@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=jackzxcui1989@163.com \
--cc=jan.kiszka@siemens.com \
--cc=joelagnelf@nvidia.com \
--cc=juri.lelli@redhat.com \
--cc=kbingham@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=neeraj.upadhyay@kernel.org \
--cc=npiggin@gmail.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=rostedt@goodmis.org \
--cc=sshegde@linux.ibm.com \
--cc=svens@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=urezki@gmail.com \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.org \
--cc=vschneid@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.