On 3/19/26 1:35 AM, Duan, Zhenzhong wrote:


-----Original Message-----
From: Pierrick Bouvier <[email protected]>
Subject: [PATCH v2 1/2] backends/iommufd.c: report error when /dev/iommu is
not available

In case current kernel does not support /dev/iommu, qemu will probably
fail first because /sys/bus/pci/devices/*/vfio-dev/ is not present,
since QEMU opens it before /dev/iommu.

Instead, report an error directly when completing an iommufd object, to
inform user that kernel does not support it, with a hint about missing
CONFIG_IOMMUFD. We can't do this from initialize as there is no way to
return an error, and we don't want to abort at this step.

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Pierrick Bouvier <[email protected]>
---
backends/iommufd.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/backends/iommufd.c b/backends/iommufd.c
index acfab907c03..2c3ca23ca0f 100644
--- a/backends/iommufd.c
+++ b/backends/iommufd.c
@@ -72,6 +72,12 @@ static bool
iommufd_backend_can_be_deleted(UserCreatable *uc)

static void iommufd_backend_complete(UserCreatable *uc, Error **errp)
{
+    if (!g_file_test("/dev/iommu", G_FILE_TEST_EXISTS)) {
+        error_setg(errp, "/dev/iommu does not exist"
+                         " (is your kernel config missing CONFIG_IOMMUFD?)");
+        return;
+    }
+
     IOMMUFDBackend *be = IOMMUFD_BACKEND(uc);
     const char *name = iommufd_fd_name(be);

I think more accurately it could be:

@@ -82,7 +82,12 @@ static void iommufd_backend_complete(UserCreatable *uc, 
Error **errp)
          } else {
              cpr_save_fd(name, 0, be->fd);
          }
+    } else if (!g_file_test("/dev/iommu", G_FILE_TEST_EXISTS)) {
+        error_setg(errp, "/dev/iommu does not exist"
+                         " (is your kernel config missing CONFIG_IOMMUFD?)");
+        return;
      }
+
  }

Thanks
Zhenzhong

Good for me, will send v3.

Regards,
Pierrick

Reply via email to