Lines Matching refs:timer

42 static bool timer_is_armed(struct arch_timer_cpu *timer)  in timer_is_armed()  argument
44 return timer->armed; in timer_is_armed()
48 static void timer_arm(struct arch_timer_cpu *timer, u64 ns) in timer_arm() argument
50 timer->armed = true; in timer_arm()
51 hrtimer_start(&timer->timer, ktime_add_ns(ktime_get(), ns), in timer_arm()
55 static void timer_disarm(struct arch_timer_cpu *timer) in timer_disarm() argument
57 if (timer_is_armed(timer)) { in timer_disarm()
58 hrtimer_cancel(&timer->timer); in timer_disarm()
59 cancel_work_sync(&timer->expired); in timer_disarm()
60 timer->armed = false; in timer_disarm()
103 now = kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_timer_compute_delta()
120 struct arch_timer_cpu *timer; in kvm_timer_expire() local
124 timer = container_of(hrt, struct arch_timer_cpu, timer); in kvm_timer_expire()
125 vcpu = container_of(timer, struct kvm_vcpu, arch.timer_cpu); in kvm_timer_expire()
138 queue_work(wqueue, &timer->expired); in kvm_timer_expire()
144 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_irq_can_fire() local
146 return !(timer->cntv_ctl & ARCH_TIMER_CTRL_IT_MASK) && in kvm_timer_irq_can_fire()
147 (timer->cntv_ctl & ARCH_TIMER_CTRL_ENABLE); in kvm_timer_irq_can_fire()
152 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_should_fire() local
158 cval = timer->cntv_cval; in kvm_timer_should_fire()
159 now = kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_timer_should_fire()
167 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_update_irq() local
171 timer->irq.level = new_level; in kvm_timer_update_irq()
172 trace_kvm_timer_update_irq(vcpu->vcpu_id, timer->map->virt_irq, in kvm_timer_update_irq()
173 timer->irq.level); in kvm_timer_update_irq()
175 timer->map, in kvm_timer_update_irq()
176 timer->irq.level); in kvm_timer_update_irq()
186 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_update_state() local
197 if (kvm_timer_should_fire(vcpu) != timer->irq.level) in kvm_timer_update_state()
198 kvm_timer_update_irq(vcpu, !timer->irq.level); in kvm_timer_update_state()
210 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_schedule() local
212 BUG_ON(timer_is_armed(timer)); in kvm_timer_schedule()
230 timer_arm(timer, kvm_timer_compute_delta(vcpu)); in kvm_timer_schedule()
235 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_unschedule() local
236 timer_disarm(timer); in kvm_timer_unschedule()
248 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_flush_hwstate() local
272 if (timer->irq.level || kvm_vgic_map_is_active(vcpu, timer->map)) in kvm_timer_flush_hwstate()
277 ret = irq_set_irqchip_state(timer->map->irq, in kvm_timer_flush_hwstate()
292 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_sync_hwstate() local
294 BUG_ON(timer_is_armed(timer)); in kvm_timer_sync_hwstate()
306 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_reset() local
315 timer->irq.irq = irq->irq; in kvm_timer_vcpu_reset()
323 timer->cntv_ctl = 0; in kvm_timer_vcpu_reset()
334 timer->map = map; in kvm_timer_vcpu_reset()
340 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_init() local
342 INIT_WORK(&timer->expired, kvm_timer_inject_irq_work); in kvm_timer_vcpu_init()
343 hrtimer_init(&timer->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); in kvm_timer_vcpu_init()
344 timer->timer.function = kvm_timer_expire; in kvm_timer_vcpu_init()
354 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_arm_timer_set_reg() local
358 timer->cntv_ctl = value; in kvm_arm_timer_set_reg()
361 vcpu->kvm->arch.timer.cntvoff = kvm_phys_timer_read() - value; in kvm_arm_timer_set_reg()
364 timer->cntv_cval = value; in kvm_arm_timer_set_reg()
376 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_arm_timer_get_reg() local
380 return timer->cntv_ctl; in kvm_arm_timer_get_reg()
382 return kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_arm_timer_get_reg()
384 return timer->cntv_cval; in kvm_arm_timer_get_reg()
474 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_terminate() local
476 timer_disarm(timer); in kvm_timer_vcpu_terminate()
477 if (timer->map) in kvm_timer_vcpu_terminate()
478 kvm_vgic_unmap_phys_irq(vcpu, timer->map); in kvm_timer_vcpu_terminate()
483 if (kvm->arch.timer.enabled) in kvm_timer_enable()
495 kvm->arch.timer.enabled = 1; in kvm_timer_enable()
500 kvm->arch.timer.cntvoff = kvm_phys_timer_read(); in kvm_timer_init()