Message ID | 3ae004dfc581fa12fc9432c5008f1225882d5464.1713523251.git.robin.murphy@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | iommu: Remove iommu_fwspec ops | expand |
On Fri, Apr 19, 2024 at 6:56 PM Robin Murphy <robin.murphy@arm.com> wrote: > > Now that iommu_fwspec_init() can signal for probe deferral directly, > acpi_iommu_fwspec_ops() is unneeded and can be cleaned up. > > Signed-off-by: Robin Murphy <robin.murphy@arm.com> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- > drivers/acpi/scan.c | 30 ++++++------------------------ > 1 file changed, 6 insertions(+), 24 deletions(-) > > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c > index 9d36fc3dc5ac..d6b64dcbf9a6 100644 > --- a/drivers/acpi/scan.c > +++ b/drivers/acpi/scan.c > @@ -1588,26 +1588,14 @@ int acpi_iommu_fwspec_init(struct device *dev, u32 id, > return ret; > } > > -static inline const struct iommu_ops *acpi_iommu_fwspec_ops(struct device *dev) > -{ > - struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev); > - > - return fwspec ? fwspec->ops : NULL; > -} > - > static int acpi_iommu_configure_id(struct device *dev, const u32 *id_in) > { > int err; > - const struct iommu_ops *ops; > > /* Serialise to make dev->iommu stable under our potential fwspec */ > mutex_lock(&iommu_probe_device_lock); > - /* > - * If we already translated the fwspec there is nothing left to do, > - * return the iommu_ops. > - */ > - ops = acpi_iommu_fwspec_ops(dev); > - if (ops) { > + /* If we already translated the fwspec there is nothing left to do */ > + if (dev_iommu_fwspec_get(dev)) { > mutex_unlock(&iommu_probe_device_lock); > return 0; > } > @@ -1624,16 +1612,7 @@ static int acpi_iommu_configure_id(struct device *dev, const u32 *id_in) > if (!err && dev->bus) > err = iommu_probe_device(dev); > > - /* Ignore all other errors apart from EPROBE_DEFER */ > - if (err == -EPROBE_DEFER) { > - return err; > - } else if (err) { > - dev_dbg(dev, "Adding to IOMMU failed: %d\n", err); > - return -ENODEV; > - } > - if (!acpi_iommu_fwspec_ops(dev)) > - return -ENODEV; > - return 0; > + return err; > } > > #else /* !CONFIG_IOMMU_API */ > @@ -1672,6 +1651,9 @@ int acpi_dma_configure_id(struct device *dev, enum dev_dma_attr attr, > ret = acpi_iommu_configure_id(dev, input_id); > if (ret == -EPROBE_DEFER) > return -EPROBE_DEFER; > + /* Ignore all other errors apart from EPROBE_DEFER */ > + if (ret) > + dev_dbg(dev, "Adding to IOMMU failed: %d\n", ret); > > arch_setup_dma_ops(dev, attr == DEV_DMA_COHERENT); > > -- > 2.39.2.101.g768bb238c484.dirty >
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 9d36fc3dc5ac..d6b64dcbf9a6 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1588,26 +1588,14 @@ int acpi_iommu_fwspec_init(struct device *dev, u32 id, return ret; } -static inline const struct iommu_ops *acpi_iommu_fwspec_ops(struct device *dev) -{ - struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev); - - return fwspec ? fwspec->ops : NULL; -} - static int acpi_iommu_configure_id(struct device *dev, const u32 *id_in) { int err; - const struct iommu_ops *ops; /* Serialise to make dev->iommu stable under our potential fwspec */ mutex_lock(&iommu_probe_device_lock); - /* - * If we already translated the fwspec there is nothing left to do, - * return the iommu_ops. - */ - ops = acpi_iommu_fwspec_ops(dev); - if (ops) { + /* If we already translated the fwspec there is nothing left to do */ + if (dev_iommu_fwspec_get(dev)) { mutex_unlock(&iommu_probe_device_lock); return 0; } @@ -1624,16 +1612,7 @@ static int acpi_iommu_configure_id(struct device *dev, const u32 *id_in) if (!err && dev->bus) err = iommu_probe_device(dev); - /* Ignore all other errors apart from EPROBE_DEFER */ - if (err == -EPROBE_DEFER) { - return err; - } else if (err) { - dev_dbg(dev, "Adding to IOMMU failed: %d\n", err); - return -ENODEV; - } - if (!acpi_iommu_fwspec_ops(dev)) - return -ENODEV; - return 0; + return err; } #else /* !CONFIG_IOMMU_API */ @@ -1672,6 +1651,9 @@ int acpi_dma_configure_id(struct device *dev, enum dev_dma_attr attr, ret = acpi_iommu_configure_id(dev, input_id); if (ret == -EPROBE_DEFER) return -EPROBE_DEFER; + /* Ignore all other errors apart from EPROBE_DEFER */ + if (ret) + dev_dbg(dev, "Adding to IOMMU failed: %d\n", ret); arch_setup_dma_ops(dev, attr == DEV_DMA_COHERENT);
Now that iommu_fwspec_init() can signal for probe deferral directly, acpi_iommu_fwspec_ops() is unneeded and can be cleaned up. Signed-off-by: Robin Murphy <robin.murphy@arm.com> --- drivers/acpi/scan.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-)