[PATCH v4 0/2] accel: Add Arm Ethos-U NPU

Rob Herring (Arm) posted 2 patches 2 months ago
There is a newer version of this series
.../devicetree/bindings/npu/arm,ethos.yaml         |  79 +++
MAINTAINERS                                        |   9 +
drivers/accel/Kconfig                              |   1 +
drivers/accel/Makefile                             |   1 +
drivers/accel/ethosu/Kconfig                       |  10 +
drivers/accel/ethosu/Makefile                      |   4 +
drivers/accel/ethosu/ethosu_device.h               | 190 ++++++
drivers/accel/ethosu/ethosu_drv.c                  | 418 ++++++++++++
drivers/accel/ethosu/ethosu_drv.h                  |  15 +
drivers/accel/ethosu/ethosu_gem.c                  | 710 +++++++++++++++++++++
drivers/accel/ethosu/ethosu_gem.h                  |  46 ++
drivers/accel/ethosu/ethosu_job.c                  | 539 ++++++++++++++++
drivers/accel/ethosu/ethosu_job.h                  |  41 ++
include/uapi/drm/ethosu_accel.h                    | 261 ++++++++
14 files changed, 2324 insertions(+)
[PATCH v4 0/2] accel: Add Arm Ethos-U NPU
Posted by Rob Herring (Arm) 2 months ago
The Arm Ethos-U65/85 NPUs are designed for edge AI inference 
applications[0].

The driver works with Mesa Teflon. A merge request for Ethos support is 
here[1]. The UAPI should also be compatible with the downstream (open 
source) driver stack[2] and Vela compiler though that has not been 
implemented.

Testing so far has been on i.MX93 boards with Ethos-U65 and a FVP model 
with Ethos-U85. More work is needed in mesa for handling U85 command 
stream differences, but that doesn't affect the UABI.

A git tree is here[3].

Rob

