linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: John Stultz <john.stultz@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Dave Jones <davej@codemonkey.org.uk>,
	Thomas Gleixner <tglx@linutronix.de>,
	Richard Cochran <richardcochran@gmail.com>,
	Prarit Bhargava <prarit@redhat.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 06/10] time: Cap clocksource reads to the clocksource max_cycles value
Date: Wed, 14 Jan 2015 11:51:30 +1300	[thread overview]
Message-ID: <CA+55aFzA3UpROFWVyzADONc0TPY6wmXXF105APvSWm_69vmo5g@mail.gmail.com> (raw)
In-Reply-To: <CALAqxLVFLAjCD2Vw6Zue=+RU2GSspCDTBTeRAv-EQMy3iA6oBw@mail.gmail.com>

On Wed, Jan 14, 2015 at 10:33 AM, John Stultz <john.stultz@linaro.org> wrote:
>
> So since this is a time reading function, this could be called
> anywhere.

Indeed. Could, and is.

>From within the scheduler, with some very core locks held. From within
printk itself (more really core locks held). From the tracer (which in
turn can be from pretty much anything else). From various lockless and
critical places. And from very early in the boot sequence when almost
nothing is set up yet, etc etc.

You can't print from that context, you can't even disable preemption
(because the boot sequence seems to get unhappy when you re-enable
preemption before things are really set up), you can't do much at all.
It's why my hacky patch just read the state and updated an error flag
(and possibly wrote a backtrace), to be printed out later.

I think we could possibly do more if being very careful. But the code
word really is "very careful indeed". It would probably be ok to use a
raw irq-disable spinlock. Maybe the preempt-disable works too if you
end up using some raw version that still works during boot etc etc.

             Linus

  reply	other threads:[~2015-01-13 22:51 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-10  0:34 [PATCH 00/10][RFC] Increased clocksource validation and cleanups John Stultz
2015-01-10  0:34 ` [PATCH 01/10] clocksource: Simplify clocks_calc_max_nsecs logic John Stultz
2015-01-10  0:34 ` [PATCH 02/10] clocksource: Simplify logic around clocksource wrapping saftey margins John Stultz
2015-01-10  2:03   ` Stephen Boyd
2015-01-10  0:34 ` [PATCH 03/10] clocksource: Remove clocksource_max_deferment() John Stultz
2015-01-11 11:47   ` Richard Cochran
2015-01-12 18:36     ` John Stultz
2015-01-12 20:16       ` Richard Cochran
2015-01-10  0:34 ` [PATCH 04/10] clocksource: Add max_cycles to clocksource structure John Stultz
2015-01-10  2:06   ` Stephen Boyd
2015-01-10  0:34 ` [PATCH 05/10] time: Add debugging checks to warn if we see delays John Stultz
2015-01-10  0:34 ` [PATCH 06/10] time: Cap clocksource reads to the clocksource max_cycles value John Stultz
2015-01-11 12:41   ` Richard Cochran
2015-01-12 18:54     ` John Stultz
2015-01-12 19:02       ` Linus Torvalds
2015-01-12 20:37         ` Richard Cochran
2015-01-12 20:30       ` Richard Cochran
2015-01-12 20:49         ` Richard Cochran
2015-01-13 11:11   ` Peter Zijlstra
2015-01-13 21:33     ` John Stultz
2015-01-13 22:51       ` Linus Torvalds [this message]
2015-01-14  9:35       ` Peter Zijlstra
2015-01-22 20:55         ` John Stultz
2015-01-10  0:34 ` [PATCH 07/10] time: Try to catch clocksource delta underflows John Stultz
2015-01-10  0:34 ` [PATCH 08/10] clocksource: Mostly kill clocksource_register() John Stultz
2015-01-10  0:34 ` [PATCH 09/10] sparc: Convert to using clocksource_register_hz() John Stultz
2015-01-10  0:34 ` [PATCH 10/10] clocksource: Add some debug info about clocksources being registered John Stultz
2015-01-10  2:02   ` Stephen Boyd
2015-01-22  0:51     ` John Stultz
2015-01-22 12:27       ` Prarit Bhargava
2015-01-11 11:41 ` [PATCH 00/10][RFC] Increased clocksource validation and cleanups Richard Cochran
2015-01-12 18:22   ` John Stultz
2015-01-12 20:45     ` Richard Cochran

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=CA+55aFzA3UpROFWVyzADONc0TPY6wmXXF105APvSWm_69vmo5g@mail.gmail.com \
    --to=torvalds@linux-foundation.org \
    --cc=davej@codemonkey.org.uk \
    --cc=john.stultz@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=prarit@redhat.com \
    --cc=richardcochran@gmail.com \
    --cc=sboyd@codeaurora.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 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).