summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaleb Connolly <caleb.connolly@linaro.org>2024-01-04 17:12:22 +0000
committerTom Rini <trini@konsulko.com>2024-01-18 12:18:48 -0500
commitb18561801164492f63f6a87f6e77e6ebe5529dff (patch)
tree303685f4fe5ef5870166c321b77f6443a35a2bb2
parent9d92c418acfb7576e12e2bd53fed294bb9543724 (diff)
downloadu-boot-b18561801164492f63f6a87f6e77e6ebe5529dff.tar.gz
u-boot-b18561801164492f63f6a87f6e77e6ebe5529dff.tar.bz2
u-boot-b18561801164492f63f6a87f6e77e6ebe5529dff.zip
iommu: dont fail silently
When attempting to probe a device which has an associated IOMMU, if the IOMMU device can't be found (no driver, disabled driver, driver failed to probe, etc) then we currently fail to probe the device with no discernable error. If we fail to hook the device up to its IOMMU, we should make sure that the user knows about it. Write some better error messages for dev_iommu_enable() to facilitate this. Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
-rw-r--r--drivers/iommu/iommu-uclass.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/iommu/iommu-uclass.c b/drivers/iommu/iommu-uclass.c
index 6babc0e3a6..dff3239ccc 100644
--- a/drivers/iommu/iommu-uclass.c
+++ b/drivers/iommu/iommu-uclass.c
@@ -86,16 +86,16 @@ int dev_iommu_enable(struct udevice *dev)
ret = dev_read_phandle_with_args(dev, "iommus",
"#iommu-cells", 0, i, &args);
if (ret) {
- debug("%s: dev_read_phandle_with_args failed: %d\n",
- __func__, ret);
+ log_err("%s: Failed to parse 'iommus' property for '%s': %d\n",
+ __func__, dev->name, ret);
return ret;
}
ret = uclass_get_device_by_ofnode(UCLASS_IOMMU, args.node,
&dev_iommu);
if (ret) {
- debug("%s: uclass_get_device_by_ofnode failed: %d\n",
- __func__, ret);
+ log_err("%s: Failed to find IOMMU device for '%s': %d\n",
+ __func__, dev->name, ret);
return ret;
}
dev->iommu = dev_iommu;
@@ -106,8 +106,11 @@ int dev_iommu_enable(struct udevice *dev)
ops = device_get_ops(dev->iommu);
if (ops && ops->connect) {
ret = ops->connect(dev);
- if (ret)
+ if (ret) {
+ log_err("%s: Failed to connect '%s' to IOMMU '%s': %d\n",
+ __func__, dev->name, dev->iommu->name, ret);
return ret;
+ }
}
}