[PATCH 0/5] New DRM accel driver for Texas Instruments' C7x DSPs

Tomeu Vizoso posted 5 patches 3 weeks, 5 days ago
There is a newer version of this series
Documentation/accel/thames/index.rst               |  28 ++
MAINTAINERS                                        |   9 +
.../boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi      |  11 +-
drivers/accel/Kconfig                              |   1 +
drivers/accel/Makefile                             |   3 +-
drivers/accel/thames/Kconfig                       |  26 ++
drivers/accel/thames/Makefile                      |  11 +
drivers/accel/thames/thames_core.c                 | 161 +++++++
drivers/accel/thames/thames_core.h                 |  53 +++
drivers/accel/thames/thames_device.c               |  93 +++++
drivers/accel/thames/thames_device.h               |  46 ++
drivers/accel/thames/thames_drv.c                  | 180 ++++++++
drivers/accel/thames/thames_drv.h                  |  21 +
drivers/accel/thames/thames_gem.c                  | 407 ++++++++++++++++++
drivers/accel/thames/thames_gem.h                  |  45 ++
drivers/accel/thames/thames_ipc.h                  | 204 +++++++++
drivers/accel/thames/thames_job.c                  | 463 +++++++++++++++++++++
drivers/accel/thames/thames_job.h                  |  51 +++
drivers/accel/thames/thames_rpmsg.c                | 276 ++++++++++++
drivers/accel/thames/thames_rpmsg.h                |  27 ++
20 files changed, 2113 insertions(+), 3 deletions(-)
[PATCH 0/5] New DRM accel driver for Texas Instruments' C7x DSPs
Posted by Tomeu Vizoso 3 weeks, 5 days ago
This series adds a new DRM/Accel driver that supports the C7x DSPs
inside some Texas Instruments SoCs such as the J722S. These can be used
as accelerators for various workloads, including machine learning
inference.

This driver controls the power state of the hardware via remoteproc and
communicates with the firmware running on the DSP via rpmsg_virtio.  The
kernel driver itself allocates buffers, manages contexts, and submits
jobs to the DSP firmware. Buffers are mapped by the DSP itself using its
MMU, providing memory isolation among different clients.

The source code for the firmware running on the DSP is available at:
https://gitlab.freedesktop.org/tomeu/thames_firmware/.

Everything else is done in userspace, as a Gallium driver (also called
thames) that is part of the Mesa3D project: https://docs.mesa3d.org/teflon.html

If there is more than one core that advertises the same rpmsg_virtio
service name, the driver will load balance jobs between them with
drm-gpu-scheduler.

Userspace portion of the driver: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39298

Signed-off-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
---
Tomeu Vizoso (5):
      arm64: dts: ti: k3-j722s-ti-ipc-firmware: Add memory pool for DSP i/o buffers
      accel/thames: Add driver for the C7x DSPs in TI SoCs
      accel/thames: Add IOCTLs for BO creation and mapping
      accel/thames: Add IOCTL for job submission
      accel/thames: Add IOCTL for memory synchronization

 Documentation/accel/thames/index.rst               |  28 ++
 MAINTAINERS                                        |   9 +
 .../boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi      |  11 +-
 drivers/accel/Kconfig                              |   1 +
 drivers/accel/Makefile                             |   3 +-
 drivers/accel/thames/Kconfig                       |  26 ++
 drivers/accel/thames/Makefile                      |  11 +
 drivers/accel/thames/thames_core.c                 | 161 +++++++
 drivers/accel/thames/thames_core.h                 |  53 +++
 drivers/accel/thames/thames_device.c               |  93 +++++
 drivers/accel/thames/thames_device.h               |  46 ++
 drivers/accel/thames/thames_drv.c                  | 180 ++++++++
 drivers/accel/thames/thames_drv.h                  |  21 +
 drivers/accel/thames/thames_gem.c                  | 407 ++++++++++++++++++
 drivers/accel/thames/thames_gem.h                  |  45 ++
 drivers/accel/thames/thames_ipc.h                  | 204 +++++++++
 drivers/accel/thames/thames_job.c                  | 463 +++++++++++++++++++++
 drivers/accel/thames/thames_job.h                  |  51 +++
 drivers/accel/thames/thames_rpmsg.c                | 276 ++++++++++++
 drivers/accel/thames/thames_rpmsg.h                |  27 ++
 20 files changed, 2113 insertions(+), 3 deletions(-)
