@@ -1164,3 +1164,30 @@ int kvm_reinject_control(kvm_context_t kvm, int pit_reinject)
#endif
return -ENOSYS;
}
+
+#ifdef KVM_CAP_GSI_ROUTE
+int kvm_request_gsi_route(kvm_context_t kvm,
+ struct kvm_gsi_route_guest *route)
+{
+ int ret;
+
+ ret = ioctl(kvm->vm_fd, KVM_REQUEST_GSI_ROUTE, route);
+ if (ret < 0)
+ return -errno;
+
+ return ret;
+}
+
+int kvm_free_gsi_route(kvm_context_t kvm,
+ struct kvm_gsi_route_guest *route)
+{
+ int ret;
+
+ ret = ioctl(kvm->vm_fd, KVM_FREE_GSI_ROUTE, route);
+ if (ret < 0)
+ return -errno;
+
+ return ret;
+}
+
+#endif
@@ -720,4 +720,12 @@ int kvm_assign_irq(kvm_context_t kvm,
*/
int kvm_destroy_memory_region_works(kvm_context_t kvm);
#endif
+
+#ifdef KVM_CAP_GSI_ROUTE
+int kvm_request_gsi_route(kvm_context_t kvm,
+ struct kvm_gsi_route_guest *route);
+int kvm_free_gsi_route(kvm_context_t kvm,
+ struct kvm_gsi_route_guest *route);
+#endif
+
#endif
Signed-off-by: Sheng Yang <sheng@linux.intel.com> --- libkvm/libkvm.c | 27 +++++++++++++++++++++++++++ libkvm/libkvm.h | 8 ++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)