[0] https://www.arm.com/products/silicon-ip-cpu?families=ethos%20npus
[1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36699/
[2] https://gitlab.arm.com/artificial-intelligence/ethos-u/
[3] git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git ethos-v4

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
Changes in v4:
- Use bulk clk API
- Various whitespace fixes mostly due to ethos->ethosu rename
- Drop error check on dma_set_mask_and_coherent()
- Drop unnecessary pm_runtime_mark_last_busy() call
- Move variable declarations out of switch (a riscv/clang build failure)
- Use lowercase hex in all defines
- Drop unused ethosu_device.coherent member
- Add comments on all locks
- Link to v3: https://lore.kernel.org/r/20250926-ethos-v3-0-6bd24373e4f5@kernel.org

Changes in v3:
- Rework and improve job submit validation                                                            
- Rename ethos to ethosu. There was an Ethos-Nxx that's unrelated.
- Add missing init for sched_lock mutex
- Drop some prints to debug level          
- Fix i.MX93 SRAM accesses (AXI config)
- Add U85 AXI configuration and test on FVP with U85
- Print the current cmd value on timeout                                                              
- Link to v2: https://lore.kernel.org/r/20250811-ethos-v2-0-a219fc52a95b@kernel.org

Changes in v2:
- Rebase on v6.17-rc1 adapting to scheduler changes
- scheduler: Drop the reset workqueue. According to the scheduler docs,
  we don't need it since we have a single h/w queue.
- scheduler: Rework the timeout handling to continue running if we are
  making progress. Fixes timeouts on larger jobs.
- Reset the NPU on resume so it's in a known state
- Add error handling on clk_get() calls
- Fix drm_mm splat on module unload. We were missing a put on the
  cmdstream BO in the scheduler clean-up.
- Fix 0-day report needing explicit bitfield.h include
- Link to v1: https://lore.kernel.org/r/20250722-ethos-v1-0-cc1c5a0cbbfb@kernel.org

---
Rob Herring (Arm) (2):
      dt-bindings: npu: Add Arm Ethos-U65/U85
      accel: Add Arm Ethos-U NPU driver

 .../devicetree/bindings/npu/arm,ethos.yaml         |  79 +++
 MAINTAINERS                                        |   9 +
 drivers/accel/Kconfig                              |   1 +
 drivers/accel/Makefile                             |   1 +
 drivers/accel/ethosu/Kconfig                       |  10 +
 drivers/accel/ethosu/Makefile                      |   4 +
 drivers/accel/ethosu/ethosu_device.h               | 190 ++++++
 drivers/accel/ethosu/ethosu_drv.c                  | 418 ++++++++++++
 drivers/accel/ethosu/ethosu_drv.h                  |  15 +
 drivers/accel/ethosu/ethosu_gem.c                  | 710 +++++++++++++++++++++
 drivers/accel/ethosu/ethosu_gem.h                  |  46 ++
 drivers/accel/ethosu/ethosu_job.c                  | 539 ++++++++++++++++
 drivers/accel/ethosu/ethosu_job.h                  |  41 ++
 include/uapi/drm/ethosu_accel.h                    | 261 ++++++++
 14 files changed, 2324 insertions(+)
---
base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
change-id: 20250715-ethos-3fdd39ef6f19

Best regards,
--  
Rob Herring (Arm) <robh@kernel.org>
Re: [PATCH v4 0/2] accel: Add Arm Ethos-U NPU
Posted by Tomeu Vizoso 2 months ago
On Wed, Oct 15, 2025 at 7:47 PM Rob Herring (Arm) <robh@kernel.org> wrote:
>
> The Arm Ethos-U65/85 NPUs are designed for edge AI inference
> applications[0].
>
> The driver works with Mesa Teflon. A merge request for Ethos support is
> here[1]. The UAPI should also be compatible with the downstream (open
> source) driver stack[2] and Vela compiler though that has not been
> implemented.
>
> Testing so far has been on i.MX93 boards with Ethos-U65 and a FVP model
> with Ethos-U85. More work is needed in mesa for handling U85 command
> stream differences, but that doesn't affect the UABI.
>
> A git tree is here[3].
>
> Rob
>
> [0] https://www.arm.com/products/silicon-ip-cpu?families=ethos%20npus
> [1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36699/
> [2] https://gitlab.arm.com/artificial-intelligence/ethos-u/
> [3] git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git ethos-v4
>
> Signed-off-by: Rob Herring (Arm) <robh@kernel.org>

For the series:

Acked-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>

Regards,

Tomeu


> ---
> Changes in v4:
> - Use bulk clk API
> - Various whitespace fixes mostly due to ethos->ethosu rename
> - Drop error check on dma_set_mask_and_coherent()
> - Drop unnecessary pm_runtime_mark_last_busy() call
> - Move variable declarations out of switch (a riscv/clang build failure)
> - Use lowercase hex in all defines
> - Drop unused ethosu_device.coherent member
> - Add comments on all locks
> - Link to v3: https://lore.kernel.org/r/20250926-ethos-v3-0-6bd24373e4f5@kernel.org
>
> Changes in v3:
> - Rework and improve job submit validation
> - Rename ethos to ethosu. There was an Ethos-Nxx that's unrelated.
> - Add missing init for sched_lock mutex
> - Drop some prints to debug level
> - Fix i.MX93 SRAM accesses (AXI config)
> - Add U85 AXI configuration and test on FVP with U85
> - Print the current cmd value on timeout
> - Link to v2: https://lore.kernel.org/r/20250811-ethos-v2-0-a219fc52a95b@kernel.org
>
> Changes in v2:
> - Rebase on v6.17-rc1 adapting to scheduler changes
> - scheduler: Drop the reset workqueue. According to the scheduler docs,
>   we don't need it since we have a single h/w queue.
> - scheduler: Rework the timeout handling to continue running if we are
>   making progress. Fixes timeouts on larger jobs.
> - Reset the NPU on resume so it's in a known state
> - Add error handling on clk_get() calls
> - Fix drm_mm splat on module unload. We were missing a put on the
>   cmdstream BO in the scheduler clean-up.
> - Fix 0-day report needing explicit bitfield.h include
> - Link to v1: https://lore.kernel.org/r/20250722-ethos-v1-0-cc1c5a0cbbfb@kernel.org
>
> ---
> Rob Herring (Arm) (2):
>       dt-bindings: npu: Add Arm Ethos-U65/U85
>       accel: Add Arm Ethos-U NPU driver
>
>  .../devicetree/bindings/npu/arm,ethos.yaml         |  79 +++
>  MAINTAINERS                                        |   9 +
>  drivers/accel/Kconfig                              |   1 +
>  drivers/accel/Makefile                             |   1 +
>  drivers/accel/ethosu/Kconfig                       |  10 +
>  drivers/accel/ethosu/Makefile                      |   4 +
>  drivers/accel/ethosu/ethosu_device.h               | 190 ++++++
>  drivers/accel/ethosu/ethosu_drv.c                  | 418 ++++++++++++
>  drivers/accel/ethosu/ethosu_drv.h                  |  15 +
>  drivers/accel/ethosu/ethosu_gem.c                  | 710 +++++++++++++++++++++
>  drivers/accel/ethosu/ethosu_gem.h                  |  46 ++
>  drivers/accel/ethosu/ethosu_job.c                  | 539 ++++++++++++++++
>  drivers/accel/ethosu/ethosu_job.h                  |  41 ++
>  include/uapi/drm/ethosu_accel.h                    | 261 ++++++++
>  14 files changed, 2324 insertions(+)
> ---
> base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
> change-id: 20250715-ethos-3fdd39ef6f19
>
> Best regards,
> --
> Rob Herring (Arm) <robh@kernel.org>
>