linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/3] clocksource/vt8500: Increase the minimum delta
Date: Tue, 5 Jan 2016 11:09:29 +0100	[thread overview]
Message-ID: <568B9659.6080809@linaro.org> (raw)
In-Reply-To: <20160105124242.17bbe09d@v1ron-s7>

On 01/05/2016 10:42 AM, Roman Volkov wrote:
> ? Tue, 5 Jan 2016 10:01:07 +0100
> Daniel Lezcano <daniel.lezcano@linaro.org> ?????:
>
>> On 01/01/2016 02:24 PM, Roman Volkov wrote:
>>> From: Roman Volkov <rvolkov@v1ros.org>
>>>
>>> The vt8500 clocksource driver declares itself as capable to handle
>>> the minimum delay of 4 cycles by passing the value into
>>> clockevents_config_and_register(). The vt8500_timer_set_next_event()
>>> requires the passed cycles value to be at least 16. The impact is
>>> that userspace hangs in nanosleep() calls with small delay
>>> intervals.
>>>
>>> This problem is reproducible in Linux 4.2 starting from:
>>> c6eb3f70d448 ('hrtimer: Get rid of hrtimer softirq')
>>>
>>> Signed-off-by: Roman Volkov <rvolkov@v1ros.org>
>>> Acked-by: Alexey Charkov <alchark@gmail.com>
>>
>> Hi Roman,
>>
>> I looked at the email thread, and IIUC if set_next_event fails, the
>> system freeze. Your patch fixes the issue for your driver but not the
>> real issue because if set_next_event fails, at least a warning should
>> appear in the log or better nanosleep should fail gracefully.
>
> Hi Daniel,
>
> I agree, but if nanosleep will return immediately, this can lead to
> undefined behavior in the software.

The nanosleep syscall is supposed to return an error code. If the 
software does not pay attention to the syscall's return code, then the 
bug is in the software, it is not up to the kernel to work around it.

> Maybe the system can go busyloop
> to somehow recover from this state and print a message to the log? At
> the driver level it seems to be enough to fail the function without
> printing logs.
>
>> BTW why min delta is MIN_OSCR_DELTA * 2 in
>> clockevents_config_and_register ?
>
> All this just to be consistent with PXA. Maybe PXA works with lesser
> values, e.g., 8. For vt8500, accessing the registers is more complex,
> and this should consume more time. IIUC, if the driver does not support
> too small delays, the system will handle it with busyloop?

[ Added John Stultz and Thomas Gleixner ] to answer those questions above.

> 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.
>
> Added Robert
>
> Regards,
> Roman
>


-- 
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  parent reply	other threads:[~2016-01-05 10:09 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
2016-01-05 10:09       ` Daniel Lezcano [this message]
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=568B9659.6080809@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --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;
as well as URLs for NNTP newsgroup(s).