From: v1ron@mail.ru (Roman Volkov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/3] clocksource/vt8500: Increase the minimum delta
Date: Tue, 5 Jan 2016 14:08:23 +0300 [thread overview]
Message-ID: <20160105140823.4b3e1fee@v1ron-s7> (raw)
In-Reply-To: <568B9B89.5040001@linaro.org>
? Tue, 5 Jan 2016 11:31:37 +0100
Daniel Lezcano <daniel.lezcano@linaro.org> ?????:
> On 01/05/2016 11:00 AM, Russell King - ARM Linux wrote:
> > On Tue, Jan 05, 2016 at 12:42:42PM +0300, Roman Volkov wrote:
> >> Why multiply by two? Good question. Maybe there is a reserve for
> >> stability. The value passed by the system to the set_next_event()
> >> should be not lesser than this value, and theoretically, we should
> >> not multiply MIN_OSCR_DELTA by two. As I can see, in many drivers
> >> there is no such minimal values at all.
> >
> > It's a speciality of the StrongARM/PXA hardware. It takes a certain
> > number of OSCR cycles for the value written to hit the compare
> > registers. So, if a very small delta is written (eg, the compare
> > register is written with a value of OSCR + 1), the OSCR will have
> > incremented past this value before it hits the underlying
> > hardware. The result is, that you end up waiting a very long time
> > for the OSCR to wrap before the event fires.
> >
> > So, we introduce a check in set_next_event() to detect this and
> > return -ETIME if the calculated delta is too small, which causes
> > the generic clockevents code to retry after adding the min_delta
> > specified in clockevents_config_and_register() to the current time
> > value.
> >
> > min_delta must be sufficient that we don't re-trip the -ETIME check
> > - if we do, we will return -ETIME, forward the next event time, try
> > to set it, return -ETIME again, and basically lock the system up.
> > So, min_delta must be larger than the check inside
> > set_next_event(). A factor of two was chosen to ensure that this
> > situation would never occur.
>
> Russell,
>
> thank you for taking the time to write this detailed explanation. I
> believe that clarifies everything (the issue with the lockup and the
> value of the min delta).
Yes, thanks for the explanation how this exactly works! Some points
were not obvious.
> Roman,
>
> If we are in the situation Russell is describing above, failing
> gracefully as mentioned before does not make sense.
>
> Do you have a idea why this is happening with 4.2 and not before ?
No, which change from c6eb3f70 caused this problem is unclear for me.
Maybe the new IRQ handling revealed this defect. What is obvious now,
the value passed to clockevents_config_and_register() was incorrect.
Regards,
Roman
next prev parent reply other threads:[~2016-01-05 11:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-01 13:24 [PATCH v3 0/3] clocksource/vt8500: Fix hangs in small delays Roman Volkov
2016-01-01 13:24 ` [PATCH v3 1/3] clocksource/vt8500: Increase the minimum delta Roman Volkov
2016-01-05 9:01 ` Daniel Lezcano
2016-01-05 9:42 ` Roman Volkov
2016-01-05 10:00 ` Russell King - ARM Linux
2016-01-05 10:31 ` Daniel Lezcano
2016-01-05 11:08 ` Roman Volkov [this message]
2016-01-05 10:09 ` Daniel Lezcano
2016-01-01 13:24 ` [PATCH v3 2/3] clocksource/vt8500: Remove the 'loops' variable Roman Volkov
2016-01-01 13:24 ` [PATCH v3 3/3] clocksource/vt8500: Add register R/W functions Roman Volkov
2016-01-06 14:24 ` [PATCH v3 0/3] clocksource/vt8500: Fix hangs in small delays Daniel Lezcano
2016-01-06 15:30 ` Roman Volkov
2016-01-07 10:49 ` Daniel Lezcano
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=20160105140823.4b3e1fee@v1ron-s7 \
--to=v1ron@mail.ru \
--cc=linux-arm-kernel@lists.infradead.org \
/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