Getting a copy of the KVM instance is necessary for mapping Guest
pages in the Host.

TODO: Instead of invoking the symbol directly, there needs to be a
better way of getting a copy of the KVM instance probably by using
other notifiers. However, currently, KVM shares its instance only
with VFIO and therefore we are compelled to bind the passthrough'd
device to vfio-pci.

Signed-off-by: Vivek Kasireddy <[email protected]>
---
 drivers/vfio/vfio.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index 4ad8a35667a7..9fb11b1ad3cd 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -2213,11 +2213,20 @@ static int vfio_unregister_iommu_notifier(struct 
vfio_group *group,
        return ret;
 }
 
+extern void vhost_vdmabuf_get_kvm(unsigned long action, void *data);
 void vfio_group_set_kvm(struct vfio_group *group, struct kvm *kvm)
 {
+       void (*fn)(unsigned long, void *);
+
        group->kvm = kvm;
        blocking_notifier_call_chain(&group->notifier,
                                VFIO_GROUP_NOTIFY_SET_KVM, kvm);
+
+       fn = symbol_get(vhost_vdmabuf_get_kvm);
+       if (fn) {
+               fn(VFIO_GROUP_NOTIFY_SET_KVM, kvm);
+               symbol_put(vhost_vdmabuf_get_kvm);
+       }
 }
 EXPORT_SYMBOL_GPL(vfio_group_set_kvm);
 
-- 
2.26.2

_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to