2015-07-03 15:01:34 +03:00
/*
* KVM Microsoft Hyper - V emulation
*
* derived from arch / x86 / kvm / x86 . c
*
* Copyright ( C ) 2006 Qumranet , Inc .
* Copyright ( C ) 2008 Qumranet , Inc .
* Copyright IBM Corporation , 2008
* Copyright 2010 Red Hat , Inc . and / or its affiliates .
* Copyright ( C ) 2015 Andrey Smetanin < asmetanin @ virtuozzo . com >
*
* Authors :
* Avi Kivity < avi @ qumranet . com >
* Yaniv Kamay < yaniv @ qumranet . com >
* Amit Shah < amit . shah @ qumranet . com >
* Ben - Ami Yassour < benami @ il . ibm . com >
* Andrey Smetanin < asmetanin @ virtuozzo . com >
*
* This work is licensed under the terms of the GNU GPL , version 2. See
* the COPYING file in the top - level directory .
*
*/
# ifndef __ARCH_X86_KVM_HYPERV_H__
# define __ARCH_X86_KVM_HYPERV_H__
2015-11-10 15:36:34 +03:00
static inline struct kvm_vcpu_hv_synic * vcpu_to_synic ( struct kvm_vcpu * vcpu )
{
return & vcpu - > arch . hyperv . synic ;
}
static inline struct kvm_vcpu * synic_to_vcpu ( struct kvm_vcpu_hv_synic * synic )
{
struct kvm_vcpu_hv * hv ;
struct kvm_vcpu_arch * arch ;
hv = container_of ( synic , struct kvm_vcpu_hv , synic ) ;
arch = container_of ( hv , struct kvm_vcpu_arch , hyperv ) ;
return container_of ( arch , struct kvm_vcpu , arch ) ;
}
2015-11-30 19:22:17 +03:00
int kvm_hv_set_msr_common ( struct kvm_vcpu * vcpu , u32 msr , u64 data , bool host ) ;
int kvm_hv_get_msr_common ( struct kvm_vcpu * vcpu , u32 msr , u64 * pdata ) ;
bool kvm_hv_hypercall_enabled ( struct kvm * kvm ) ;
int kvm_hv_hypercall ( struct kvm_vcpu * vcpu ) ;
2015-11-10 15:36:34 +03:00
2015-11-30 19:22:17 +03:00
void kvm_hv_irq_routing_update ( struct kvm * kvm ) ;
int kvm_hv_synic_set_irq ( struct kvm * kvm , u32 vcpu_id , u32 sint ) ;
void kvm_hv_synic_send_eoi ( struct kvm_vcpu * vcpu , int vector ) ;
2015-11-10 15:36:34 +03:00
int kvm_hv_activate_synic ( struct kvm_vcpu * vcpu ) ;
2015-11-30 19:22:17 +03:00
void kvm_hv_vcpu_init ( struct kvm_vcpu * vcpu ) ;
2015-07-03 15:01:34 +03:00
# endif