]> git.baikalelectronics.ru Git - kernel.git/commit
clocksource/drivers/arm_arch_timer: Work around Hisilicon erratum 161010101
authorDing Tianhong <dingtianhong@huawei.com>
Mon, 6 Feb 2017 16:47:42 +0000 (16:47 +0000)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Tue, 7 Feb 2017 23:14:04 +0000 (00:14 +0100)
commit2939a9190490fc5b5bb91d927478cff8a73e2f0f
treeb93be8bb1c508f6e5777698b0f46f327d6581fe3
parent22831367afd2b9c6ee3d85382dc59226db8f8ef8
clocksource/drivers/arm_arch_timer: Work around Hisilicon erratum 161010101

Erratum Hisilicon-161010101 says that the ARM generic timer counter "has
the potential to contain an erroneous value when the timer value
changes". Accesses to TVAL (both read and write) are also affected due
to the implicit counter read. Accesses to CVAL are not affected.

The workaround is to reread the system count registers until the value
of the second read is larger than the first one by less than 32, the
system counter can be guaranteed not to return wrong value twice by
back-to-back read and the error value is always larger than the correct
one by 32. Writes to TVAL are replaced with an equivalent write to CVAL.

Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
[Mark: split patch, fix Kconfig, reword commit message]
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
drivers/clocksource/Kconfig
drivers/clocksource/arm_arch_timer.c