]> git.proxmox.com Git - qemu.git/blobdiff - kvm-all.c
kvm: add API to set ioeventfd
[qemu.git] / kvm-all.c
index 40b5a51f5e806b7f32939b6f1d5d255b3cddd788..6324635d3faf9e2bdf912b1744e5268c33bfa44f 100644 (file)
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1151,3 +1151,25 @@ int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
 
     return r;
 }
+
+#ifdef KVM_IOEVENTFD
+int kvm_set_ioeventfd_pio_word(int fd, uint16_t addr, uint16_t val, bool assign)
+{
+    struct kvm_ioeventfd kick = {
+        .datamatch = val,
+        .addr = addr,
+        .len = 2,
+        .flags = KVM_IOEVENTFD_FLAG_DATAMATCH | KVM_IOEVENTFD_FLAG_PIO,
+        .fd = fd,
+    };
+    int r;
+    if (!kvm_enabled())
+        return -ENOSYS;
+    if (!assign)
+        kick.flags |= KVM_IOEVENTFD_FLAG_DEASSIGN;
+    r = kvm_vm_ioctl(kvm_state, KVM_IOEVENTFD, &kick);
+    if (r < 0)
+        return r;
+    return 0;
+}
+#endif