---
base-commit: 27927a79b3c6aebd18f38507a8160294243763dc
change-id: 20260113-thames-334127a2d91d

Best regards,
-- 
Tomeu Vizoso <tomeu@tomeuvizoso.net>
Re: [PATCH 0/5] New DRM accel driver for Texas Instruments' C7x DSPs
Posted by Christian König 3 weeks, 5 days ago
On 1/13/26 18:44, Tomeu Vizoso wrote:
> This series adds a new DRM/Accel driver that supports the C7x DSPs
> inside some Texas Instruments SoCs such as the J722S. These can be used
> as accelerators for various workloads, including machine learning
> inference.
> 
> This driver controls the power state of the hardware via remoteproc and
> communicates with the firmware running on the DSP via rpmsg_virtio.  The
> kernel driver itself allocates buffers, manages contexts, and submits
> jobs to the DSP firmware. Buffers are mapped by the DSP itself using its
> MMU, providing memory isolation among different clients.
> 
> The source code for the firmware running on the DSP is available at:
> https://gitlab.freedesktop.org/tomeu/thames_firmware/.
> 
> Everything else is done in userspace, as a Gallium driver (also called
> thames) that is part of the Mesa3D project: https://docs.mesa3d.org/teflon.html
> 
> If there is more than one core that advertises the same rpmsg_virtio
> service name, the driver will load balance jobs between them with
> drm-gpu-scheduler.

I only took 5 minutes to skim over it, so no full review.

You have the classic mistake of allocating memory in the run_job callback of the scheduler, but that is trivial to fix.

Apart from that looks pretty solid to me.

Regards,
Christian.

> 
> Userspace portion of the driver: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39298
> 
> Signed-off-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
> ---
> Tomeu Vizoso (5):
>       arm64: dts: ti: k3-j722s-ti-ipc-firmware: Add memory pool for DSP i/o buffers
>       accel/thames: Add driver for the C7x DSPs in TI SoCs
>       accel/thames: Add IOCTLs for BO creation and mapping
>       accel/thames: Add IOCTL for job submission
>       accel/thames: Add IOCTL for memory synchronization
> 
>  Documentation/accel/thames/index.rst               |  28 ++
>  MAINTAINERS                                        |   9 +
>  .../boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi      |  11 +-
>  drivers/accel/Kconfig                              |   1 +
>  drivers/accel/Makefile                             |   3 +-
>  drivers/accel/thames/Kconfig                       |  26 ++
>  drivers/accel/thames/Makefile                      |  11 +
>  drivers/accel/thames/thames_core.c                 | 161 +++++++
>  drivers/accel/thames/thames_core.h                 |  53 +++
>  drivers/accel/thames/thames_device.c               |  93 +++++
>  drivers/accel/thames/thames_device.h               |  46 ++
>  drivers/accel/thames/thames_drv.c                  | 180 ++++++++
>  drivers/accel/thames/thames_drv.h                  |  21 +
>  drivers/accel/thames/thames_gem.c                  | 407 ++++++++++++++++++
>  drivers/accel/thames/thames_gem.h                  |  45 ++
>  drivers/accel/thames/thames_ipc.h                  | 204 +++++++++
>  drivers/accel/thames/thames_job.c                  | 463 +++++++++++++++++++++
>  drivers/accel/thames/thames_job.h                  |  51 +++
>  drivers/accel/thames/thames_rpmsg.c                | 276 ++++++++++++
>  drivers/accel/thames/thames_rpmsg.h                |  27 ++
>  20 files changed, 2113 insertions(+), 3 deletions(-)
> ---
> base-commit: 27927a79b3c6aebd18f38507a8160294243763dc
> change-id: 20260113-thames-334127a2d91d
> 
> Best regards,