Lines Matching refs:lapic_timer
297 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_ONESHOT; in apic_lvtt_oneshot()
302 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_PERIODIC; in apic_lvtt_period()
307 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_TSCDEADLINE; in apic_lvtt_tscdeadline()
1237 apic->lapic_timer.period == 0) in apic_get_tmcct()
1241 remaining = ktime_sub(apic->lapic_timer.target_expiration, now); in apic_get_tmcct()
1245 ns = mod_64(ktime_to_ns(remaining), apic->lapic_timer.period); in apic_get_tmcct()
1394 if (apic_lvtt_period(apic) && apic->lapic_timer.period) { in limit_periodic_timer_frequency()
1397 if (apic->lapic_timer.period < min_period) { in limit_periodic_timer_frequency()
1402 apic->lapic_timer.period, min_period); in limit_periodic_timer_frequency()
1403 apic->lapic_timer.period = min_period; in limit_periodic_timer_frequency()
1411 apic->lapic_timer.timer_mode_mask; in apic_update_lvtt()
1413 if (apic->lapic_timer.timer_mode != timer_mode) { in apic_update_lvtt()
1416 hrtimer_cancel(&apic->lapic_timer.timer); in apic_update_lvtt()
1418 apic->lapic_timer.period = 0; in apic_update_lvtt()
1419 apic->lapic_timer.tscdeadline = 0; in apic_update_lvtt()
1421 apic->lapic_timer.timer_mode = timer_mode; in apic_update_lvtt()
1430 struct kvm_timer *ktimer = &apic->lapic_timer; in apic_timer_expired()
1432 if (atomic_read(&apic->lapic_timer.pending)) in apic_timer_expired()
1435 atomic_inc(&apic->lapic_timer.pending); in apic_timer_expired()
1480 if (apic->lapic_timer.expired_tscdeadline == 0) in wait_lapic_expire()
1486 tsc_deadline = apic->lapic_timer.expired_tscdeadline; in wait_lapic_expire()
1487 apic->lapic_timer.expired_tscdeadline = 0; in wait_lapic_expire()
1499 u64 guest_tsc, tscdeadline = apic->lapic_timer.tscdeadline; in start_sw_tscdeadline()
1519 hrtimer_start(&apic->lapic_timer.timer, in start_sw_tscdeadline()
1532 apic->lapic_timer.period = (u64)kvm_lapic_get_reg(apic, APIC_TMICT) in update_target_expiration()
1537 remaining = ktime_sub(apic->lapic_timer.target_expiration, now); in update_target_expiration()
1545 apic->lapic_timer.tscdeadline += in update_target_expiration()
1548 apic->lapic_timer.target_expiration = ktime_add_ns(now, ns_remaining_new); in update_target_expiration()
1557 apic->lapic_timer.period = (u64)kvm_lapic_get_reg(apic, APIC_TMICT) in set_target_expiration()
1560 if (!apic->lapic_timer.period) { in set_target_expiration()
1561 apic->lapic_timer.tscdeadline = 0; in set_target_expiration()
1573 apic->lapic_timer.period, in set_target_expiration()
1575 apic->lapic_timer.period))); in set_target_expiration()
1577 apic->lapic_timer.tscdeadline = kvm_read_l1_tsc(apic->vcpu, tscl) + in set_target_expiration()
1578 nsec_to_cycles(apic->vcpu, apic->lapic_timer.period); in set_target_expiration()
1579 apic->lapic_timer.target_expiration = ktime_add_ns(now, apic->lapic_timer.period); in set_target_expiration()
1597 apic->lapic_timer.target_expiration = in advance_periodic_target_expiration()
1598 ktime_add_ns(apic->lapic_timer.target_expiration, in advance_periodic_target_expiration()
1599 apic->lapic_timer.period); in advance_periodic_target_expiration()
1600 delta = ktime_sub(apic->lapic_timer.target_expiration, now); in advance_periodic_target_expiration()
1601 apic->lapic_timer.tscdeadline = kvm_read_l1_tsc(apic->vcpu, tscl) + in advance_periodic_target_expiration()
1607 if (!apic->lapic_timer.period) in start_sw_period()
1611 apic->lapic_timer.target_expiration)) { in start_sw_period()
1620 hrtimer_start(&apic->lapic_timer.timer, in start_sw_period()
1621 apic->lapic_timer.target_expiration, in start_sw_period()
1630 return vcpu->arch.apic->lapic_timer.hv_timer_in_use; in kvm_lapic_hv_timer_in_use()
1637 WARN_ON(!apic->lapic_timer.hv_timer_in_use); in cancel_hv_timer()
1639 apic->lapic_timer.hv_timer_in_use = false; in cancel_hv_timer()
1644 struct kvm_timer *ktimer = &apic->lapic_timer; in start_hv_timer()
1681 struct kvm_timer *ktimer = &apic->lapic_timer; in start_sw_timer()
1684 if (apic->lapic_timer.hv_timer_in_use) in start_sw_timer()
1710 if (!apic->lapic_timer.hv_timer_in_use) in kvm_lapic_expired_hv_timer()
1716 if (apic_lvtt_period(apic) && apic->lapic_timer.period) { in kvm_lapic_expired_hv_timer()
1737 if (apic->lapic_timer.hv_timer_in_use) in kvm_lapic_switch_to_sw_timer()
1747 WARN_ON(!apic->lapic_timer.hv_timer_in_use); in kvm_lapic_restart_hv_timer()
1753 atomic_set(&apic->lapic_timer.pending, 0); in start_apic_timer()
1831 atomic_set(&apic->lapic_timer.pending, 0); in kvm_lapic_reg_write()
1866 val &= (apic_lvt_mask[0] | apic->lapic_timer.timer_mode_mask); in kvm_lapic_reg_write()
1875 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_lapic_reg_write()
1888 apic->lapic_timer.period) { in kvm_lapic_reg_write()
1889 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_lapic_reg_write()
1987 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_free_lapic()
2014 return apic->lapic_timer.tscdeadline; in kvm_get_lapic_tscdeadline_msr()
2025 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_set_lapic_tscdeadline_msr()
2026 apic->lapic_timer.tscdeadline = data; in kvm_set_lapic_tscdeadline_msr()
2104 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_lapic_reset()
2141 atomic_set(&apic->lapic_timer.pending, 0); in kvm_lapic_reset()
2178 return atomic_read(&apic->lapic_timer.pending); in apic_has_pending_timer()
2214 struct kvm_lapic *apic = container_of(ktimer, struct kvm_lapic, lapic_timer); in apic_timer_fn()
2247 hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, in kvm_create_lapic()
2249 apic->lapic_timer.timer.function = apic_timer_fn; in kvm_create_lapic()
2295 if (atomic_read(&apic->lapic_timer.pending) > 0) { in kvm_inject_apic_timer_irqs()
2298 apic->lapic_timer.tscdeadline = 0; in kvm_inject_apic_timer_irqs()
2300 apic->lapic_timer.tscdeadline = 0; in kvm_inject_apic_timer_irqs()
2301 apic->lapic_timer.target_expiration = 0; in kvm_inject_apic_timer_irqs()
2303 atomic_set(&apic->lapic_timer.pending, 0); in kvm_inject_apic_timer_irqs()
2395 hrtimer_cancel(&apic->lapic_timer.timer); in kvm_apic_set_state()
2427 timer = &vcpu->arch.apic->lapic_timer.timer; in __kvm_migrate_apic_timer()