aboutsummaryrefslogtreecommitdiffstats
path: root/target-i386
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2012-08-17 08:58:59 +0200
committerMarcelo Tosatti <mtosatti@redhat.com>2012-08-23 17:02:33 -0300
commit59ac4119b4df8f2690482da228cb8ffc53258a24 (patch)
tree517cc34c9376714b2635481eecb5909d1ae0a0de /target-i386
parent9f13b061c7ef6ee4e7df6151141dddb879333c35 (diff)
downloadqemu-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.c12
-rw-r--r--target-i386/kvm_i386.h2
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