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
