From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Shrikanth Hegde <sshegde@linux.ibm.com>,
maddy@linux.ibm.com, linuxppc-dev@lists.ozlabs.org
Cc: frederic@kernel.org
Subject: Re: [PATCH] powerpc/vtime: Initialize starttime at boot for native accounting
Date: Thu, 4 Jun 2026 17:12:15 +0200 [thread overview]
Message-ID: <644eed72-fe6b-4639-88d3-dcbba1f8209b@kernel.org> (raw)
In-Reply-To: <e69ad352-6835-414b-845b-03f45fdd9a45@kernel.org>
Le 04/06/2026 à 16:51, Christophe Leroy (CS GROUP) a écrit :
>
>
> Le 04/06/2026 à 15:24, Shrikanth Hegde a écrit :
>> It was observed that /proc/stat had very large value for one ore more
>> CPUs. It was more visible after recent code simplifications around
>> cpustats.
>>
>> System has 240 CPUs.
>>
>> cat /proc/uptime;
>> 194.18 46500.55
>> cat /proc/stat
>> cpu 5966 39 837032887 4650070 164 185 100 0 0 0
>> cpu0 108 0 837030890 19109 24 4 23 0 0 0
>>
>> Since uptime is 194s, system time of each CPU can't be more than 19400.
>> Sum of system time of all CPUs can't be more than 19400*240 4656000.
>> In fact huge value is close to mftb(). Note mftb doesn't reset on powerVM
>> when the LPAR restart. It only resets when whole system resets. The same
>> issue exists for kexec too.
>>
>> This happens since starttime is not setup at init time. Once it is set
>> then subsequent vtime_delta will return the right delta.
>>
>> Fix it by initializing the starttime during CPU initialization. This
>> fixes the large times seen.
>>
>> cat /proc/uptime; cat /proc/stat
>> 15.78 3694.63
>> cpu 6035 35 1347 369479 23 144 49 0 0 0
>> cpu0 19 0 38 1508 0 1 14 0 0 0
>>
>> Now, system time is reported as expected.
>>
>> Suggested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
>> Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
>
> Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
>
>> ---
>>
>> Christophe, I have taken the patch as is from the discussion we had.
>> Let me know if i should send it with your signed-off-by tag. I have just
>> written the changelog. I sent it like this since tag was not there.
>
> Suggested-by is fine for me.
>
>>
>> discussion thread:
>> https://eur01.safelinks.protection.outlook.com/?
>> url=https%3A%2F%2Flore.kernel.org%2Fall%2Fcd10be19-
>> e0bc-4e0c-8dac-4f1c05d0de8f%40kernel.org%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C1702c7a5ff63417da4ef08dec248be1d%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639161814851391682%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=DjLhS3imHryT613JPVG0mnkWjILSGGrt1tLvmqFHtVM%3D&reserved=0
>>
>> Also, does this warrant Fixes tag? I found these two likely candidates.
>> Likely this issues exists since beginning.
>> c223c90386bc powerpc32: provide VIRT_CPU_ACCOUNTING
>
> You say system has 240 CPU so I suppose this is not ppc32. That commit
> wsa not supposed to change anything for ppc64, did you identify anything
> special in that commit related to ppc64 ?
>
>> b38a181c11d0 powerpc/time: isolate scaled cputime accounting in
>> dedicated functions.
>
> This one is also pure code re-organisation, unless you've been able to
> spot a particular issue ?
Maybe commit cf9efce0ce31 ("powerpc: Account time using timebase rather
than PURR")
It removed snapshot_timebases() and I can't see anything to replace it.
>
>>
>> arch/powerpc/kernel/time.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
>> index 3460d1a5a97c..11145c40183d 100644
>> --- a/arch/powerpc/kernel/time.c
>> +++ b/arch/powerpc/kernel/time.c
>> @@ -377,7 +377,6 @@ void vtime_task_switch(struct task_struct *prev)
>> }
>> }
>> -#ifdef CONFIG_NO_HZ_COMMON
>> /**
>> * vtime_reset - Fast forward vtime entry clocks
>> *
>> @@ -394,6 +393,7 @@ void vtime_reset(void)
>> #endif
>> }
>> +#ifdef CONFIG_NO_HZ_COMMON
>> /**
>> * vtime_dyntick_start - Inform vtime about entry to idle-dynticks
>> *
>> @@ -933,6 +933,7 @@ static void __init set_decrementer_max(void)
>> static void __init init_decrementer_clockevent(void)
>> {
>> register_decrementer_clockevent(smp_processor_id());
>> + vtime_reset();
>> }
>> void secondary_cpu_time_init(void)
>> @@ -948,6 +949,7 @@ void secondary_cpu_time_init(void)
>> /* FIME: Should make unrelated change to move snapshot_timebase
>> * call here ! */
>> register_decrementer_clockevent(smp_processor_id());
>> + vtime_reset();
>> }
>> /*
>
next prev parent reply other threads:[~2026-06-04 15:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-04 13:24 [PATCH] powerpc/vtime: Initialize starttime at boot for native accounting Shrikanth Hegde
2026-06-04 14:51 ` Christophe Leroy (CS GROUP)
2026-06-04 15:12 ` Christophe Leroy (CS GROUP) [this message]
2026-06-05 3:03 ` Shrikanth Hegde
2026-06-05 5:32 ` Christophe Leroy (CS GROUP)
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=644eed72-fe6b-4639-88d3-dcbba1f8209b@kernel.org \
--to=chleroy@kernel.org \
--cc=frederic@kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=sshegde@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox