Enable the correct (hvtimer) IRQ when at EL2. Signed-off-by: Joey Gouly Reviewed-by: Alexandru Elisei --- arm/micro-bench.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arm/micro-bench.c b/arm/micro-bench.c index 22408955..f47c5fc1 100644 --- a/arm/micro-bench.c +++ b/arm/micro-bench.c @@ -42,7 +42,7 @@ static void gic_irq_handler(struct pt_regs *regs) irq_received = true; gic_write_eoir(irqstat); - if (irqstat == TIMER_VTIMER_IRQ) { + if (irqstat == TIMER_VTIMER_IRQ || irqstat == TIMER_HVTIMER_IRQ) { write_sysreg((ARCH_TIMER_CTL_IMASK | ARCH_TIMER_CTL_ENABLE), cntv_ctl_el0); isb(); @@ -215,7 +215,11 @@ static bool timer_prep(void) install_irq_handler(EL1H_IRQ, gic_irq_handler); local_irq_enable(); - gic_enable_irq(TIMER_VTIMER_IRQ); + if (current_level() == CurrentEL_EL1) + gic_enable_irq(TIMER_VTIMER_IRQ); + else + gic_enable_irq(TIMER_HVTIMER_IRQ); + write_sysreg(ARCH_TIMER_CTL_IMASK | ARCH_TIMER_CTL_ENABLE, cntv_ctl_el0); isb(); -- 2.25.1