[PATCH 0/5] accel/rocket: Support standalone DPU/PPU tasks and pipelined workloads
From: Ross Cawston
Date: Tue Feb 17 2026 - 16:54:50 EST
The Rocket NPU supports multiple workload types beyond convolutional jobs:
- Standalone post-processing (PPU) tasks (pooling, element-wise ops, etc.)
- Pipelined DPU→PPU workloads
The current driver has limitations preventing these from working correctly:
- CNA/Core S_POINTER registers are always written, re-arming stale state
- Interrupt handling is hard-coded to DPU only, causing PPU timeouts
- Ping-pong mode is always enabled
This series fixes these while preserving backward compatibility.
Patch breakdown:
1/5 Fix error path in BO creation (cleanup/fix)
2/5 Enable ping-pong mode only for multi-task jobs (optimization)
3/5 Add per-task int_mask and flags to UAPI/kernel (new knobs)
4/5 Skip CNA/Core S_POINTER init for standalone tasks
5/5 Use per-task interrupt mask and handle PPU completions
Derived from vendor BSP behavior.
Tested on OrangePi 5 Ultra and Radxa Rock 5B (RK3588).
Thanks for review!
Signed-off-by: Ross Cawston <ross@xxxxxxx>
---
Ross Cawston (5):
accel/rocket: Fix error path in BO creation
accel/rocket: Enable ping-pong mode only for multi-task jobs
accel/rocket: Add per-task flags and interrupt mask to UAPI and kernel
accel/rocket: Skip CNA/Core S_POINTER initialization for standalone tasks
accel/rocket: Use per-task interrupt mask and handle PPU completion interrupts
drivers/accel/rocket/rocket_gem.c | 2 +
drivers/accel/rocket/rocket_job.c | 80 ++++++++++++++++++++++++++++++---------
drivers/accel/rocket/rocket_job.h | 2 +
include/uapi/drm/rocket_accel.h | 25 ++++++++++++
4 files changed, 92 insertions(+), 17 deletions(-)
---
base-commit: 17f8d2009367c3da82882f70ccbdca9f8c7b5f20
change-id: 20260217-accel-rocket-clean-base-57c0e88651e6
Best regards,
--
Ross Cawston <ross@xxxxxxx>