Lines Matching refs:lapic_timer
347 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_ONESHOT;
352 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_PERIODIC;
357 return apic->lapic_timer.timer_mode == APIC_LVT_TIMER_TSCDEADLINE;
1311 apic->lapic_timer.period == 0)
1315 remaining = ktime_sub(apic->lapic_timer.target_expiration, now);
1319 ns = mod_64(ktime_to_ns(remaining), apic->lapic_timer.period);
1488 if (apic_lvtt_period(apic) && apic->lapic_timer.period) {
1491 if (apic->lapic_timer.period < min_period) {
1496 apic->lapic_timer.period, min_period);
1497 apic->lapic_timer.period = min_period;
1507 apic->lapic_timer.timer_mode_mask;
1509 if (apic->lapic_timer.timer_mode != timer_mode) {
1512 hrtimer_cancel(&apic->lapic_timer.timer);
1514 if (apic->lapic_timer.hv_timer_in_use)
1518 apic->lapic_timer.period = 0;
1519 apic->lapic_timer.tscdeadline = 0;
1521 apic->lapic_timer.timer_mode = timer_mode;
1551 u64 timer_advance_ns = vcpu->arch.apic->lapic_timer.timer_advance_ns;
1573 u32 timer_advance_ns = apic->lapic_timer.timer_advance_ns;
1595 apic->lapic_timer.timer_advance_ns = timer_advance_ns;
1603 tsc_deadline = apic->lapic_timer.expired_tscdeadline;
1604 apic->lapic_timer.expired_tscdeadline = 0;
1606 apic->lapic_timer.advance_expire_delta = guest_tsc - tsc_deadline;
1612 adjust_lapic_timer_advance(vcpu, apic->lapic_timer.advance_expire_delta);
1618 vcpu->arch.apic->lapic_timer.expired_tscdeadline &&
1619 vcpu->arch.apic->lapic_timer.timer_advance_ns &&
1627 struct kvm_timer *ktimer = &apic->lapic_timer;
1641 struct kvm_timer *ktimer = &apic->lapic_timer;
1643 if (atomic_read(&apic->lapic_timer.pending))
1663 if (vcpu->arch.apic->lapic_timer.expired_tscdeadline &&
1664 vcpu->arch.apic->lapic_timer.timer_advance_ns)
1670 atomic_inc(&apic->lapic_timer.pending);
1678 struct kvm_timer *ktimer = &apic->lapic_timer;
1699 likely(ns > apic->lapic_timer.timer_advance_ns)) {
1719 apic->lapic_timer.period =
1724 remaining = ktime_sub(apic->lapic_timer.target_expiration, now);
1732 apic->lapic_timer.tscdeadline +=
1735 apic->lapic_timer.target_expiration = ktime_add_ns(now, ns_remaining_new);
1745 apic->lapic_timer.period =
1748 if (!apic->lapic_timer.period) {
1749 apic->lapic_timer.tscdeadline = 0;
1754 deadline = apic->lapic_timer.period;
1761 deadline = apic->lapic_timer.period;
1762 else if (unlikely(deadline > apic->lapic_timer.period)) {
1770 deadline, apic->lapic_timer.period);
1772 deadline = apic->lapic_timer.period;
1777 apic->lapic_timer.tscdeadline = kvm_read_l1_tsc(apic->vcpu, tscl) +
1779 apic->lapic_timer.target_expiration = ktime_add_ns(now, deadline);
1797 apic->lapic_timer.target_expiration =
1798 ktime_add_ns(apic->lapic_timer.target_expiration,
1799 apic->lapic_timer.period);
1800 delta = ktime_sub(apic->lapic_timer.target_expiration, now);
1801 apic->lapic_timer.tscdeadline = kvm_read_l1_tsc(apic->vcpu, tscl) +
1807 if (!apic->lapic_timer.period)
1811 apic->lapic_timer.target_expiration)) {
1820 hrtimer_start(&apic->lapic_timer.timer,
1821 apic->lapic_timer.target_expiration,
1830 return vcpu->arch.apic->lapic_timer.hv_timer_in_use;
1837 WARN_ON(!apic->lapic_timer.hv_timer_in_use);
1839 apic->lapic_timer.hv_timer_in_use = false;
1844 struct kvm_timer *ktimer = &apic->lapic_timer;
1886 struct kvm_timer *ktimer = &apic->lapic_timer;
1889 if (apic->lapic_timer.hv_timer_in_use)
1905 if (!apic_lvtt_period(apic) && atomic_read(&apic->lapic_timer.pending))
1920 if (!apic->lapic_timer.hv_timer_in_use)
1926 if (apic_lvtt_period(apic) && apic->lapic_timer.period) {
1947 if (apic->lapic_timer.hv_timer_in_use)
1957 WARN_ON(!apic->lapic_timer.hv_timer_in_use);
1963 atomic_set(&apic->lapic_timer.pending, 0);
2043 atomic_set(&apic->lapic_timer.pending, 0);
2085 val &= (apic_lvt_mask[0] | apic->lapic_timer.timer_mode_mask);
2094 hrtimer_cancel(&apic->lapic_timer.timer);
2105 apic->lapic_timer.period) {
2106 hrtimer_cancel(&apic->lapic_timer.timer);
2199 hrtimer_cancel(&apic->lapic_timer.timer);
2225 return apic->lapic_timer.tscdeadline;
2235 hrtimer_cancel(&apic->lapic_timer.timer);
2236 apic->lapic_timer.tscdeadline = data;
2321 hrtimer_cancel(&apic->lapic_timer.timer);
2357 atomic_set(&apic->lapic_timer.pending, 0);
2391 return atomic_read(&apic->lapic_timer.pending);
2431 struct kvm_lapic *apic = container_of(ktimer, struct kvm_lapic, lapic_timer);
2463 hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
2465 apic->lapic_timer.timer.function = apic_timer_fn;
2467 apic->lapic_timer.timer_advance_ns = LAPIC_TIMER_ADVANCE_NS_INIT;
2470 apic->lapic_timer.timer_advance_ns = timer_advance_ns;
2519 if (atomic_read(&apic->lapic_timer.pending) > 0) {
2521 atomic_set(&apic->lapic_timer.pending, 0);
2623 hrtimer_cancel(&apic->lapic_timer.timer);
2654 timer = &vcpu->arch.apic->lapic_timer.timer;