summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/host1x
diff options
context:
space:
mode:
authorMikko Perttunen <mperttunen@nvidia.com>2023-04-13 11:22:02 +0300
committerThierry Reding <treding@nvidia.com>2023-07-27 18:41:59 +0200
commitb02e6e040af7fa7fd59b0eb71d927dbc149bc20d (patch)
tree91c82f223bd5887801027b723b5b18c7d28123d9 /drivers/gpu/host1x
parentcf8d3223218744d29793071ec6d61eba29057d90 (diff)
downloadlinux-b02e6e040af7fa7fd59b0eb71d927dbc149bc20d.tar.gz
linux-b02e6e040af7fa7fd59b0eb71d927dbc149bc20d.tar.bz2
linux-b02e6e040af7fa7fd59b0eb71d927dbc149bc20d.zip
gpu: host1x: Return error when context device not attached to IOMMU
If a context device was not attached to IOMMU, we kept the old success err value causing context devices to be unregistered but success to be returned. This would mean that things would go on but with context isolation disabled. To decide on an explicit behavior, let's return an error code here instead. If someone wants to go without IOMMU on a platform modern enough to support context isolation, they can remove the context devices from device tree. Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230413082202.114721-2-cyndis@kapsi.fi
Diffstat (limited to 'drivers/gpu/host1x')
-rw-r--r--drivers/gpu/host1x/context.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/host1x/context.c b/drivers/gpu/host1x/context.c
index c000d4e0c2c6..a3f336edd991 100644
--- a/drivers/gpu/host1x/context.c
+++ b/drivers/gpu/host1x/context.c
@@ -79,6 +79,14 @@ int host1x_memory_context_list_init(struct host1x *host1x)
!device_iommu_mapped(&ctx->dev)) {
dev_err(host1x->dev, "Context device %d has no IOMMU!\n", i);
device_unregister(&ctx->dev);
+
+ /*
+ * This means that if IOMMU is disabled but context devices
+ * are defined in the device tree, Host1x will fail to probe.
+ * That's probably OK in this time and age.
+ */
+ err = -EINVAL;
+
goto unreg_devices;
}
}