All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Baolin Wang <baolin.wang@linaro.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>,
	Jason Wessel <jason.wessel@windriver.com>,
	Ingo Molnar <mingo@kernel.org>, Mark Brown <broonie@kernel.org>,
	kgdb-bugreport@lists.sourceforge.net,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] kdb: use ktime_get_seconds() instead of ktime_get_ts()
Date: Fri, 26 Jan 2018 17:01:32 +0100	[thread overview]
Message-ID: <CAK8P3a3p69ErytBBYUv=Xo=ak5oDUxZi4Nukb6KpP8iUNfBJkA@mail.gmail.com> (raw)
In-Reply-To: <CAMz4kuK_mQViv4XuuLmyuDjKMaVmO_1Sx4o9NTYHhrGBB3B3SQ@mail.gmail.com>

On Fri, Jan 26, 2018 at 3:20 PM, Baolin Wang <baolin.wang@linaro.org> wrote:
> On 26 January 2018 at 22:00, Daniel Thompson <daniel.thompson@linaro.org> wrote:
>> On Fri, Jan 26, 2018 at 10:21:58AM +0100, Arnd Bergmann wrote:
>>> On Fri, Jan 26, 2018 at 4:03 AM, Baolin Wang <baolin.wang@linaro.org> wrote:
>>>
>>> Using ktime_get_seconds() avoids locking problems, but I wonder what
>>> would happen if we trigger the 'WARN_ON(timekeeping_suspended)'
>>> from kdb. Is that a problem? If it is, we have to use ktime_get_mono_fast_ns()
>>> and div_u64() instead.
>>
>> Normally a WARN_ON() doesn't triggered a kgdb_breakpoint() so (apart
>> from bugs) we can start executing the warning. Unfortunately
>> kdb_trap_printk isn't set when we call ktime_get_seconds() so printing
>> the warning isn't safe.
>>
>> If we had no choice of time function we could work around by
>> enabling printk() trapping for the call but since ktime_get_mono_fast_ns()
>> already exists its probably best just to use that.
>>
>
> If timekeeping_suspended is set, which means the system had been in
> suspend state. So now we still need debugger the system? But cores
> were already powered down.

I'm not using kdb myself, but I would assume that trapping into the debugger
during a suspend/resume bug is a very important scenario.

> The ktime_get_mono_fast_ns() will access the the clocksource driver,
> if the timekeeping is suspended following system suspend and the
> clocksource is not SUSPEND_NONSTOP, we may meet some unexpected issue
> to access the timer's register without clock. So I am not sure if
> ktime_get_mono_fast_ns() can work well for this case.

I misread the code the same way before, but as Thomas Gleixner
pointed out, ktime_get_mono_fast_ns() will not call the clocksource
driver when timekeeping is suspended. See halt_fast_timekeeper().
        Arnd

  reply	other threads:[~2018-01-26 16:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-26  3:03 [PATCH] kdb: use ktime_get_seconds() instead of ktime_get_ts() Baolin Wang
2018-01-26  3:31 ` Jason Wessel
2018-01-26  9:21 ` Arnd Bergmann
2018-01-26 14:00   ` Daniel Thompson
2018-01-26 14:20     ` Baolin Wang
2018-01-26 16:01       ` Arnd Bergmann [this message]
2018-01-29  1:49         ` Baolin Wang

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='CAK8P3a3p69ErytBBYUv=Xo=ak5oDUxZi4Nukb6KpP8iUNfBJkA@mail.gmail.com' \
    --to=arnd@arndb.de \
    --cc=baolin.wang@linaro.org \
    --cc=broonie@kernel.org \
    --cc=daniel.thompson@linaro.org \
    --cc=jason.wessel@windriver.com \
    --cc=kgdb-bugreport@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.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 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.