Re: [PATCH 6/8] iommu: Retire bus ops

From: Baolu Lu
Date: Thu Jan 26 2023 - 07:37:26 EST


On 2023/1/20 20:31, Robin Murphy wrote:
On 2023-01-20 00:27, Baolu Lu wrote:
On 2023/1/20 3:18, Robin Murphy wrote:
+    /*
+     * For FDT-based systems and ACPI IORT/VIOT, drivers register IOMMU
+     * instances with non-NULL fwnodes, and client devices should have been
+     * identified with a fwspec by this point. For Intel/AMD/s390/PAMU we
+     * can assume a single active driver with global ops, and so grab those
+     * from any registered instance, cheekily co-opting the same mechanism.
+     */
+    fwspec = dev_iommu_fwspec_get(dev);
+    if (fwspec && fwspec->ops)
+        ops = fwspec->ops;
+    else
+        ops = iommu_ops_from_fwnode(NULL);

I'm imagining if Intel/AMD/s390 drivers need to give up global ops.
Is there any way to allow them to make such conversion? I am just
thinking about whether this is a hard limitation for these drivers.

Yes, they could perhaps bodge into the existing fwnode mechanism, or we could make bigger changes to adapt and generalise the whole instance-registration-token-lookup concept, or if the driver can resolve the correct instance for a device internally, then it could suffice to just have all its device ops share a single common .probe_device implementation that does the right thing.

Yes. Sharing a common .probe_device entry and let the IOMMU driver
connect the device and its iommu ops is a feasible solution. Thanks!


The comment is merely noting the fact that we can get away without having to worry about those changes just yet, since all the drivers *are* currently still built around the hard constraint of a single set of device ops per bus.

Yes. Fair enough.

--
Best regards,
baolu