Am Freitag, 6. Juni 2025, 08:28:23 Mitteleuropäische Sommerzeit schrieb Tomeu Vizoso:
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
diff --git a/drivers/accel/rocket/rocket_gem.c b/drivers/accel/rocket/rocket_gem.c new file mode 100644 index 0000000000000000000000000000000000000000..61b7f970a6885aa13784daa1222611a02aa10dee --- /dev/null +++ b/drivers/accel/rocket/rocket_gem.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright 2024-2025 Tomeu Vizoso tomeu@tomeuvizoso.net */
+#include <drm/drm_device.h> +#include <drm/drm_utils.h> +#include <drm/rocket_accel.h> +#include <linux/dma-mapping.h> +#include <linux/iommu.h>
+#include "rocket_device.h" +#include "rocket_drv.h" +#include "rocket_gem.h"
+static void rocket_gem_bo_free(struct drm_gem_object *obj) +{
- struct rocket_device *rdev = to_rocket_device(obj->dev);
- struct rocket_gem_object *bo = to_rocket_bo(obj);
- size_t unmapped;
- drm_WARN_ON(obj->dev, bo->base.pages_use_count > 1);
This should probably be drm_WARN_ON(obj->dev, refcount_read(&bo->base.pages_use_count) > 1);
as pages_use_count is of type refcount_t since commit 051b6646d36d ("drm/shmem-helper: Use refcount_t for pages_use_count")
Heiko
linaro-mm-sig@lists.linaro.org