All of lore.kernel.org
 help / color / mirror / Atom feed
From: maxime.ripard@free-electrons.com (maxime.ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup
Date: Fri, 28 Jun 2013 19:03:01 +0200	[thread overview]
Message-ID: <20130628170301.GN4319@lukather> (raw)
In-Reply-To: <alpine.DEB.2.02.1306281559490.4013@ionos.tec.linutronix.de>

Hi Thomas,

On Fri, Jun 28, 2013 at 04:02:23PM +0200, Thomas Gleixner wrote:
> On Fri, 28 Jun 2013, ?? wrote:
> > > The A10 manual from http://free-electrons.com/~maxime/pub/datasheet/
> > > does not seem to contain any details about what bad things may happen
> > > if we try to read CNT64_LO_REG while latching is still in progress and
> > > CNT64_RL_EN bit in CNT64_CTRL_REG has not changed to zero yet.
> > > I can imagine the following possible scenarios:
> > >  1. We read either the old stale CNT64_LO_REG value or the new
> > >     correct value.
> > >  2. We read either the old stale CNT64_LO_REG value or the new
> > >     correct value, or some random garbage.
> > >  3. The processor may deadlock, eat your dog, or do some other
> > >     nasty thing.
> > >
> > > In the case of 1, we probably can get away without using any spinlocks?
> > 
> > About the 64bits counter, the latch bit is needed because of the asynchronous circuit.
> > The internal circuit of 64bits counter is working under 24Mhz clock, and CNT_LO/HI
> > is read with APB clock. So the clock synchronize is needed. The function of the latch
> > is synchronous the 64bits counter from 24Mhz clock domain to APB clock domain.
> > So, if the latch is not completely, value of the CNT_LO/HI maybe a random value, because
> > some bits are latched, but others are not. So, the CNT_LO/HI should be read after
> > latch is completely.
> > The latch just takes 3 cycles of 24Mhz clock, the time is nearly 0.125 micro-second.
> > 
> 
> I really wonder why we're trying to use that timer. AFAICT the A10 has
> another six 32bit timers which do not have this restriction and the
> clocksoure/sched_clock implementation works nicely with 32 bits. So
> what's the point of using that 64 bit counter if it's horrible to
> access?

Yes, you're right. I actually wanted at first not to use a timer for
this since we had a counter to do just that.

But that's true that actually using a timer would make the code simpler
and presumably faster as well.

I'll change this in the v2.

Thanks,
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130628/3705a440/attachment.sig>

WARNING: multiple messages have this Message-ID (diff)
From: "maxime.ripard" <maxime.ripard@free-electrons.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: 张猛 <kevin@allwinnertech.com>,
	"Siarhei Siamashka" <siarhei.siamashka@gmail.com>,
	"linux-sunxi@googlegroups.com" <linux-sunxi@googlegroups.com>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Emilio Lopez" <emilio@elopez.com.ar>,
	孙彦邦 <sunny@allwinnertech.com>, 吴书耕 <shuge@allwinnertech.com>
Subject: Re: Re: [linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup
Date: Fri, 28 Jun 2013 19:03:01 +0200	[thread overview]
Message-ID: <20130628170301.GN4319@lukather> (raw)
In-Reply-To: <alpine.DEB.2.02.1306281559490.4013@ionos.tec.linutronix.de>

[-- Attachment #1: Type: text/plain, Size: 2222 bytes --]

Hi Thomas,

On Fri, Jun 28, 2013 at 04:02:23PM +0200, Thomas Gleixner wrote:
> On Fri, 28 Jun 2013, 张猛 wrote:
> > > The A10 manual from http://free-electrons.com/~maxime/pub/datasheet/
> > > does not seem to contain any details about what bad things may happen
> > > if we try to read CNT64_LO_REG while latching is still in progress and
> > > CNT64_RL_EN bit in CNT64_CTRL_REG has not changed to zero yet.
> > > I can imagine the following possible scenarios:
> > >  1. We read either the old stale CNT64_LO_REG value or the new
> > >     correct value.
> > >  2. We read either the old stale CNT64_LO_REG value or the new
> > >     correct value, or some random garbage.
> > >  3. The processor may deadlock, eat your dog, or do some other
> > >     nasty thing.
> > >
> > > In the case of 1, we probably can get away without using any spinlocks?
> > 
> > About the 64bits counter, the latch bit is needed because of the asynchronous circuit.
> > The internal circuit of 64bits counter is working under 24Mhz clock, and CNT_LO/HI
> > is read with APB clock. So the clock synchronize is needed. The function of the latch
> > is synchronous the 64bits counter from 24Mhz clock domain to APB clock domain.
> > So, if the latch is not completely, value of the CNT_LO/HI maybe a random value, because
> > some bits are latched, but others are not. So, the CNT_LO/HI should be read after
> > latch is completely.
> > The latch just takes 3 cycles of 24Mhz clock, the time is nearly 0.125 micro-second.
> > 
> 
> I really wonder why we're trying to use that timer. AFAICT the A10 has
> another six 32bit timers which do not have this restriction and the
> clocksoure/sched_clock implementation works nicely with 32 bits. So
> what's the point of using that 64 bit counter if it's horrible to
> access?

Yes, you're right. I actually wanted at first not to use a timer for
this since we had a counter to do just that.

But that's true that actually using a timer would make the code simpler
and presumably faster as well.

I'll change this in the v2.

Thanks,
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2013-06-28 17:03 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-26 21:16 [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 1/8] clocksource: sun4i: Use the BIT macros where possible Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 2/8] clocksource: sun4i: Add clocksource and sched clock drivers Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:27   ` Daniel Lezcano
2013-06-26 21:27     ` Daniel Lezcano
2013-06-27  9:31     ` Maxime Ripard
2013-06-27  9:31       ` Maxime Ripard
2013-06-27  6:02   ` Baruch Siach
2013-06-27  6:02     ` Baruch Siach
2013-06-27  9:35     ` Maxime Ripard
2013-06-27  9:35       ` Maxime Ripard
2013-06-27  9:46       ` Baruch Siach
2013-06-27  9:46         ` Baruch Siach
2013-06-27 17:21         ` Maxime Ripard
2013-06-27 17:21           ` Maxime Ripard
2013-06-27 17:36           ` Baruch Siach
2013-06-27 17:36             ` Baruch Siach
2013-06-27 19:16             ` Maxime Ripard
2013-06-27 19:16               ` Maxime Ripard
2013-06-27 10:17   ` [linux-sunxi] " Siarhei Siamashka
2013-06-27 10:17     ` Siarhei Siamashka
2013-06-27 17:02     ` Maxime Ripard
2013-06-27 17:02       ` Maxime Ripard
2013-06-27 19:51       ` Siarhei Siamashka
2013-06-27 19:51         ` Siarhei Siamashka
2013-06-28 10:19         ` Maxime Ripard
2013-06-28 10:19           ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 3/8] clocksource: sun4i: Don't forget to enable the clock we use Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 4/8] clocksource: sun4i: Fix the next event code Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 5/8] clocksource: sun4i: Factor out some timer code Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 6/8] clocksource: sun4i: Remove TIMER_SCAL variable Maxime Ripard
2013-06-26 21:16   ` Maxime Ripard
2013-06-26 21:17 ` [PATCH 7/8] clocksource: sun4i: Cleanup parent clock setup Maxime Ripard
2013-06-26 21:17   ` Maxime Ripard
2013-06-26 21:17 ` [PATCH 8/8] clocksource: sun4i: Fix bug when switching from periodic to oneshot modes Maxime Ripard
2013-06-26 21:17   ` Maxime Ripard
2013-06-27  9:27 ` [linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup Hans de Goede
2013-06-27  9:27   ` Hans de Goede
2013-06-27  9:43   ` Maxime Ripard
2013-06-27  9:43     ` Maxime Ripard
2013-06-27  9:54     ` Hans de Goede
2013-06-27  9:54       ` Hans de Goede
2013-06-27 16:54       ` Maxime Ripard
2013-06-27 16:54         ` Maxime Ripard
2013-06-27 18:13         ` Hans de Goede
2013-06-27 18:13           ` Hans de Goede
2013-06-28 10:41           ` Maxime Ripard
2013-06-28 10:41             ` Maxime Ripard
2013-06-27 20:26         ` Siarhei Siamashka
2013-06-27 20:26           ` Siarhei Siamashka
2013-06-28  8:17           ` Hans de Goede
2013-06-28  8:17             ` Hans de Goede
     [not found]           ` <2013062809433715678058@allwinnertech.com>
2013-06-28  9:48             ` Siarhei Siamashka
2013-06-28 10:26               ` Thomas Gleixner
2013-06-28 10:26                 ` Thomas Gleixner
2013-06-28 11:14                 ` Siarhei Siamashka
2013-06-28 11:14                   ` Siarhei Siamashka
2013-06-28 10:29             ` Siarhei Siamashka
2013-06-28 14:16               ` maxime.ripard
2013-06-28 14:16                 ` maxime.ripard
2013-06-28 14:02             ` Thomas Gleixner
2013-06-28 14:02               ` Thomas Gleixner
2013-06-28 17:03               ` maxime.ripard [this message]
2013-06-28 17:03                 ` maxime.ripard

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=20130628170301.GN4319@lukather \
    --to=maxime.ripard@free-electrons.com \
    --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 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.