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]> Reviewed-by: Cédric Le Goater <[email protected]> Signed-off-by: Pierrick Bouvier <[email protected]> --- backends/iommufd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index acfab907c03..e1fee16acf2 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -82,6 +82,9 @@ 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?)"); } } -- 2.47.3
