Re: [linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes andcleanup

From: Hans de Goede
Date: Fri Jun 28 2013 - 04:13:24 EST


Hi,

On 06/27/2013 10:26 PM, Siarhei Siamashka wrote:
On Thu, 27 Jun 2013 18:54:36 +0200
Maxime Ripard <maxime.ripard@xxxxxxxxxxxxxxxxxx> wrote:

On Thu, Jun 27, 2013 at 11:54:11AM +0200, Hans de Goede wrote:
I notice that unlike the sunxi-3.4 code you don't do any locking,
so how do you stop 2 clocksource calls from racing (and thus
getting a possible wrong value because of things not
being properly latched) ?

Hmm, right. I'll add a spinlock.

I think the best would be to ask the Allwinner people (it's good to
have them in CC, right?) whether anything wrong can happen because of
"things not being properly latched".

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?

No, because if ie CNT64_LO_REG old is 0xffffffff and CNT64_LO_REG new is
say 0x00000001, and we do get the new CNT64_HI_REG things will break.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/