Commit 552b7a45 authored by Catalin Marinas's avatar Catalin Marinas Committed by Luis Henriques

clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64

commit d6ad3691 upstream.

Commit 0b46b8a7 (clocksource: arch_timer: Fix code to use physical
timers when requested) introduces the use of physical counters in the
ARM architected timer driver. However, he arm64 kernel uses CNTVCT in
VDSO. When booting in EL2, the kernel switches to the physical timers to
make things easier for KVM but it continues to use the virtual counter
both in user and kernel. While in such scenario CNTVCT == CNTPCT (since
CNTVOFF is initialised by the kernel to 0), we want to spot firmware
bugs corrupting CNTVOFF early (which would affect CNTVCT).
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Tested-by: default avatarYingjoe Chen <yingjoe.chen@mediatek.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 08446eea
...@@ -430,7 +430,7 @@ static void __init arch_counter_register(unsigned type) ...@@ -430,7 +430,7 @@ static void __init arch_counter_register(unsigned type)
/* Register the CP15 based counter if we have one */ /* Register the CP15 based counter if we have one */
if (type & ARCH_CP15_TIMER) { if (type & ARCH_CP15_TIMER) {
if (arch_timer_use_virtual) if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual)
arch_timer_read_counter = arch_counter_get_cntvct; arch_timer_read_counter = arch_counter_get_cntvct;
else else
arch_timer_read_counter = arch_counter_get_cntpct; arch_timer_read_counter = arch_counter_get_cntpct;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment