return 0;
 }
 
+/**
+ * iommu_present() - make platform-specific assumptions about an IOMMU
+ * @bus: bus to check
+ *
+ * Do not use this function. You want device_iommu_mapped() instead.
+ *
+ * Return: true if some IOMMU is present and aware of devices on the given bus;
+ * in general it may not be the only IOMMU, and it may not have anything to do
+ * with whatever device you are ultimately interested in.
+ */
 bool iommu_present(const struct bus_type *bus)
 {
-       return bus->iommu_ops != NULL;
+       bool ret = false;
+
+       for (int i = 0; i < ARRAY_SIZE(iommu_buses); i++) {
+               if (iommu_buses[i] == bus) {
+                       spin_lock(&iommu_device_lock);
+                       ret = !list_empty(&iommu_device_list);
+                       spin_unlock(&iommu_device_lock);
+               }
+       }
+       return ret;
 }
 EXPORT_SYMBOL_GPL(iommu_present);