From 057a384f8e982a6029a661fdf158a80069fca4f1 Mon Sep 17 00:00:00 2001 From: Abdul Rehman Date: Tue, 10 Jul 2018 13:01:56 +0500 Subject: [PATCH] HV: bug fix update RTE if trigger mode or polarity is updated Signed-off-by: Abdul Rehman --- hypervisor/arch/x86/guest/vioapic.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hypervisor/arch/x86/guest/vioapic.c b/hypervisor/arch/x86/guest/vioapic.c index 4bb30ba98..af2a56e52 100644 --- a/hypervisor/arch/x86/guest/vioapic.c +++ b/hypervisor/arch/x86/guest/vioapic.c @@ -406,12 +406,13 @@ vioapic_write(struct vioapic *vioapic, uint32_t addr, uint32_t data) /* remap for active: interrupt mask -> unmask * remap for deactive: interrupt mask & vector set to 0 + * remap for trigger mode change + * remap for polarity change */ - data64 = vioapic->rtbl[pin].reg; - if ((((data64 & IOAPIC_RTE_INTMASK) == IOAPIC_RTE_INTMCLR) - && ((last & IOAPIC_RTE_INTMASK) == IOAPIC_RTE_INTMSET)) - || (((data64 & IOAPIC_RTE_INTMASK) == IOAPIC_RTE_INTMSET) - && ((vioapic->rtbl[pin].reg & IOAPIC_RTE_INTVEC) == 0))) { + if ( (changed & IOAPIC_RTE_INTMASK) != 0UL || + (changed & IOAPIC_RTE_TRGRMOD) != 0UL || + (changed & IOAPIC_RTE_INTPOL ) != 0UL ) { + /* VM enable intr */ struct ptdev_intx_info intx;