Lines Matching refs:vcpu

88 bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector)  in kvm_apic_pending_eoi()  argument
90 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_pending_eoi()
161 struct kvm_vcpu *vcpu; in recalculate_apic_map() local
171 kvm_for_each_vcpu(i, vcpu, kvm) { in recalculate_apic_map()
172 struct kvm_lapic *apic = vcpu->arch.apic; in recalculate_apic_map()
176 if (!kvm_apic_present(vcpu)) in recalculate_apic_map()
225 recalculate_apic_map(apic->vcpu->kvm); in apic_set_spiv()
234 recalculate_apic_map(apic->vcpu->kvm); in kvm_apic_set_id()
240 recalculate_apic_map(apic->vcpu->kvm); in kvm_apic_set_ldr()
273 void kvm_apic_set_version(struct kvm_vcpu *vcpu) in kvm_apic_set_version() argument
275 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_set_version()
279 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_apic_set_version()
282 feat = kvm_find_cpuid_entry(apic->vcpu, 0x1, 0); in kvm_apic_set_version()
337 void kvm_apic_update_irr(struct kvm_vcpu *vcpu, u32 *pir) in kvm_apic_update_irr() argument
339 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_update_irr()
343 kvm_make_request(KVM_REQ_EVENT, vcpu); in kvm_apic_update_irr()
373 kvm_x86_ops->sync_pir_to_irr(apic->vcpu); in apic_find_highest_irr()
382 struct kvm_vcpu *vcpu; in apic_clear_irr() local
384 vcpu = apic->vcpu; in apic_clear_irr()
386 if (unlikely(kvm_apic_vid_enabled(vcpu->kvm))) { in apic_clear_irr()
389 kvm_make_request(KVM_REQ_EVENT, vcpu); in apic_clear_irr()
400 struct kvm_vcpu *vcpu; in apic_set_isr() local
405 vcpu = apic->vcpu; in apic_set_isr()
413 kvm_x86_ops->hwapic_isr_update(vcpu->kvm, vec); in apic_set_isr()
447 struct kvm_vcpu *vcpu; in apic_clear_isr() local
451 vcpu = apic->vcpu; in apic_clear_isr()
461 kvm_x86_ops->hwapic_isr_update(vcpu->kvm, in apic_clear_isr()
470 int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu) in kvm_lapic_find_highest_irr() argument
479 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_lapic_find_highest_irr()
481 highest_irr = apic_find_highest_irr(vcpu->arch.apic); in kvm_lapic_find_highest_irr()
490 int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq, in kvm_apic_set_irq() argument
493 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_set_irq()
499 static int pv_eoi_put_user(struct kvm_vcpu *vcpu, u8 val) in pv_eoi_put_user() argument
502 return kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data, &val, in pv_eoi_put_user()
506 static int pv_eoi_get_user(struct kvm_vcpu *vcpu, u8 *val) in pv_eoi_get_user() argument
509 return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data, val, in pv_eoi_get_user()
513 static inline bool pv_eoi_enabled(struct kvm_vcpu *vcpu) in pv_eoi_enabled() argument
515 return vcpu->arch.pv_eoi.msr_val & KVM_MSR_ENABLED; in pv_eoi_enabled()
518 static bool pv_eoi_get_pending(struct kvm_vcpu *vcpu) in pv_eoi_get_pending() argument
521 if (pv_eoi_get_user(vcpu, &val) < 0) in pv_eoi_get_pending()
523 (unsigned long long)vcpu->arch.pv_eoi.msr_val); in pv_eoi_get_pending()
527 static void pv_eoi_set_pending(struct kvm_vcpu *vcpu) in pv_eoi_set_pending() argument
529 if (pv_eoi_put_user(vcpu, KVM_PV_EOI_ENABLED) < 0) { in pv_eoi_set_pending()
531 (unsigned long long)vcpu->arch.pv_eoi.msr_val); in pv_eoi_set_pending()
534 __set_bit(KVM_APIC_PV_EOI_PENDING, &vcpu->arch.apic_attention); in pv_eoi_set_pending()
537 static void pv_eoi_clr_pending(struct kvm_vcpu *vcpu) in pv_eoi_clr_pending() argument
539 if (pv_eoi_put_user(vcpu, KVM_PV_EOI_DISABLED) < 0) { in pv_eoi_clr_pending()
541 (unsigned long long)vcpu->arch.pv_eoi.msr_val); in pv_eoi_clr_pending()
544 __clear_bit(KVM_APIC_PV_EOI_PENDING, &vcpu->arch.apic_attention); in pv_eoi_clr_pending()
547 void kvm_apic_update_tmr(struct kvm_vcpu *vcpu, u32 *tmr) in kvm_apic_update_tmr() argument
549 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_update_tmr()
577 kvm_make_request(KVM_REQ_EVENT, apic->vcpu); in apic_update_ppr()
630 apic->vcpu->vcpu_id, kvm_apic_get_reg(apic, APIC_DFR)); in kvm_apic_match_logical_addr()
651 bool kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source, in kvm_apic_match_dest() argument
654 struct kvm_lapic *target = vcpu->arch.apic; in kvm_apic_match_dest()
693 *r = kvm_apic_set_irq(src->vcpu, irq, dest_map); in kvm_irq_delivery_to_apic_fast()
740 else if (kvm_apic_compare_prio(dst[i]->vcpu, dst[l]->vcpu) < 0) in kvm_irq_delivery_to_apic_fast()
753 *r += kvm_apic_set_irq(dst[i]->vcpu, irq, dest_map); in kvm_irq_delivery_to_apic_fast()
769 struct kvm_vcpu *vcpu = apic->vcpu; in __apic_accept_irq() local
771 trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, in __apic_accept_irq()
775 vcpu->arch.apic_arb_prio++; in __apic_accept_irq()
784 __set_bit(vcpu->vcpu_id, dest_map); in __apic_accept_irq()
787 kvm_x86_ops->deliver_posted_interrupt(vcpu, vector); in __apic_accept_irq()
791 kvm_make_request(KVM_REQ_EVENT, vcpu); in __apic_accept_irq()
792 kvm_vcpu_kick(vcpu); in __apic_accept_irq()
798 vcpu->arch.pv.pv_unhalted = 1; in __apic_accept_irq()
799 kvm_make_request(KVM_REQ_EVENT, vcpu); in __apic_accept_irq()
800 kvm_vcpu_kick(vcpu); in __apic_accept_irq()
809 kvm_inject_nmi(vcpu); in __apic_accept_irq()
810 kvm_vcpu_kick(vcpu); in __apic_accept_irq()
821 kvm_make_request(KVM_REQ_EVENT, vcpu); in __apic_accept_irq()
822 kvm_vcpu_kick(vcpu); in __apic_accept_irq()
825 vcpu->vcpu_id); in __apic_accept_irq()
831 vcpu->vcpu_id, vector); in __apic_accept_irq()
837 kvm_make_request(KVM_REQ_EVENT, vcpu); in __apic_accept_irq()
838 kvm_vcpu_kick(vcpu); in __apic_accept_irq()
864 if (kvm_ioapic_handles_vector(apic->vcpu->kvm, vector)) { in kvm_ioapic_send_eoi()
870 kvm_ioapic_update_eoi(apic->vcpu, vector, trigger_mode); in kvm_ioapic_send_eoi()
891 kvm_make_request(KVM_REQ_EVENT, apic->vcpu); in apic_set_eoi()
899 void kvm_apic_set_eoi_accelerated(struct kvm_vcpu *vcpu, int vector) in kvm_apic_set_eoi_accelerated() argument
901 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_set_eoi_accelerated()
906 kvm_make_request(KVM_REQ_EVENT, apic->vcpu); in kvm_apic_set_eoi_accelerated()
936 kvm_irq_delivery_to_apic(apic->vcpu->kvm, apic, &irq, NULL); in apic_send_ipi()
965 struct kvm_vcpu *vcpu = apic->vcpu; in __report_tpr_access() local
966 struct kvm_run *run = vcpu->run; in __report_tpr_access()
968 kvm_make_request(KVM_REQ_REPORT_TPR_ACCESS, vcpu); in __report_tpr_access()
969 run->tpr_access.rip = kvm_rip_read(vcpu); in __report_tpr_access()
975 if (apic->vcpu->arch.tpr_access_reporting) in report_tpr_access()
1068 static int apic_mmio_read(struct kvm_vcpu *vcpu, struct kvm_io_device *this, in apic_mmio_read() argument
1108 struct kvm_vcpu *vcpu = apic->vcpu; in apic_timer_expired() local
1109 wait_queue_head_t *q = &vcpu->wq; in apic_timer_expired()
1116 kvm_set_pending_timer(vcpu); in apic_timer_expired()
1130 static bool lapic_timer_int_injected(struct kvm_vcpu *vcpu) in lapic_timer_int_injected() argument
1132 struct kvm_lapic *apic = vcpu->arch.apic; in lapic_timer_int_injected()
1148 void wait_lapic_expire(struct kvm_vcpu *vcpu) in wait_lapic_expire() argument
1150 struct kvm_lapic *apic = vcpu->arch.apic; in wait_lapic_expire()
1153 if (!kvm_vcpu_has_lapic(vcpu)) in wait_lapic_expire()
1159 if (!lapic_timer_int_injected(vcpu)) in wait_lapic_expire()
1164 guest_tsc = kvm_x86_ops->read_l1_tsc(vcpu, native_read_tsc()); in wait_lapic_expire()
1165 trace_kvm_wait_lapic_expire(vcpu->vcpu_id, guest_tsc - tsc_deadline); in wait_lapic_expire()
1198 apic->vcpu->vcpu_id, in start_apic_timer()
1222 struct kvm_vcpu *vcpu = apic->vcpu; in start_apic_timer() local
1223 unsigned long this_tsc_khz = vcpu->arch.virtual_tsc_khz; in start_apic_timer()
1232 guest_tsc = kvm_x86_ops->read_l1_tsc(vcpu, native_read_tsc()); in start_apic_timer()
1254 "for cpu %d\n", apic->vcpu->vcpu_id); in apic_manage_nmi_watchdog()
1255 atomic_inc(&apic->vcpu->kvm->arch.vapics_in_nmi_mode); in apic_manage_nmi_watchdog()
1258 atomic_dec(&apic->vcpu->kvm->arch.vapics_in_nmi_mode); in apic_manage_nmi_watchdog()
1294 recalculate_apic_map(apic->vcpu->kvm); in apic_reg_write()
1393 static int apic_mmio_write(struct kvm_vcpu *vcpu, struct kvm_io_device *this, in apic_mmio_write() argument
1426 void kvm_lapic_set_eoi(struct kvm_vcpu *vcpu) in kvm_lapic_set_eoi() argument
1428 if (kvm_vcpu_has_lapic(vcpu)) in kvm_lapic_set_eoi()
1429 apic_reg_write(vcpu->arch.apic, APIC_EOI, 0); in kvm_lapic_set_eoi()
1434 void kvm_apic_write_nodecode(struct kvm_vcpu *vcpu, u32 offset) in kvm_apic_write_nodecode() argument
1441 apic_reg_read(vcpu->arch.apic, offset, 4, &val); in kvm_apic_write_nodecode()
1444 apic_reg_write(vcpu->arch.apic, offset, val); in kvm_apic_write_nodecode()
1448 void kvm_free_lapic(struct kvm_vcpu *vcpu) in kvm_free_lapic() argument
1450 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_free_lapic()
1452 if (!vcpu->arch.apic) in kvm_free_lapic()
1457 if (!(vcpu->arch.apic_base & MSR_IA32_APICBASE_ENABLE)) in kvm_free_lapic()
1475 u64 kvm_get_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu) in kvm_get_lapic_tscdeadline_msr() argument
1477 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_get_lapic_tscdeadline_msr()
1479 if (!kvm_vcpu_has_lapic(vcpu) || apic_lvtt_oneshot(apic) || in kvm_get_lapic_tscdeadline_msr()
1486 void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data) in kvm_set_lapic_tscdeadline_msr() argument
1488 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_set_lapic_tscdeadline_msr()
1490 if (!kvm_vcpu_has_lapic(vcpu) || apic_lvtt_oneshot(apic) || in kvm_set_lapic_tscdeadline_msr()
1499 void kvm_lapic_set_tpr(struct kvm_vcpu *vcpu, unsigned long cr8) in kvm_lapic_set_tpr() argument
1501 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_lapic_set_tpr()
1503 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_lapic_set_tpr()
1510 u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu) in kvm_lapic_get_cr8() argument
1514 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_lapic_get_cr8()
1517 tpr = (u64) kvm_apic_get_reg(vcpu->arch.apic, APIC_TASKPRI); in kvm_lapic_get_cr8()
1522 void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) in kvm_lapic_set_base() argument
1524 u64 old_value = vcpu->arch.apic_base; in kvm_lapic_set_base()
1525 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_lapic_set_base()
1529 vcpu->arch.apic_base = value; in kvm_lapic_set_base()
1533 vcpu->arch.apic_base = value; in kvm_lapic_set_base()
1541 recalculate_apic_map(vcpu->kvm); in kvm_lapic_set_base()
1549 kvm_x86_ops->set_virtual_x2apic_mode(vcpu, true); in kvm_lapic_set_base()
1551 kvm_x86_ops->set_virtual_x2apic_mode(vcpu, false); in kvm_lapic_set_base()
1554 apic->base_address = apic->vcpu->arch.apic_base & in kvm_lapic_set_base()
1563 "0x%lx.\n", apic->vcpu->arch.apic_base, apic->base_address); in kvm_lapic_set_base()
1567 void kvm_lapic_reset(struct kvm_vcpu *vcpu) in kvm_lapic_reset() argument
1574 ASSERT(vcpu); in kvm_lapic_reset()
1575 apic = vcpu->arch.apic; in kvm_lapic_reset()
1581 kvm_apic_set_id(apic, vcpu->vcpu_id); in kvm_lapic_reset()
1582 kvm_apic_set_version(apic->vcpu); in kvm_lapic_reset()
1604 apic->irr_pending = kvm_apic_vid_enabled(vcpu->kvm); in kvm_lapic_reset()
1609 if (kvm_vcpu_is_bsp(vcpu)) in kvm_lapic_reset()
1610 kvm_lapic_set_base(vcpu, in kvm_lapic_reset()
1611 vcpu->arch.apic_base | MSR_IA32_APICBASE_BSP); in kvm_lapic_reset()
1612 vcpu->arch.pv_eoi.msr_val = 0; in kvm_lapic_reset()
1615 vcpu->arch.apic_arb_prio = 0; in kvm_lapic_reset()
1616 vcpu->arch.apic_attention = 0; in kvm_lapic_reset()
1620 vcpu, kvm_apic_id(apic), in kvm_lapic_reset()
1621 vcpu->arch.apic_base, apic->base_address); in kvm_lapic_reset()
1635 int apic_has_pending_timer(struct kvm_vcpu *vcpu) in apic_has_pending_timer() argument
1637 struct kvm_lapic *apic = vcpu->arch.apic; in apic_has_pending_timer()
1639 if (kvm_vcpu_has_lapic(vcpu) && apic_enabled(apic) && in apic_has_pending_timer()
1661 void kvm_apic_nmi_wd_deliver(struct kvm_vcpu *vcpu) in kvm_apic_nmi_wd_deliver() argument
1663 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_nmi_wd_deliver()
1688 int kvm_create_lapic(struct kvm_vcpu *vcpu) in kvm_create_lapic() argument
1692 ASSERT(vcpu != NULL); in kvm_create_lapic()
1693 apic_debug("apic_init %d\n", vcpu->vcpu_id); in kvm_create_lapic()
1699 vcpu->arch.apic = apic; in kvm_create_lapic()
1704 vcpu->vcpu_id); in kvm_create_lapic()
1707 apic->vcpu = vcpu; in kvm_create_lapic()
1717 vcpu->arch.apic_base = MSR_IA32_APICBASE_ENABLE; in kvm_create_lapic()
1718 kvm_lapic_set_base(vcpu, in kvm_create_lapic()
1722 kvm_lapic_reset(vcpu); in kvm_create_lapic()
1732 int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu) in kvm_apic_has_interrupt() argument
1734 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_has_interrupt()
1737 if (!kvm_vcpu_has_lapic(vcpu) || !apic_enabled(apic)) in kvm_apic_has_interrupt()
1748 int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu) in kvm_apic_accept_pic_intr() argument
1750 u32 lvt0 = kvm_apic_get_reg(vcpu->arch.apic, APIC_LVT0); in kvm_apic_accept_pic_intr()
1753 if (!kvm_apic_hw_enabled(vcpu->arch.apic)) in kvm_apic_accept_pic_intr()
1761 void kvm_inject_apic_timer_irqs(struct kvm_vcpu *vcpu) in kvm_inject_apic_timer_irqs() argument
1763 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_inject_apic_timer_irqs()
1765 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_inject_apic_timer_irqs()
1776 int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu) in kvm_get_apic_interrupt() argument
1778 int vector = kvm_apic_has_interrupt(vcpu); in kvm_get_apic_interrupt()
1779 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_get_apic_interrupt()
1797 void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu, in kvm_apic_post_state_restore() argument
1800 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_post_state_restore()
1802 kvm_lapic_set_base(vcpu, vcpu->arch.apic_base); in kvm_apic_post_state_restore()
1805 memcpy(vcpu->arch.apic->regs, s->regs, sizeof *s); in kvm_apic_post_state_restore()
1808 kvm_apic_set_version(vcpu); in kvm_apic_post_state_restore()
1821 kvm_x86_ops->hwapic_irr_update(vcpu, in kvm_apic_post_state_restore()
1824 kvm_x86_ops->hwapic_isr_update(vcpu->kvm, in kvm_apic_post_state_restore()
1826 kvm_make_request(KVM_REQ_EVENT, vcpu); in kvm_apic_post_state_restore()
1827 kvm_rtc_eoi_tracking_restore_one(vcpu); in kvm_apic_post_state_restore()
1830 void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu) in __kvm_migrate_apic_timer() argument
1834 if (!kvm_vcpu_has_lapic(vcpu)) in __kvm_migrate_apic_timer()
1837 timer = &vcpu->arch.apic->lapic_timer.timer; in __kvm_migrate_apic_timer()
1849 static void apic_sync_pv_eoi_from_guest(struct kvm_vcpu *vcpu, in apic_sync_pv_eoi_from_guest() argument
1865 BUG_ON(!pv_eoi_enabled(vcpu)); in apic_sync_pv_eoi_from_guest()
1866 pending = pv_eoi_get_pending(vcpu); in apic_sync_pv_eoi_from_guest()
1872 pv_eoi_clr_pending(vcpu); in apic_sync_pv_eoi_from_guest()
1879 void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) in kvm_lapic_sync_from_vapic() argument
1883 if (test_bit(KVM_APIC_PV_EOI_PENDING, &vcpu->arch.apic_attention)) in kvm_lapic_sync_from_vapic()
1884 apic_sync_pv_eoi_from_guest(vcpu, vcpu->arch.apic); in kvm_lapic_sync_from_vapic()
1886 if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention)) in kvm_lapic_sync_from_vapic()
1889 kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data, in kvm_lapic_sync_from_vapic()
1892 apic_set_tpr(vcpu->arch.apic, data & 0xff); in kvm_lapic_sync_from_vapic()
1901 static void apic_sync_pv_eoi_to_guest(struct kvm_vcpu *vcpu, in apic_sync_pv_eoi_to_guest() argument
1904 if (!pv_eoi_enabled(vcpu) || in apic_sync_pv_eoi_to_guest()
1910 kvm_ioapic_handles_vector(vcpu->kvm, apic->highest_isr_cache)) { in apic_sync_pv_eoi_to_guest()
1918 pv_eoi_set_pending(apic->vcpu); in apic_sync_pv_eoi_to_guest()
1921 void kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu) in kvm_lapic_sync_to_vapic() argument
1925 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_lapic_sync_to_vapic()
1927 apic_sync_pv_eoi_to_guest(vcpu, apic); in kvm_lapic_sync_to_vapic()
1929 if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention)) in kvm_lapic_sync_to_vapic()
1941 kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data, in kvm_lapic_sync_to_vapic()
1945 int kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr) in kvm_lapic_set_vapic_addr() argument
1948 if (kvm_gfn_to_hva_cache_init(vcpu->kvm, in kvm_lapic_set_vapic_addr()
1949 &vcpu->arch.apic->vapic_cache, in kvm_lapic_set_vapic_addr()
1952 __set_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention); in kvm_lapic_set_vapic_addr()
1954 __clear_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention); in kvm_lapic_set_vapic_addr()
1957 vcpu->arch.apic->vapic_addr = vapic_addr; in kvm_lapic_set_vapic_addr()
1961 int kvm_x2apic_msr_write(struct kvm_vcpu *vcpu, u32 msr, u64 data) in kvm_x2apic_msr_write() argument
1963 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_x2apic_msr_write()
1966 if (!irqchip_in_kernel(vcpu->kvm) || !apic_x2apic_mode(apic)) in kvm_x2apic_msr_write()
1978 int kvm_x2apic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data) in kvm_x2apic_msr_read() argument
1980 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_x2apic_msr_read()
1983 if (!irqchip_in_kernel(vcpu->kvm) || !apic_x2apic_mode(apic)) in kvm_x2apic_msr_read()
2002 int kvm_hv_vapic_msr_write(struct kvm_vcpu *vcpu, u32 reg, u64 data) in kvm_hv_vapic_msr_write() argument
2004 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_hv_vapic_msr_write()
2006 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_hv_vapic_msr_write()
2015 int kvm_hv_vapic_msr_read(struct kvm_vcpu *vcpu, u32 reg, u64 *data) in kvm_hv_vapic_msr_read() argument
2017 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_hv_vapic_msr_read()
2020 if (!kvm_vcpu_has_lapic(vcpu)) in kvm_hv_vapic_msr_read()
2033 int kvm_lapic_enable_pv_eoi(struct kvm_vcpu *vcpu, u64 data) in kvm_lapic_enable_pv_eoi() argument
2039 vcpu->arch.pv_eoi.msr_val = data; in kvm_lapic_enable_pv_eoi()
2040 if (!pv_eoi_enabled(vcpu)) in kvm_lapic_enable_pv_eoi()
2042 return kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.pv_eoi.data, in kvm_lapic_enable_pv_eoi()
2046 void kvm_apic_accept_events(struct kvm_vcpu *vcpu) in kvm_apic_accept_events() argument
2048 struct kvm_lapic *apic = vcpu->arch.apic; in kvm_apic_accept_events()
2052 if (!kvm_vcpu_has_lapic(vcpu) || !apic->pending_events) in kvm_apic_accept_events()
2058 kvm_lapic_reset(vcpu); in kvm_apic_accept_events()
2059 kvm_vcpu_reset(vcpu); in kvm_apic_accept_events()
2060 if (kvm_vcpu_is_bsp(apic->vcpu)) in kvm_apic_accept_events()
2061 vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; in kvm_apic_accept_events()
2063 vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED; in kvm_apic_accept_events()
2066 vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED) { in kvm_apic_accept_events()
2071 vcpu->vcpu_id, sipi_vector); in kvm_apic_accept_events()
2072 kvm_vcpu_deliver_sipi_vector(vcpu, sipi_vector); in kvm_apic_accept_events()
2073 vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; in kvm_apic_accept_events()