From a8e688eb72dc9b2ced42621f78cb8426a6477bb2 Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Tue, 25 Sep 2018 15:45:02 +0800 Subject: [PATCH] HV: Use the variable to fire VHM interrupt This is to do the preparation of switch the notifier vector from PLATFORM_IPI to HYPERVISOR_CALLBACK_VECTOR. Currently the acrn-hypervisor is using the PLATFORM_IPI vector to notify the sos_kernel. And then sos_kernel will handle the notification from acrn hypervisor in PLATFORM_IPI ISR. But as the PLATFORM_IPI ISR can be registered by the other modules, it will have the conflict when trying to register acrn intr ISR. So the HYPERVISOR_CALLBACK_VECTOR will be used instead. Tracked-On: https://github.com/projectacrn/acrn-hypervisor/issues/1325 Signed-off-by: Zhao Yakui Acked-by: Eddie Dong --- hypervisor/common/io_request.c | 4 +++- hypervisor/include/arch/x86/irq.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hypervisor/common/io_request.c b/hypervisor/common/io_request.c index 4b9eaeb0c..2d7e6a54b 100644 --- a/hypervisor/common/io_request.c +++ b/hypervisor/common/io_request.c @@ -7,6 +7,8 @@ #define ACRN_DBG_IOREQUEST 6U +uint32_t acrn_vhm_vector = VECTOR_VIRT_IRQ_VHM; + static void fire_vhm_interrupt(void) { /* @@ -22,7 +24,7 @@ static void fire_vhm_interrupt(void) vcpu = vcpu_from_vid(vm0, 0U); ASSERT(vcpu != NULL, "vcpu_from_vid failed"); - vlapic_intr_edge(vcpu, VECTOR_VIRT_IRQ_VHM); + vlapic_intr_edge(vcpu, acrn_vhm_vector); } static void acrn_print_request(uint16_t vcpu_id, struct vhm_request *req) diff --git a/hypervisor/include/arch/x86/irq.h b/hypervisor/include/arch/x86/irq.h index 141f115f0..93dce4e54 100644 --- a/hypervisor/include/arch/x86/irq.h +++ b/hypervisor/include/arch/x86/irq.h @@ -121,4 +121,6 @@ void cancel_event_injection(struct vcpu *vcpu); void get_cpu_interrupt_info(char *str_arg, int str_max); #endif /* HV_DEBUG */ +extern uint32_t acrn_vhm_vector; + #endif /* ARCH_IRQ_H */