diff options
Diffstat (limited to 'target/i386/kvm_i386.h')
-rw-r--r-- | target/i386/kvm_i386.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/target/i386/kvm_i386.h b/target/i386/kvm_i386.h new file mode 100644 index 0000000000..76079295b2 --- /dev/null +++ b/target/i386/kvm_i386.h @@ -0,0 +1,48 @@ +/* + * QEMU KVM support -- x86 specific functions. + * + * Copyright (c) 2012 Linaro Limited + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_KVM_I386_H +#define QEMU_KVM_I386_H + +#include "sysemu/kvm.h" + +#define kvm_apic_in_kernel() (kvm_irqchip_in_kernel()) + +bool kvm_allows_irq0_override(void); +bool kvm_has_smm(void); +void kvm_synchronize_all_tsc(void); +void kvm_arch_reset_vcpu(X86CPU *cs); +void kvm_arch_do_init_vcpu(X86CPU *cs); + +int kvm_device_pci_assign(KVMState *s, PCIHostDeviceAddress *dev_addr, + uint32_t flags, uint32_t *dev_id); +int kvm_device_pci_deassign(KVMState *s, uint32_t dev_id); + +int kvm_device_intx_assign(KVMState *s, uint32_t dev_id, + bool use_host_msi, uint32_t guest_irq); +int kvm_device_intx_set_mask(KVMState *s, uint32_t dev_id, bool masked); +int kvm_device_intx_deassign(KVMState *s, uint32_t dev_id, bool use_host_msi); + +int kvm_device_msi_assign(KVMState *s, uint32_t dev_id, int virq); +int kvm_device_msi_deassign(KVMState *s, uint32_t dev_id); + +bool kvm_device_msix_supported(KVMState *s); +int kvm_device_msix_init_vectors(KVMState *s, uint32_t dev_id, + uint32_t nr_vectors); +int kvm_device_msix_set_vector(KVMState *s, uint32_t dev_id, uint32_t vector, + int virq); +int kvm_device_msix_assign(KVMState *s, uint32_t dev_id); +int kvm_device_msix_deassign(KVMState *s, uint32_t dev_id); + +void kvm_put_apicbase(X86CPU *cpu, uint64_t value); + +bool kvm_enable_x2apic(void); +bool kvm_has_x2apic_api(void); +#endif |