LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Michael Schmitz <schmitzmic@gmail.com>
Cc: Finn Thain <fthain@telegraphics.com.au>,
	Christoph Hellwig <hch@infradead.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Stephen N Chivers <schivers@csc.com.au>,
	Thomas Gleixner <tglx@linutronix.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	John Stultz <john.stultz@linaro.org>,
	linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 01/13] arm: Fix mutual exclusion in arch_gettimeoffset
Date: Wed, 14 Nov 2018 07:58:17 +0000
Message-ID: <20181114075817.GQ30658@n2100.armlinux.org.uk> (raw)
In-Reply-To: <d9be7418-cc4a-f92f-1aa8-d92a58cd68a4@gmail.com>

On Wed, Nov 14, 2018 at 02:35:29PM +1300, Michael Schmitz wrote:
> So we'd still have to use jiffies + interpolation from the current timer
> rundown counter as clocksource (since that will be monotonous and won't
> wrap)?
> 
> The way Finn did the clocksource for m68k, the clocksource counter does
> behave as it should (monotonous, doesn't wrap) at least so far as I've
> tested. Using the same timer for clocksource and clock events will degrade
> timekeeping based on timer events to jiffies resolution, as you point out.
> That would already have been the case before, so no gain in resolution.

... and that is where you are wrong.

RPC, for example, has gettimeofday() resolution of 500ns.  Removing
gettimeoffset() will result in a resolution of 1/HZ since there is
no longer any interpolation between interrupts.

> Other timekeeping would have worked at higher resolution before
> (interpolating through arch_gettimeoffset) just the same as now
> (interpolating through clocksource reads). Finn's clocksource read code
> essentially is arch_gettimeoffset under a new name.

Where is this code - all I've seen is code adding IRQ exclusion in
the gettimeoffset method.  If some other solution is being proposed,
then it's no good beating about the bush - show the damn code, and
then that can be considered.

However, what has been said in this thread is basically "remove the
gettimeoffset method", which is _not_ acceptable, it will cause
gettimeofday() on these platforms to lose resolution, which is a
user visible REGRESSION, plain and simple.

If what is actually meant is "we have a replacement for gettimeoffset"
then, and I'm sure we all know this, there needs to be a patch
proposed showing what is being proposed, rather than waffling around
the issue.

> Are you saying that's not possible on arm, because the current timer rundown
> counter can't be read while the timer is running?
> 
> If I were to run a second timer at higher rate for clocksource, but keeping
> the 10 ms timer as clock event (could easily do that by using timer D on
> Atari Falcon) - how would that improve my timekeeping? Clock events still
> only happen 10 ms apart ...

Ah, I think you're talking about something else.

You seem to be talking about what happens when time keeping interrupts
happen.

I'm talking about the resolution of gettimeofday() and the other
interfaces that are used (eg) for packet capture timestamping and
the like - the _user_ visible effects of the timekeeping system.

With the existing implementation, all these have better-than-jiffy
resolution - in the case of RPC, that's 500ns, rather than 10ms
which would be the case without gettimeoffset().  Removing
gettimeoffset() as Finn has proposed without preserving that
resolution is simply completely unacceptable.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up

  reply index

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-12  4:12 [RFC PATCH 00/13] m68k: Drop arch_gettimeoffset and adopt clocksource API Finn Thain
2018-11-12  4:12 ` [RFC PATCH 08/13] m68k: atari: Convert to " Finn Thain
2018-11-12  4:12 ` [RFC PATCH 04/13] m68k: mac: Clean up unused timer definitions Finn Thain
2018-11-12  4:12 ` [RFC PATCH 10/13] m68k: hp300: Convert to clocksource API Finn Thain
2018-11-12  4:12 ` [RFC PATCH 11/13] m68k: mac: " Finn Thain
2018-11-12  4:12 ` [RFC PATCH 01/13] arm: Fix mutual exclusion in arch_gettimeoffset Finn Thain
2018-11-12  8:34   ` Christoph Hellwig
2018-11-13  3:39     ` Finn Thain
2018-11-13  9:20       ` Russell King - ARM Linux
2018-11-13 21:55         ` Finn Thain
2018-11-13 23:43           ` Russell King - ARM Linux
2018-11-14  1:35             ` Michael Schmitz
2018-11-14  7:58               ` Russell King - ARM Linux [this message]
2018-11-15  1:34                 ` Michael Schmitz
2018-11-14  3:17             ` Finn Thain
2018-11-14 14:16               ` Russell King - ARM Linux
2018-11-14 14:58                 ` Geert Uytterhoeven
2018-11-14 18:11                   ` Russell King - ARM Linux
2018-11-15  4:12                 ` Finn Thain
2018-11-16 17:47                   ` Russell King - ARM Linux
2018-11-16 22:49                     ` Finn Thain
2018-11-17  3:00                       ` Michael Schmitz
2018-11-14 12:05   ` Russell King - ARM Linux
2018-11-12  4:12 ` [RFC PATCH 02/13] m68k: " Finn Thain
2018-11-12  4:12 ` [RFC PATCH 07/13] m68k: amiga: Convert to clocksource API Finn Thain
2018-11-12  9:02   ` Geert Uytterhoeven
2018-11-12  9:21     ` Finn Thain
2018-11-12  4:12 ` [RFC PATCH 09/13] m68k: bvme6000: " Finn Thain
2018-11-12  4:12 ` [RFC PATCH 06/13] m68k: Drop ARCH_USES_GETTIMEOFFSET Finn Thain
2018-11-12  9:00   ` Geert Uytterhoeven
2018-11-12  9:06     ` Finn Thain
2018-11-13  2:29       ` Michael Schmitz
2018-11-13  3:14         ` Finn Thain
2018-11-13  4:50           ` Michael Schmitz
2018-11-13  6:15             ` Finn Thain
2018-11-13  8:24               ` Michael Schmitz
2018-11-13 22:11                 ` Finn Thain
2018-11-14  1:08                   ` Michael Schmitz
2018-11-14  2:58                     ` Michael Schmitz
2018-11-14 23:54                       ` Michael Schmitz
2018-11-15  4:37                         ` Finn Thain
2018-11-15  6:35                         ` Michael Schmitz
2018-11-16  0:04                           ` Finn Thain
2018-11-12  4:12 ` [RFC PATCH 13/13] m68k: mvme16x: Convert to clocksource API Finn Thain
2018-11-12 18:37   ` Thomas Gleixner
2018-11-13  0:11     ` Finn Thain
2018-11-13 22:04       ` Finn Thain
2018-11-13 22:10         ` [RFC PATCH 13/13] m68k: mvme16x: Convert to clocksource APIy Thomas Gleixner
2018-11-13 22:33           ` Finn Thain
2018-11-18 17:12             ` Thomas Gleixner
2018-11-12  4:12 ` [RFC PATCH 03/13] m68k: mac: Fix VIA timer counter accesses Finn Thain
2018-11-12  4:12 ` [RFC PATCH 12/13] m68k: mvme147: Convert to clocksource API Finn Thain
2018-11-12  4:12 ` [RFC PATCH 05/13] m68k: apollo, q40, sun3, sun3x: Remove arch_gettimeoffset implementations Finn Thain

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=20181114075817.GQ30658@n2100.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=arnd@arndb.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=fthain@telegraphics.com.au \
    --cc=geert@linux-m68k.org \
    --cc=hch@infradead.org \
    --cc=john.stultz@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=schivers@csc.com.au \
    --cc=schmitzmic@gmail.com \
    --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

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git
	git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git
	git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git
	git clone --mirror https://lore.kernel.org/lkml/10 lkml/git/10.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git