]> git.baikalelectronics.ru Git - kernel.git/commit
clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI
authorKeqian Zhu <zhukeqian1@huawei.com>
Fri, 4 Dec 2020 07:31:26 +0000 (15:31 +0800)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Sat, 5 Dec 2020 18:34:04 +0000 (19:34 +0100)
commit8b7770b877d187bfdae1eaf587bd2b792479a31c
treea808e5a960bc8b639ef745858406f332067e321b
parentd8cc3905b8073c7cfbff94af889fa8dc71f21dd5
clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI

ARM virtual counter supports event stream, it can only trigger an event
when the trigger bit (the value of CNTKCTL_EL1.EVNTI) of CNTVCT_EL0 changes,
so the actual period of event stream is 2^(cntkctl_evnti + 1). For example,
when the trigger bit is 0, then virtual counter trigger an event for every
two cycles.

While we're at it, rework the way we compute the trigger bit position
by making it more obvious that when bits [n:n-1] are both set (with n
being the most significant bit), we pick bit (n + 1).

Fixes: 037f637767a8 ("drivers: clocksource: add support for ARM architected timer event stream")
Suggested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Keqian Zhu <zhukeqian1@huawei.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20201204073126.6920-3-zhukeqian1@huawei.com
drivers/clocksource/arm_arch_timer.c