41 lines
1.7 KiB
Diff
41 lines
1.7 KiB
Diff
From 53a2dd7f567cebda868b0765e2659f7930ba958f Mon Sep 17 00:00:00 2001
|
|
From: Catalin Marinas <catalin.marinas@arm.com>
|
|
Date: Wed, 10 Dec 2014 11:02:09 +0000
|
|
Subject: [PATCH] clocksource: arch_timer: Only use the virtual counter
|
|
(CNTVCT) on arm64
|
|
Origin: https://git.kernel.org/linus/d6ad36913083d683aad4e02e53580c995f1a6ede
|
|
|
|
Commit 0b46b8a718c6 (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: Catalin Marinas <catalin.marinas@arm.com>
|
|
Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
|
|
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
|
|
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
|
---
|
|
drivers/clocksource/arm_arch_timer.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
|
|
index 506949d..499cb1d 100644
|
|
--- a/drivers/clocksource/arm_arch_timer.c
|
|
+++ b/drivers/clocksource/arm_arch_timer.c
|
|
@@ -430,7 +430,7 @@ static void __init arch_counter_register(unsigned type)
|
|
|
|
/* Register the CP15 based counter if we have one */
|
|
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;
|
|
else
|
|
arch_timer_read_counter = arch_counter_get_cntpct;
|
|
--
|
|
1.7.10.4
|
|
|