From c0d1bdc684f11ce64720d9e7777a39be20c1a91c Mon Sep 17 00:00:00 2001 From: Mikko Perttunen Date: Thu, 13 Apr 2023 11:22:02 +0300 Subject: [PATCH] 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 Signed-off-by: Mikko Perttunen Signed-off-by: Thierry Reding Link: https://patchwork.freedesktop.org/patch/msgid/20230413082202.114721-2-cyndis@kapsi.fi (cherry picked from commit b02e6e040af7fa7fd59b0eb71d927dbc149bc20d) Bug 4876974 Signed-off-by: Jon Hunter Change-Id: I09ce70f416e56a1a39ce31fb2485e6d28b568230 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3270635 Reviewed-by: Mikko Perttunen Tested-by: mobile promotions Reviewed-by: mobile promotions GVS: buildbot_gerritrpt --- drivers/gpu/host1x/context.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/host1x/context.c b/drivers/gpu/host1x/context.c index fc960767..b5afe70e 100644 --- a/drivers/gpu/host1x/context.c +++ b/drivers/gpu/host1x/context.c @@ -84,6 +84,14 @@ int host1x_memory_context_list_init(struct host1x *host1x) if (!fwspec || !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; }