On 7/3/25 21:33, Richard Henderson wrote:
> On 3/7/25 10:03, Philippe Mathieu-Daudé wrote:
>> iommufd_builtin() can be used to check at runtime whether
>> the IOMMUFD feature is built in a qemu-system binary.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> docs/devel/vfio-iommufd.rst | 2 +-
>> include/system/iommufd.h | 8 ++++++++
>> 2 files changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst
>> index 3d1c11f175e..08882094eee 100644
>> --- a/docs/devel/vfio-iommufd.rst
>> +++ b/docs/devel/vfio-iommufd.rst
>> @@ -88,7 +88,7 @@ Step 2: configure QEMU
>> ----------------------
>> Interactions with the ``/dev/iommu`` are abstracted by a new iommufd
>> -object (compiled in with the ``CONFIG_IOMMUFD`` option).
>> +object (which availability can be checked at runtime using
>> ``iommufd_builtin()``).
>> Any QEMU device (e.g. VFIO device) wishing to use ``/dev/iommu`` must
>> be linked with an iommufd object. It gets a new optional property
>> diff --git a/include/system/iommufd.h b/include/system/iommufd.h
>> index cbab75bfbf6..ce459254025 100644
>> --- a/include/system/iommufd.h
>> +++ b/include/system/iommufd.h
>> @@ -63,4 +63,12 @@ bool
>> iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *be, uint32_t hwpt_id,
>> Error **errp);
>> #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD TYPE_HOST_IOMMU_DEVICE "-
>> iommufd"
>> +
>> +static inline bool iommufd_builtin(void)
>> +{
>> + bool ambig = false;
>> +
>> + return object_resolve_path_type("", TYPE_IOMMUFD_BACKEND, &ambig)
>> || ambig;
>> +}
>> +
>> #endif
>
> Interesting solution.
Actually this isn't appropriate as this checks for an *instance*, while
we only want the *class*.
I'll respin a different approach.