public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
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

  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