From: Prarit Bhargava <prarit@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <johnstul@us.ibm.com>,
linux-kernel@vger.kernel.org, Salman Qazi <sqazi@google.com>,
stable@kernel.org
Subject: Re: [PATCH] clocksource, prevent overflow in clocksource_cyc2ns
Date: Sat, 07 Apr 2012 09:47:44 -0400 [thread overview]
Message-ID: <4F804580.9010308@redhat.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1204070107370.2542@ionos>
On 04/06/2012 07:29 PM, Thomas Gleixner wrote:
> On Thu, 5 Apr 2012, Prarit Bhargava wrote:
>
>>>
>>> So what kernel version are you using?
>>
>> I retested using top of the linux.git tree, running
>>
>> echo 1 > /proc/sys/kernel/sysrq
>> for i in `seq 10000`; do sleep 1000 & done
>> echo t > /proc/sysrq-trigger
>>
>> and I no longer see a problem. However, if I increase the number of threads to
>> 1000/cpu I get
>>
>> Clocksource %s unstable (delta = -429565427)
>> Clocksource switching to hpet
>
> You are issuing a command which puts the kernel into a state where is
> dumps data for several seconds with interrupts disabled. And you expect that
> everything can cope with that?
Yes actually. I do expect that everything "copes" with it. I don't find it
unreasonable with system sizes increasing that functionality that has been
around for years works.
However, I also understand that no one expected or saw this problem -- I'm not
blaming anyone or screaming "Hey! This is broken!!!".
>
>> If I hack in (sorry for the cut-and-paste)
>> ....
>> + cs_nsec = mult_frac(((csnow - cs->cs_last), cs->mult,
>> + 1UL << cs->shift);
>>
>> - cs_nsec = clocksource_cyc2ns((csnow - cs->cs_last) &
>> - cs->mask, cs->mult, cs->shift);
>> then I don't see unstable messages.
>
> That does not make your approach more correct. The HPET wraparound
> time is ~3 seconds, so you screwed everything already, when your dump
> lasts longer than that. And there are clocksources which wrap way
> faster.
>
> No, you can't fix that by hacking the timer code. A wraparound CANNOT
> be fixed by hacks.
>
> So instead of fiddling in the victims, please fix the root cause,
> i.e. that stupid sysrq-t code which should not need to have interrupts
> disabled just to dump all that state. If that's not possible, send a
> patch to the sysrq documentation and warn about the consequences.
>
> But stay away from code which is correct already. You CANNOT fix a
> problem which is caused by abnormal system state by hacking the code
> which is exposing the problem.
>
> All you do is making hot pathes more expensive with a very dubious
> value. The time related calls are hotpath functions and optimized.
>
> Aside of that you are breaking all architectures which do not have a
> native 64/32 instruction.
>
> This mult_frac stuff is not going to happen, period.
Okay -- thanks for the info. Much appreciated.
P.
next prev parent reply other threads:[~2012-04-07 13:47 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-04 15:11 [PATCH] clocksource, prevent overflow in clocksource_cyc2ns Prarit Bhargava
2012-04-04 18:00 ` John Stultz
2012-04-04 18:33 ` Prarit Bhargava
2012-04-05 1:08 ` John Stultz
2012-04-05 11:00 ` Prarit Bhargava
2012-04-05 16:23 ` John Stultz
2012-04-05 12:27 ` Prarit Bhargava
2012-04-05 16:45 ` John Stultz
2012-04-06 23:29 ` Thomas Gleixner
2012-04-07 13:47 ` Prarit Bhargava [this message]
2012-04-18 23:20 ` John Stultz
2012-04-18 23:59 ` Prarit Bhargava
2012-04-19 0:18 ` John Stultz
2012-04-19 11:56 ` Prarit Bhargava
2012-04-19 12:50 ` Thomas Gleixner
2012-04-19 12:52 ` Thomas Gleixner
2012-04-19 13:06 ` Prarit Bhargava
2012-04-19 13:18 ` Thomas Gleixner
2012-04-19 18:12 ` John Stultz
2012-04-25 12:29 ` Prarit Bhargava
2012-04-19 12:37 ` Thomas Gleixner
2012-04-19 12:51 ` Thomas Gleixner
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=4F804580.9010308@redhat.com \
--to=prarit@redhat.com \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sqazi@google.com \
--cc=stable@kernel.org \
--cc=tglx@linutronix.de \
/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.