[PATCHv5 14/16] ARM: arch_timers: switch to physical timers if HYP mode is available
Mark Rutland
mark.rutland at arm.com
Thu Jan 31 07:15:37 EST 2013
From: Marc Zyngier <Marc.Zyngier at arm.com>
If we're booted in HYP mode, it is possible that we'll run some
kind of virtualized environment. In this case, it is a better to
switch to the physical timers, and leave the virtual timers to
guests.
Signed-off-by: Marc Zyngier <marc.zyngier at arm.com>
Signed-off-by: Mark Rutland <mark.rutland at arm.com>
---
drivers/clocksource/arm_arch_timer.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index ec30a73..d7ad425 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -19,6 +19,7 @@
#include <linux/io.h>
#include <asm/arch_timer.h>
+#include <asm/virt.h>
#include <clocksource/arm_arch_timer.h>
@@ -364,10 +365,14 @@ int __init arch_timer_init(void)
of_node_put(np);
/*
+ * If HYP mode is available, we know that the physical timer
+ * has been configured to be accessible from PL1. Use it, so
+ * that a guest can use the virtual timer instead.
+ *
* If no interrupt provided for virtual timer, we'll have to
* stick to the physical timer. It'd better be accessible...
*/
- if (!arch_timer_ppi[VIRT_PPI]) {
+ if (is_hyp_mode_available() || !arch_timer_ppi[VIRT_PPI]) {
arch_timer_use_virtual = false;
if (!arch_timer_ppi[PHYS_SECURE_PPI] ||
--
1.8.1.1
More information about the linux-arm-kernel
mailing list