2023-04-13 08:36:16

by Mikko Perttunen

[permalink] [raw]
Subject: [PATCH 1/2] drm/tegra: Add error check for NVDEC firmware memory allocation

From: Mikko Perttunen <[email protected]>

The return value for tegra_drm_alloc was missing an error check.
Add one.

Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Mikko Perttunen <[email protected]>
---
drivers/gpu/drm/tegra/nvdec.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/tegra/nvdec.c b/drivers/gpu/drm/tegra/nvdec.c
index ae78a81e5eef..15ce5e89fad4 100644
--- a/drivers/gpu/drm/tegra/nvdec.c
+++ b/drivers/gpu/drm/tegra/nvdec.c
@@ -276,6 +276,8 @@ static int nvdec_load_falcon_firmware(struct nvdec *nvdec)
return err;
} else {
virt = tegra_drm_alloc(tegra, size, &iova);
+ if (IS_ERR(virt))
+ return PTR_ERR(virt);
}

nvdec->falcon.firmware.virt = virt;
--
2.39.2


2023-04-13 08:36:35

by Mikko Perttunen

[permalink] [raw]
Subject: [PATCH 2/2] gpu: host1x: Return error when context device not attached to IOMMU

From: Mikko Perttunen <[email protected]>

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 <[email protected]>
Signed-off-by: Mikko Perttunen <[email protected]>
---
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 9ad89d22c0ca..c45c4d4e6c1a 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;
}
}
--
2.39.2