diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2012-08-27 08:28:40 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-09-10 15:29:59 +0300 |
commit | b139bd300f4f579c526d153efa4960c380e2b6e3 (patch) | |
tree | 03dcffe9e59867d42804057e951302d4b2c1f580 /target-i386/kvm_i386.h | |
parent | 3ab73842446a9f2d9d78b23daa43ff382679eece (diff) | |
download | hqemu-b139bd300f4f579c526d153efa4960c380e2b6e3.zip hqemu-b139bd300f4f579c526d153efa4960c380e2b6e3.tar.gz |
kvm: i386: Add services required for PCI device assignment
These helpers abstract the interaction of upcoming pci-assign with the
KVM kernel services. Put them under i386 only as other archs will
implement device pass-through via VFIO and not this classic interface.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'target-i386/kvm_i386.h')
-rw-r--r-- | target-i386/kvm_i386.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/target-i386/kvm_i386.h b/target-i386/kvm_i386.h index b82bbf4..f6ab82f 100644 --- a/target-i386/kvm_i386.h +++ b/target-i386/kvm_i386.h @@ -11,6 +11,28 @@ #ifndef QEMU_KVM_I386_H #define QEMU_KVM_I386_H +#include "kvm.h" + bool kvm_allows_irq0_override(void); +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); + #endif |