Rosenblatt Phase-1 closeout: rocket-driver substrate inventory
Phase-1 audit closes with a substantively different picture than the original scaffold's TBDs: - Tomeu Vizoso's RK3588 NPU work merged in Linux 6.18 (Nov 2025) under codename `rocket` (NOT `rknpu`). All references updated. - Boltzmann's `linux-rk3588-marfrit-A1` (7.0.0-rc3-ARCH+) already ships `drivers/accel/rocket/rocket.ko` as a built-but-not-loaded module. - DT bindings + per-core nodes (`npu@fdab/c/d_0000`, compatible `rockchip,rk3588-rknn-core`) in mainline since 6.18 but ship `status = "disabled"` — board enable is the Phase-2 unblock, not a driver port. - Mesa 25.3 ships Rocket Gallium + Teflon TFLite delegate as the authoritative userspace reference for the uAPI shape. - Op coverage today is conv-centric (MobileNet-class); transformer matmul needs the conv-1×1 shoehorn (RKNPU2 BSP precedent) or rocket op-set additions. Surfaced as Phase-2-load-bearing risk. - IOMMU v1.0 hazard: 32 GB host needs `mem=4G` or local `rockchip,rk3568-iommu-v1` discriminator patches before the first NPU job, to avoid DMA-window faults. Files: - docs/npu-mainline-status.md: full audit table with upstream pointers (kernel.org / Mesa docs / dri-devel patch URLs / Tomeu's "we are in mainline" blog post). - docs/phases.md: per-phase log entry for Phase-1 closeout. - docs/op-coverage.md: matmul-vs-conv-vs-rocket-op-set framing. - fleet/boltzmann.yaml: audited kernel + npu_driver + dt_npu_nodes state. - kernel/dt-overlays/rk3588-rosenblatt-npu-enable.dtso: overlay to flip the three rknn-core nodes to "okay" (+ matching mmu nodes), carries the IOMMU-mitigation warning inline. - kernel/README.md: kernel-agent scope wiring + anticipated local carry patches. - README.md: phase-status table + "rknpu → rocket" rename note. - TODO.md: Phase-2 unblock concrete steps + standing upstream-watch items.
This commit is contained in:
+25
-17
@@ -1,24 +1,32 @@
|
||||
# kernel/
|
||||
|
||||
Mainline-bound kernel patches: DT bindings, rknpu driver tweaks,
|
||||
power-domain wiring for boltzmann's `rk3588-rock-5-itx-plus.dts`.
|
||||
Phase-1 audit closed the "do we need a driver?" question: Tomeu
|
||||
Vizoso's `rocket` driver is in mainline since Linux 6.18, and
|
||||
boltzmann's `linux-rk3588-marfrit-A1` build (7.0.0-rc3-ARCH+)
|
||||
already ships it as a module. See `docs/npu-mainline-status.md` for
|
||||
the full audit.
|
||||
|
||||
Empty until Phase 1 audit identifies what's actually missing in mainline.
|
||||
Current contents:
|
||||
|
||||
If Tomeu Vizoso's rknpu series is far enough along to use as-is, this
|
||||
directory may stay nearly empty — we'd just carry a small DT-overlay
|
||||
patch for boltzmann's board file.
|
||||
|
||||
If we end up writing a driver from scratch (worst case), the structure
|
||||
will mirror an upstream submission layout:
|
||||
```
|
||||
0001-dt-bindings-npu-add-rockchip-rk3588-npu.patch
|
||||
0002-arm64-dts-rockchip-rk3588-add-npu-node.patch
|
||||
0003-arm64-dts-rockchip-rock-5-itx-plus-enable-npu.patch
|
||||
0004-accel-rknpu-add-rockchip-rk3588-driver.patch
|
||||
...
|
||||
kernel/
|
||||
└── dt-overlays/
|
||||
└── rk3588-rosenblatt-npu-enable.dtso
|
||||
# Flips rknn_core_0/1/2 + rknn_mmu_0/1/2 to status="okay".
|
||||
# Do NOT apply on >4 GB-RAM hosts without IOMMU v1.0
|
||||
# mitigation (mem=4G or local discriminator-compat patches).
|
||||
```
|
||||
|
||||
Tracking-wise these go through `marfrit/kernel-agent` as scope
|
||||
`patches/driver/accel/rknpu/`, with `fleet/boltzmann-rosenblatt.yaml`
|
||||
as the consuming manifest.
|
||||
Anticipated next additions:
|
||||
|
||||
- `iommu/0001-iommu-rockchip-add-rk3568-iommu-v1-compatible.patch`
|
||||
— local carry of Midgy BALON's discriminator-compat patch when it
|
||||
appears upstream, plus the matching DT update for `rknn_mmu_*`.
|
||||
Drop when the upstream series lands.
|
||||
- Patches against marfrit's `linux-rk3588-marfrit-*` branch only if
|
||||
we need fixes beyond what mainline rocket provides. Kept minimal
|
||||
per the "mainline-clean from day 1" rule.
|
||||
|
||||
Patch handling routes through the `kernel-agent` subagent (per
|
||||
`feedback_agent_routing.md`); board / host wiring lives in
|
||||
`fleet/boltzmann.yaml`.
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Rosenblatt: enable all three RK3588 RKNN cores + their IOMMUs.
|
||||
*
|
||||
* Apply on top of any rk3588 board DT that uses the mainline
|
||||
* rk3588-base.dtsi labels. Verified against boltzmann
|
||||
* (model "Radxa ROCK 5 ITX", compatible "radxa,rock-5-itx").
|
||||
*
|
||||
* Pre-conditions before applying on a system with >4 GB RAM
|
||||
* (boltzmann has 32 GB):
|
||||
* - The IOMMU v1.0 hazard MUST be mitigated first.
|
||||
* See docs/npu-mainline-status.md "IOMMU v1.0 hazard".
|
||||
* Either boot with `mem=4G`, OR carry the discriminator-compat
|
||||
* patch series (Simon Xue per-device-ops +
|
||||
* Midgy BALON `rockchip,rk3568-iommu-v1`).
|
||||
*
|
||||
* After applying:
|
||||
* - `modprobe rocket`
|
||||
* - expect `/dev/accel/accel0` (single facade, schedules across cores)
|
||||
* - dmesg: rocket-driven probe per `npu@fdab0000`, `..fdac0000`,
|
||||
* `..fdad0000`
|
||||
*
|
||||
* Keep the assigned-clock-rate at the rk3588-base.dtsi default of
|
||||
* 200 MHz for first-bringup. Lift to 1 GHz (`SCMI_CLK_NPU` max) only
|
||||
* after the rocket bringup, IOMMU, and a baseline matmul are
|
||||
* verified stable.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
&rknn_core_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rknn_mmu_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rknn_core_1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rknn_mmu_1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rknn_core_2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rknn_mmu_2 {
|
||||
status = "okay";
|
||||
};
|
||||
Reference in New Issue
Block a user