Lines Matching defs:vlapic

68 #include "vlapic.h"
126 static MALLOC_DEFINE(M_VLAPIC, "vlapic", "vlapic");
287 "struct vmx *", "int", "struct vm_exit *", "struct vlapic *");
317 static void vmx_inject_pir(struct vlapic *vlapic);
1462 vmx_inject_interrupts(struct vmx_vcpu *vcpu, struct vlapic *vlapic,
1544 vmx_inject_pir(vlapic);
1561 if (!vlapic_pending_intr(vlapic, &vector))
1622 vlapic_intr_accepted(vlapic, vector);
1636 * emulated vlapic and the hardware assisted virtual APIC.
1939 struct vlapic *vlapic;
1948 vlapic = vm_lapic(vcpu->vcpu);
1951 cr8 = vlapic_get_cr8(vlapic);
1955 vlapic_set_cr8(vlapic, cr8);
2175 vmx_handle_apic_write(struct vmx_vcpu *vcpu, struct vlapic *vlapic,
2195 apic_regs = (uint32_t *)(vlapic->apic_page);
2197 vlapic_self_ipi_handler(vlapic, vector);
2205 vlapic_id_write_handler(vlapic);
2208 vlapic_ldr_write_handler(vlapic);
2211 vlapic_dfr_write_handler(vlapic);
2214 vlapic_svr_write_handler(vlapic);
2217 vlapic_esr_write_handler(vlapic);
2221 error = vlapic_icrlo_write_handler(vlapic, &retu);
2227 vlapic_lvt_write_handler(vlapic, offset);
2230 vlapic_icrtmr_write_handler(vlapic);
2233 vlapic_dcr_write_handler(vlapic);
2384 struct vlapic *vlapic;
2801 vlapic = vm_lapic(vcpu->vcpu);
2803 vmx, vcpuid, vmexit, vlapic);
2804 handled = vmx_handle_apic_write(vcpu, vlapic, qual);
2819 vlapic = vm_lapic(vcpu->vcpu);
2820 vlapic_sync_tpr(vlapic);
3042 struct vlapic *vlapic;
3051 vlapic = vm_lapic(vcpu->vcpu);
3098 vmx_inject_interrupts(vcpu, vlapic, rip);
3143 vmcs_write(VMCS_TPR_THRESHOLD, vlapic_get_cr8(vlapic));
3591 struct vlapic *vlapic;
3673 vlapic = vm_lapic(vcpu->vcpu);
3674 vlapic->ipi_exit = val;
3728 struct vlapic vlapic;
3736 #define VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level, msg) \
3738 VLAPIC_CTR2(vlapic, msg " assert %s-triggered vector %d", \
3740 VLAPIC_CTR1(vlapic, msg " pir0 0x%016lx", pir_desc->pir[0]); \
3741 VLAPIC_CTR1(vlapic, msg " pir1 0x%016lx", pir_desc->pir[1]); \
3742 VLAPIC_CTR1(vlapic, msg " pir2 0x%016lx", pir_desc->pir[2]); \
3743 VLAPIC_CTR1(vlapic, msg " pir3 0x%016lx", pir_desc->pir[3]); \
3744 VLAPIC_CTR1(vlapic, msg " notify: %s", notify ? "yes" : "no"); \
3748 * vlapic->ops handlers that utilize the APICv hardware assist described in
3752 vmx_set_intr_ready(struct vlapic *vlapic, int vector, bool level)
3759 vlapic_vtx = (struct vlapic_vtx *)vlapic;
3802 VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level,
3808 vmx_pending_intr(struct vlapic *vlapic, int *vecptr)
3824 vlapic_vtx = (struct vlapic_vtx *)vlapic;
3826 lapic = vlapic->apic_page;
3835 vmexit = vm_exitinfo(vlapic->vcpu);
3857 VLAPIC_CTR1(vlapic, "HLT with non-zero PPR %d", lapic->ppr);
3887 vmx_intr_accepted(struct vlapic *vlapic, int vector)
3894 vmx_set_tmr(struct vlapic *vlapic, int vector, bool level)
3901 KASSERT(!vcpu_is_running(vlapic->vcpu, NULL),
3904 vlapic_vtx = (struct vlapic_vtx *)vlapic;
3919 vmx_enable_x2apic_mode_ts(struct vlapic *vlapic)
3926 vlapic_vtx = (struct vlapic_vtx *)vlapic;
3942 vmx_enable_x2apic_mode_vid(struct vlapic *vlapic)
3951 vlapic_vtx = (struct vlapic_vtx *)vlapic;
3968 if (vlapic->vcpuid == 0) {
3988 vmx_post_intr(struct vlapic *vlapic, int hostcpu)
3999 vmx_inject_pir(struct vlapic *vlapic)
4008 vlapic_vtx = (struct vlapic_vtx *)vlapic;
4011 VLAPIC_CTR0(vlapic, "vmx_inject_pir: "
4018 lapic = vlapic->apic_page;
4052 VLAPIC_CTR_IRR(vlapic, "vmx_inject_pir");
4081 VLAPIC_CTR2(vlapic, "vmx_inject_pir: "
4088 static struct vlapic *
4093 struct vlapic *vlapic;
4099 vlapic = malloc(sizeof(struct vlapic_vtx), M_VLAPIC, M_WAITOK | M_ZERO);
4100 vlapic->vm = vmx->vm;
4101 vlapic->vcpu = vcpu->vcpu;
4102 vlapic->vcpuid = vcpu->vcpuid;
4103 vlapic->apic_page = (struct LAPIC *)vcpu->apic_page;
4105 vlapic_vtx = (struct vlapic_vtx *)vlapic;
4110 vlapic->ops.enable_x2apic_mode = vmx_enable_x2apic_mode_ts;
4114 vlapic->ops.set_intr_ready = vmx_set_intr_ready;
4115 vlapic->ops.pending_intr = vmx_pending_intr;
4116 vlapic->ops.intr_accepted = vmx_intr_accepted;
4117 vlapic->ops.set_tmr = vmx_set_tmr;
4118 vlapic->ops.enable_x2apic_mode = vmx_enable_x2apic_mode_vid;
4122 vlapic->ops.post_intr = vmx_post_intr;
4124 vlapic_init(vlapic);
4126 return (vlapic);
4130 vmx_vlapic_cleanup(struct vlapic *vlapic)
4133 vlapic_cleanup(vlapic);
4134 free(vlapic, M_VLAPIC);