diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2012-08-17 08:58:59 +0200 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2012-08-23 17:02:33 -0300 |
commit | 59ac4119b4df8f2690482da228cb8ffc53258a24 (patch) | |
tree | 517cc34c9376714b2635481eecb5909d1ae0a0de /target-i386 | |
parent | 9f13b061c7ef6ee4e7df6151141dddb879333c35 (diff) | |
download | qemu-kvm-59ac4119b4df8f2690482da228cb8ffc53258a24.tar.gz |
pci-assign: Replace kvm_assign_set_msix_entry with kvm_device_msix_set_vector
The refactored version cleanly hides the KVM IOCTL structure from the
users and also zeros out the padding field.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'target-i386')
-rw-r--r-- | target-i386/kvm.c | 12 | ||||
-rw-r--r-- | target-i386/kvm_i386.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 8c8eea1b34a..a0adda03a80 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -2173,6 +2173,18 @@ int kvm_device_msix_init_vectors(KVMState *s, uint32_t dev_id, return kvm_vm_ioctl(s, KVM_ASSIGN_SET_MSIX_NR, &msix_nr); } +int kvm_device_msix_set_vector(KVMState *s, uint32_t dev_id, uint32_t vector, + int virq) +{ + struct kvm_assigned_msix_entry msix_entry = { + .assigned_dev_id = dev_id, + .gsi = virq, + .entry = vector, + }; + + return kvm_vm_ioctl(s, KVM_ASSIGN_SET_MSIX_ENTRY, &msix_entry); +} + int kvm_device_msix_deassign(KVMState *s, uint32_t dev_id) { return kvm_deassign_irq_internal(s, dev_id, KVM_DEV_IRQ_GUEST_MSIX | diff --git a/target-i386/kvm_i386.h b/target-i386/kvm_i386.h index aac14eba6b3..bd3b398b123 100644 --- a/target-i386/kvm_i386.h +++ b/target-i386/kvm_i386.h @@ -30,6 +30,8 @@ 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_deassign(KVMState *s, uint32_t dev_id); #endif |