On 6/6/25 1:28 AM, Tomeu Vizoso wrote:
This uses the SHMEM DRM helpers and we map right away to the CPU and NPU sides, as all buffers are expected to be accessed from both.
v2:
- Sync the IOMMUs for the other cores when mapping and unmapping.
v3:
- Make use of GPL-2.0-only for the copyright notice (Jeff Hugo)
v6:
- Use mutexes guard (Markus Elfring)
v7:
- Assign its own IOMMU domain to each client, for isolation (Daniel Stone and Robin Murphy)
Reviewed-by: Jeffrey Hugo quic_jhugo@quicinc.com Signed-off-by: Tomeu Vizoso tomeu@tomeuvizoso.net
drivers/accel/rocket/Makefile | 3 +- drivers/accel/rocket/rocket_device.c | 4 ++ drivers/accel/rocket/rocket_device.h | 2 + drivers/accel/rocket/rocket_drv.c | 7 ++- drivers/accel/rocket/rocket_gem.c | 115 +++++++++++++++++++++++++++++++++++ drivers/accel/rocket/rocket_gem.h | 27 ++++++++ include/uapi/drm/rocket_accel.h | 44 ++++++++++++++ 7 files changed, 200 insertions(+), 2 deletions(-)
diff --git a/drivers/accel/rocket/Makefile b/drivers/accel/rocket/Makefile index abdd75f2492eaecf8bf5e78a2ac150ea19ac3e96..4deef267f9e1238c4d8bd108dcc8afd9dc8b2b8f 100644 --- a/drivers/accel/rocket/Makefile +++ b/drivers/accel/rocket/Makefile @@ -5,4 +5,5 @@ obj-$(CONFIG_DRM_ACCEL_ROCKET) := rocket.o rocket-y := \ rocket_core.o \ rocket_device.o \
- rocket_drv.o
- rocket_drv.o \
- rocket_gem.o
diff --git a/drivers/accel/rocket/rocket_device.c b/drivers/accel/rocket/rocket_device.c index a05c103e117e3eaa6439884b7acb6e3483296edb..5e559104741af22c528914c96e44558323ab6c89 100644 --- a/drivers/accel/rocket/rocket_device.c +++ b/drivers/accel/rocket/rocket_device.c @@ -4,6 +4,7 @@ #include <linux/array_size.h> #include <linux/clk.h> #include <linux/dev_printk.h> +#include <linux/mutex.h> #include "rocket_device.h" @@ -16,10 +17,13 @@ int rocket_device_init(struct rocket_device *rdev) if (err) return err;
- mutex_init(&rdev->iommu_lock);
devm_mutex_init() again keeps you from needing rocket_device_fini(). Same in the next patch even if you don't end up needing the iommu_lock.
Andrew