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()
100 now = kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_timer_compute_delta()
117 struct arch_timer_cpu *timer; in kvm_timer_expire() local
121 timer = container_of(hrt, struct arch_timer_cpu, timer); in kvm_timer_expire()
122 vcpu = container_of(timer, struct kvm_vcpu, arch.timer_cpu); in kvm_timer_expire()
135 queue_work(wqueue, &timer->expired); in kvm_timer_expire()
141 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_irq_can_fire() local
143 return !(timer->cntv_ctl & ARCH_TIMER_CTRL_IT_MASK) && in kvm_timer_irq_can_fire()
144 (timer->cntv_ctl & ARCH_TIMER_CTRL_ENABLE); in kvm_timer_irq_can_fire()
149 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_should_fire() local
155 cval = timer->cntv_cval; in kvm_timer_should_fire()
156 now = kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_timer_should_fire()
164 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_update_irq() local
168 timer->irq.level = new_level; in kvm_timer_update_irq()
169 trace_kvm_timer_update_irq(vcpu->vcpu_id, timer->map->virt_irq, in kvm_timer_update_irq()
170 timer->irq.level); in kvm_timer_update_irq()
172 timer->map, in kvm_timer_update_irq()
173 timer->irq.level); in kvm_timer_update_irq()
183 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_update_state() local
194 if (kvm_timer_should_fire(vcpu) != timer->irq.level) in kvm_timer_update_state()
195 kvm_timer_update_irq(vcpu, !timer->irq.level); in kvm_timer_update_state()
207 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_schedule() local
209 BUG_ON(timer_is_armed(timer)); in kvm_timer_schedule()
227 timer_arm(timer, kvm_timer_compute_delta(vcpu)); in kvm_timer_schedule()
232 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_unschedule() local
233 timer_disarm(timer); in kvm_timer_unschedule()
245 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_flush_hwstate() local
269 if (timer->irq.level || kvm_vgic_map_is_active(vcpu, timer->map)) in kvm_timer_flush_hwstate()
274 ret = irq_set_irqchip_state(timer->map->irq, in kvm_timer_flush_hwstate()
289 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_sync_hwstate() local
291 BUG_ON(timer_is_armed(timer)); in kvm_timer_sync_hwstate()
303 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_reset() local
312 timer->irq.irq = irq->irq; in kvm_timer_vcpu_reset()
320 timer->cntv_ctl = 0; in kvm_timer_vcpu_reset()
331 timer->map = map; in kvm_timer_vcpu_reset()
337 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_init() local
339 INIT_WORK(&timer->expired, kvm_timer_inject_irq_work); in kvm_timer_vcpu_init()
340 hrtimer_init(&timer->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); in kvm_timer_vcpu_init()
341 timer->timer.function = kvm_timer_expire; in kvm_timer_vcpu_init()
351 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_arm_timer_set_reg() local
355 timer->cntv_ctl = value; in kvm_arm_timer_set_reg()
358 vcpu->kvm->arch.timer.cntvoff = kvm_phys_timer_read() - value; in kvm_arm_timer_set_reg()
361 timer->cntv_cval = value; in kvm_arm_timer_set_reg()
373 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_arm_timer_get_reg() local
377 return timer->cntv_ctl; in kvm_arm_timer_get_reg()
379 return kvm_phys_timer_read() - vcpu->kvm->arch.timer.cntvoff; in kvm_arm_timer_get_reg()
381 return timer->cntv_cval; in kvm_arm_timer_get_reg()
471 struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; in kvm_timer_vcpu_terminate() local
473 timer_disarm(timer); in kvm_timer_vcpu_terminate()
474 if (timer->map) in kvm_timer_vcpu_terminate()
475 kvm_vgic_unmap_phys_irq(vcpu, timer->map); in kvm_timer_vcpu_terminate()
480 if (kvm->arch.timer.enabled) in kvm_timer_enable()
492 kvm->arch.timer.enabled = 1; in kvm_timer_enable()
497 kvm->arch.timer.cntvoff = kvm_phys_timer_read(); in kvm_timer_init()