[linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup
Hans de Goede
hdegoede at redhat.com
Fri Jun 28 04:17:57 EDT 2013
Hi,
On 06/27/2013 10:26 PM, Siarhei Siamashka wrote:
> On Thu, 27 Jun 2013 18:54:36 +0200
> Maxime Ripard <maxime.ripard at free-electrons.com> 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
More information about the linux-arm-kernel
mailing list