From ca3d4fca55fe12310a6800fea81929984ccdfade Mon Sep 17 00:00:00 2001 From: "Li, Fei1" Date: Mon, 4 Mar 2019 23:54:14 +0800 Subject: [PATCH] hv: vlapic: move LVT IRQ vector check to vlapic_fire_lvt We could simple the vector check for LVT IRQ by move this check to vlapic_fire_lvt when the IRQ is fixed mode. Tracked-On: #1842 Signed-off-by: Li, Fei1 --- hypervisor/arch/x86/guest/vlapic.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/hypervisor/arch/x86/guest/vlapic.c b/hypervisor/arch/x86/guest/vlapic.c index 078587a508..bf65dca8fb 100644 --- a/hypervisor/arch/x86/guest/vlapic.c +++ b/hypervisor/arch/x86/guest/vlapic.c @@ -793,9 +793,7 @@ vlapic_fire_lvt(struct acrn_vlapic *vlapic, uint32_t lvt) switch (mode) { case APIC_LVT_DM_FIXED: - if (vlapic_accept_intr(vlapic, vec, LAPIC_TRIG_EDGE)) { - vcpu_make_request(vcpu, ACRN_REQUEST_EVENT); - } + vlapic_set_intr(vcpu, vec, LAPIC_TRIG_EDGE); break; case APIC_LVT_DM_NMI: vcpu_inject_nmi(vcpu); @@ -969,7 +967,7 @@ vlapic_set_error(struct acrn_vlapic *vlapic, uint32_t mask) static int32_t vlapic_trigger_lvt(struct acrn_vlapic *vlapic, uint32_t lvt_index) { - uint32_t lvt, vec, mode; + uint32_t lvt; int32_t ret = 0; struct acrn_vcpu *vcpu = vlapic->vcpu; @@ -1027,13 +1025,7 @@ vlapic_trigger_lvt(struct acrn_vlapic *vlapic, uint32_t lvt_index) } if (ret == 0) { - vec = lvt & APIC_LVT_VECTOR; - mode = lvt & APIC_LVT_DM; - if ((mode == APIC_LVT_DM_FIXED) && (vec < 16U)) { - vlapic_set_error(vlapic, APIC_ESR_RECEIVE_ILLEGAL_VECTOR); - } else { - vlapic_fire_lvt(vlapic, lvt); - } + vlapic_fire_lvt(vlapic, lvt); } } return ret;