Lines Matching refs:vlapic
319 static void vmx_inject_pir(struct vlapic *vlapic);
1464 vmx_inject_interrupts(struct vmx_vcpu *vcpu, struct vlapic *vlapic, in vmx_inject_interrupts() argument
1546 vmx_inject_pir(vlapic); in vmx_inject_interrupts()
1563 if (!vlapic_pending_intr(vlapic, &vector)) in vmx_inject_interrupts()
1624 vlapic_intr_accepted(vlapic, vector); in vmx_inject_interrupts()
1941 struct vlapic *vlapic; in vmx_emulate_cr8_access() local
1950 vlapic = vm_lapic(vcpu->vcpu); in vmx_emulate_cr8_access()
1953 cr8 = vlapic_get_cr8(vlapic); in vmx_emulate_cr8_access()
1957 vlapic_set_cr8(vlapic, cr8); in vmx_emulate_cr8_access()
2177 vmx_handle_apic_write(struct vmx_vcpu *vcpu, struct vlapic *vlapic, in vmx_handle_apic_write() argument
2197 apic_regs = (uint32_t *)(vlapic->apic_page); in vmx_handle_apic_write()
2199 vlapic_self_ipi_handler(vlapic, vector); in vmx_handle_apic_write()
2207 vlapic_id_write_handler(vlapic); in vmx_handle_apic_write()
2210 vlapic_ldr_write_handler(vlapic); in vmx_handle_apic_write()
2213 vlapic_dfr_write_handler(vlapic); in vmx_handle_apic_write()
2216 vlapic_svr_write_handler(vlapic); in vmx_handle_apic_write()
2219 vlapic_esr_write_handler(vlapic); in vmx_handle_apic_write()
2223 error = vlapic_icrlo_write_handler(vlapic, &retu); in vmx_handle_apic_write()
2229 vlapic_lvt_write_handler(vlapic, offset); in vmx_handle_apic_write()
2232 vlapic_icrtmr_write_handler(vlapic); in vmx_handle_apic_write()
2235 vlapic_dcr_write_handler(vlapic); in vmx_handle_apic_write()
2386 struct vlapic *vlapic; in vmx_exit_process() local
2803 vlapic = vm_lapic(vcpu->vcpu); in vmx_exit_process()
2805 vmx, vcpuid, vmexit, vlapic); in vmx_exit_process()
2806 handled = vmx_handle_apic_write(vcpu, vlapic, qual); in vmx_exit_process()
2821 vlapic = vm_lapic(vcpu->vcpu); in vmx_exit_process()
2822 vlapic_sync_tpr(vlapic); in vmx_exit_process()
3044 struct vlapic *vlapic; in vmx_run() local
3053 vlapic = vm_lapic(vcpu->vcpu); in vmx_run()
3100 vmx_inject_interrupts(vcpu, vlapic, rip); in vmx_run()
3145 vmcs_write(VMCS_TPR_THRESHOLD, vlapic_get_cr8(vlapic)); in vmx_run()
3593 struct vlapic *vlapic; in vmx_setcap() local
3675 vlapic = vm_lapic(vcpu->vcpu); in vmx_setcap()
3676 vlapic->ipi_exit = val; in vmx_setcap()
3730 struct vlapic vlapic; member
3738 #define VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level, msg) \ argument
3740 VLAPIC_CTR2(vlapic, msg " assert %s-triggered vector %d", \
3742 VLAPIC_CTR1(vlapic, msg " pir0 0x%016lx", pir_desc->pir[0]); \
3743 VLAPIC_CTR1(vlapic, msg " pir1 0x%016lx", pir_desc->pir[1]); \
3744 VLAPIC_CTR1(vlapic, msg " pir2 0x%016lx", pir_desc->pir[2]); \
3745 VLAPIC_CTR1(vlapic, msg " pir3 0x%016lx", pir_desc->pir[3]); \
3746 VLAPIC_CTR1(vlapic, msg " notify: %s", notify ? "yes" : "no"); \
3754 vmx_set_intr_ready(struct vlapic *vlapic, int vector, bool level) in vmx_set_intr_ready() argument
3761 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_set_intr_ready()
3804 VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level, in vmx_set_intr_ready()
3810 vmx_pending_intr(struct vlapic *vlapic, int *vecptr) in vmx_pending_intr() argument
3826 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_pending_intr()
3828 lapic = vlapic->apic_page; in vmx_pending_intr()
3837 vmexit = vm_exitinfo(vlapic->vcpu); in vmx_pending_intr()
3859 VLAPIC_CTR1(vlapic, "HLT with non-zero PPR %d", lapic->ppr); in vmx_pending_intr()
3889 vmx_intr_accepted(struct vlapic *vlapic, int vector) in vmx_intr_accepted() argument
3896 vmx_set_tmr(struct vlapic *vlapic, int vector, bool level) in vmx_set_tmr() argument
3903 KASSERT(!vcpu_is_running(vlapic->vcpu, NULL), in vmx_set_tmr()
3906 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_set_tmr()
3921 vmx_enable_x2apic_mode_ts(struct vlapic *vlapic) in vmx_enable_x2apic_mode_ts() argument
3928 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_enable_x2apic_mode_ts()
3944 vmx_enable_x2apic_mode_vid(struct vlapic *vlapic) in vmx_enable_x2apic_mode_vid() argument
3953 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_enable_x2apic_mode_vid()
3970 if (vlapic->vcpuid == 0) { in vmx_enable_x2apic_mode_vid()
3990 vmx_post_intr(struct vlapic *vlapic, int hostcpu) in vmx_post_intr() argument
4001 vmx_inject_pir(struct vlapic *vlapic) in vmx_inject_pir() argument
4010 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_inject_pir()
4013 VLAPIC_CTR0(vlapic, "vmx_inject_pir: " in vmx_inject_pir()
4020 lapic = vlapic->apic_page; in vmx_inject_pir()
4054 VLAPIC_CTR_IRR(vlapic, "vmx_inject_pir"); in vmx_inject_pir()
4083 VLAPIC_CTR2(vlapic, "vmx_inject_pir: " in vmx_inject_pir()
4090 static struct vlapic *
4095 struct vlapic *vlapic; in vmx_vlapic_init() local
4101 vlapic = malloc(sizeof(struct vlapic_vtx), M_VLAPIC, M_WAITOK | M_ZERO); in vmx_vlapic_init()
4102 vlapic->vm = vmx->vm; in vmx_vlapic_init()
4103 vlapic->vcpu = vcpu->vcpu; in vmx_vlapic_init()
4104 vlapic->vcpuid = vcpu->vcpuid; in vmx_vlapic_init()
4105 vlapic->apic_page = (struct LAPIC *)vcpu->apic_page; in vmx_vlapic_init()
4107 vlapic_vtx = (struct vlapic_vtx *)vlapic; in vmx_vlapic_init()
4112 vlapic->ops.enable_x2apic_mode = vmx_enable_x2apic_mode_ts; in vmx_vlapic_init()
4116 vlapic->ops.set_intr_ready = vmx_set_intr_ready; in vmx_vlapic_init()
4117 vlapic->ops.pending_intr = vmx_pending_intr; in vmx_vlapic_init()
4118 vlapic->ops.intr_accepted = vmx_intr_accepted; in vmx_vlapic_init()
4119 vlapic->ops.set_tmr = vmx_set_tmr; in vmx_vlapic_init()
4120 vlapic->ops.enable_x2apic_mode = vmx_enable_x2apic_mode_vid; in vmx_vlapic_init()
4124 vlapic->ops.post_intr = vmx_post_intr; in vmx_vlapic_init()
4126 vlapic_init(vlapic); in vmx_vlapic_init()
4128 return (vlapic); in vmx_vlapic_init()
4132 vmx_vlapic_cleanup(struct vlapic *vlapic) in vmx_vlapic_cleanup() argument
4135 vlapic_cleanup(vlapic); in vmx_vlapic_cleanup()
4136 free(vlapic, M_VLAPIC); in vmx_vlapic_cleanup()