1 /* 2 * QEMU KVM Hyper-V support 3 * 4 * Copyright (C) 2015 Andrey Smetanin <asmetanin@virtuozzo.com> 5 * 6 * Authors: 7 * Andrey Smetanin <asmetanin@virtuozzo.com> 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or later. 10 * See the COPYING file in the top-level directory. 11 * 12 */ 13 14 #ifndef TARGET_I386_HYPERV_H 15 #define TARGET_I386_HYPERV_H 16 17 #include "cpu.h" 18 #include "sysemu/kvm.h" 19 #include "qemu/event_notifier.h" 20 21 typedef struct HvSintRoute HvSintRoute; 22 typedef void (*HvSintAckClb)(HvSintRoute *sint_route); 23 24 struct HvSintRoute { 25 uint32_t sint; 26 uint32_t vp_index; 27 int gsi; 28 EventNotifier sint_set_notifier; 29 EventNotifier sint_ack_notifier; 30 HvSintAckClb sint_ack_clb; 31 }; 32 33 int kvm_hv_handle_exit(X86CPU *cpu, struct kvm_hyperv_exit *exit); 34 35 HvSintRoute *kvm_hv_sint_route_create(uint32_t vp_index, uint32_t sint, 36 HvSintAckClb sint_ack_clb); 37 38 void kvm_hv_sint_route_destroy(HvSintRoute *sint_route); 39 40 int kvm_hv_sint_route_set_sint(HvSintRoute *sint_route); 41 42 uint32_t hyperv_vp_index(X86CPU *cpu); 43 X86CPU *hyperv_find_vcpu(uint32_t vp_index); 44 45 #endif 46