Skip to content

rockchip64: opt-in helios64 CPU stability overlay (current + edge)#9822

Open
iav wants to merge 2 commits into
armbian:mainfrom
iav:feat/helios64-cpu-stability-overlay
Open

rockchip64: opt-in helios64 CPU stability overlay (current + edge)#9822
iav wants to merge 2 commits into
armbian:mainfrom
iav:feat/helios64-cpu-stability-overlay

Conversation

@iav
Copy link
Copy Markdown
Contributor

@iav iav commented May 14, 2026

Description

Adds an opt-in DT overlay for the Helios64 NAS (Kobol) that raises the A72
big-cluster vcore by +75 mV on opp00..opp06; opp07 (1.8 GHz / 1.20 V)
is unchanged. Disabled by default — enable via
overlays=rk3399-helios64-cpu-stability in /boot/armbianEnv.txt (the
rockchip- prefix is implicit because overlay_prefix=rockchip is
already set for this board) or through armbian-config → System →
Kernel → Manage device tree overlays.

Voltage mapping (mainline rk3399-op1-opp.dtsi → this overlay):

OPP freq mainline overlay
opp00 408 MHz 0.825 V 0.900 V
opp01 600 MHz 0.825 V 0.900 V
opp02 816 MHz 0.825 V 0.900 V
opp03 1008 MHz 0.875 V 0.950 V
opp04 1200 MHz 0.950 V 1.025 V
opp05 1416 MHz 1.025 V 1.100 V
opp06 1608 MHz 1.100 V 1.175 V
opp07 1800 MHz 1.200 V (unchanged)

max (third element of the triplet) is kept at 1.25 V on all entries,
matching the forum workaround (post #237456 in topic 58597 by @ebin-dev).

Two commits, one per kernel tree: rockchip64-current (6.18) and
rockchip64-edge (7.0).

Motivation

Long-standing instability reports for Helios64 under sustained CPU load
are tracked on the Armbian forum:

  • topic 30074 ("Helios64 Armbian 23.08 bookworm issues solved")
  • topic 58597 ("Helios64 Armbian Trixie with Linux 6.18 incl. opp-microvolt patch")

Forum users (prahal, ebin-dev) have been distributing pre-built DTBs
with the same opp-microvolt bumps for years. No upstream patch exists
and Kobol is no longer maintaining helios* boards, so this will not
land in mainline.

Deliberately not a board-default change. On my own Helios64 the
stock mainline voltages run stable, and I don't want to push a
tree-wide voltage bump onto every user when only some units exhibit
the instability.

But the affected users currently have to maintain a hand-patched
DTB
— copying rk3399-kobol-helios64.dtb into /boot/dtb/rockchip/
and redoing it on every kernel package update. That workflow is
fragile and easy to forget. Armbian already has a clean, durable
mechanism for exactly this case — DT overlays selected via
armbianEnv.txt / armbian-config. This PR brings the forum
workaround into that mechanism.

How Has This Been Tested?

  • current (6.18) deb built — linux-dtb-current-rockchip64
    ships rockchip/overlay/rockchip-rk3399-helios64-cpu-stability.dtbo
    (485 B); dtc -I dtb decompiles to the documented values.

  • edge (7.0) deb built — identical overlay payload, verified
    the same way.

  • Helios64 SD-card boot, current/6.18, Trixie minimal — overlay
    enabled via armbian-config. U-boot log: Applying kernel provided DT overlay rockchip-rk3399-helios64-cpu-stability.dtbo.
    Live DT after boot:
    ```
    for n in 0 1 2 3 4 5 6 7; do
    od -An -tx4 --endian=big
    /sys/firmware/devicetree/base/opp-table-1/opp0$n/opp-microvolt
    done

    opp00  000dbba0 000dbba0 001312d0    900000   900000  1250000 µV
    opp01  000dbba0 000dbba0 001312d0
    opp02  000dbba0 000dbba0 001312d0
    opp03  000e7ef0 000e7ef0 001312d0    950000
    opp04  000fa3e8 000fa3e8 001312d0   1025000
    opp05  0010c8e0 0010c8e0 001312d0   1100000
    opp06  0011edd8 0011edd8 001312d0   1175000
    opp07  00124f80 00124f80 001312d0   1200000 (unchanged)
    ```
    
  • Overlay visible in armbian-config → System → Kernel →
    Manage device tree overlays (TUI writes
    rk3399-helios64-cpu-stability to the overlays= line in
    armbianEnv.txt).

  • Helios64 SD-card boot, edge/7.0 (kernel 7.0.7-edge-rockchip64,
    Trixie minimal) — overlay enabled via the same TUI path, identical
    end-to-end result:
    opp00 000dbba0 000dbba0 001312d0 900000 900000 1250000 µV opp01 000dbba0 000dbba0 001312d0 opp02 000dbba0 000dbba0 001312d0 opp03 000e7ef0 000e7ef0 001312d0 950000 opp04 000fa3e8 000fa3e8 001312d0 1025000 opp05 0010c8e0 0010c8e0 001312d0 1100000 opp06 0011edd8 0011edd8 001312d0 1175000 opp07 00124f80 00124f80 001312d0 1200000 (unchanged)

Changes since the latest review

  • Applied CodeRabbit nitpick: per-OPP frequency / voltage transition
    is now documented inline in the .dtso (a single-line comment
    above each opp0N { ... };), and the README block was tightened
    to replace the imprecise "50-75 mV" phrasing with the actual
    uniform +75 mV value plus the explicit mainline→overlay voltage
    list. No functional change to the overlay payload.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • My changes generate no new warnings

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

📝 Walkthrough

Walkthrough

Adds a new Rockchip DT overlay plugin rk3399-helios64-cpu-stability (compatible = "kobol,helios64", /plugin/) that raises opp00..opp06 opp-microvolt entries, and wires the overlay into the Rockchip DTBO build lists and README for both 6.18 and 7.0 trees.

Changes

Helios64 CPU stability overlay (DT + build + docs)

Layer / File(s) Summary
DT overlay source: plugin fragment for OPP table
patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso, patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3399-helios64-cpu-stability.dtso
Adds SPDX header and /plugin/ format; defines compatible = "kobol,helios64" and a fragment@0 targeting /opp-table-1 that overrides opp00opp06 opp-microvolt triplets; comments note the top OPP is unchanged.
Build wiring: include DTBO in Rockchip overlay list
patch/kernel/archive/rockchip64-6.18/overlay/Makefile, patch/kernel/archive/rockchip64-7.0/overlay/Makefile
Appends rockchip-rk3399-helios64-cpu-stability.dtbo to dtbo-$(CONFIG_ARCH_ROCKCHIP) so the overlay is built for Rockchip targets.
Documentation: register and describe overlay
patch/kernel/archive/rockchip64-6.18/overlay/README.rockchip-overlays, patch/kernel/archive/rockchip64-7.0/overlay/README.rockchip-overlays
Adds rk3399-helios64-cpu-stability to provided overlays and documents it as an opt-in Helios64-only uplift of A72 vcore (+75 mV across opp00..opp06), preserving 1.8 GHz voltage; notes empirical Armbian forum origin and advice to apply only if crashes/hangs occur.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through fragments, headers neat and small,

I nudged the volts so big cores needn't stall,
A plugin whispers tweaks into the tree,
Helios64 hums steadier now, you see.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding an opt-in CPU stability overlay for Helios64 across both current and edge kernel versions, which is the primary focus of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added 05 Milestone: Second quarter release size/medium PR with more then 50 and less then 250 lines labels May 14, 2026
@github-actions github-actions Bot added Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... labels May 14, 2026
@iav iav force-pushed the feat/helios64-cpu-stability-overlay branch 2 times, most recently from c723616 to 21c6fff Compare May 14, 2026 21:34
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso (2)

11-18: ⚡ Quick win

Consider documenting frequencies for modified OPPs.

The comment for opp07 helpfully documents both frequency (1.8 GHz) and voltage (1.20 V). Consider adding similar documentation for opp00–opp06 to make the overlay more maintainable and easier to review. This would show the frequency-to-voltage mapping and make it clearer what the ~50–75 mV increases are relative to.

For example:

opp00 { opp-microvolt = < 900000  900000 1250000>; }; /* 600 MHz: 0.85V → 0.90V */
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso`
around lines 11 - 18, Add inline comments to the modified OPP nodes opp00
through opp06 documenting the intended frequency and original→new voltage
mapping (e.g., "600 MHz: 0.85V → 0.90V") similar to the existing opp07 comment
so reviewers can see frequency-to-voltage mapping and the ~50–75 mV increases;
update the opp00, opp01, opp02, opp03, opp04, opp05, and opp06 node lines to
include those brief comments describing frequency and old vs new voltages.

11-17: The triplet format is correct per Linux kernel OPP binding specification, but add frequency documentation for clarity.

The opp-microvolt = <target min max> triplet format used here is valid per the Linux kernel OPP device tree binding. The identical first two values (e.g., <900000 900000 1250000>) mean the minimum voltage is fixed at that target, with the maximum allowed ceiling at 1.25V.

However, the voltage configuration in this file is notably more conservative than other RK3399 OPP tables (e.g., the 2GHz variant uses 1.3V for the same cluster at 2.016GHz). Without documented frequencies for each opp entry, it's unclear whether these voltages align with the corresponding performance points. Add opp-hz properties (e.g., opp-hz = /bits/ 64 <frequency>;) to each OPP node to clarify the frequency-voltage relationship and enable proper validation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso`
around lines 11 - 17, Add explicit frequency documentation to each OPP node
(opp00..opp06) by adding an opp-hz property in the 64-bit bits format (opp-hz =
/bits/ 64 <frequency>;) so the voltage triplets in opp-microvolt can be
correlated to their frequencies; update each node (opp00, opp01, opp02, opp03,
opp04, opp05, opp06) with the correct frequency values in Hz (as 64-bit
integers) that correspond to the intended performance points and ensure the
units and syntax follow the DT binding (/bits/ 64) and kernel OPP conventions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso`:
- Around line 11-18: Add inline comments to the modified OPP nodes opp00 through
opp06 documenting the intended frequency and original→new voltage mapping (e.g.,
"600 MHz: 0.85V → 0.90V") similar to the existing opp07 comment so reviewers can
see frequency-to-voltage mapping and the ~50–75 mV increases; update the opp00,
opp01, opp02, opp03, opp04, opp05, and opp06 node lines to include those brief
comments describing frequency and old vs new voltages.
- Around line 11-17: Add explicit frequency documentation to each OPP node
(opp00..opp06) by adding an opp-hz property in the 64-bit bits format (opp-hz =
/bits/ 64 <frequency>;) so the voltage triplets in opp-microvolt can be
correlated to their frequencies; update each node (opp00, opp01, opp02, opp03,
opp04, opp05, opp06) with the correct frequency values in Hz (as 64-bit
integers) that correspond to the intended performance points and ensure the
units and syntax follow the DT binding (/bits/ 64) and kernel OPP conventions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1632bb13-1b7d-4386-94a7-b9822567eaea

📥 Commits

Reviewing files that changed from the base of the PR and between c723616 and 21c6fff.

📒 Files selected for processing (6)
  • patch/kernel/archive/rockchip64-6.18/overlay/Makefile
  • patch/kernel/archive/rockchip64-6.18/overlay/README.rockchip-overlays
  • patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3399-helios64-cpu-stability.dtso
  • patch/kernel/archive/rockchip64-7.0/overlay/Makefile
  • patch/kernel/archive/rockchip64-7.0/overlay/README.rockchip-overlays
  • patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3399-helios64-cpu-stability.dtso
✅ Files skipped from review due to trivial changes (3)
  • patch/kernel/archive/rockchip64-6.18/overlay/README.rockchip-overlays
  • patch/kernel/archive/rockchip64-7.0/overlay/README.rockchip-overlays
  • patch/kernel/archive/rockchip64-7.0/overlay/Makefile
🚧 Files skipped from review as they are similar to previous changes (2)
  • patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3399-helios64-cpu-stability.dtso
  • patch/kernel/archive/rockchip64-6.18/overlay/Makefile

@iav iav force-pushed the feat/helios64-cpu-stability-overlay branch from 21c6fff to 6348b9e Compare May 14, 2026 23:40
@iav
Copy link
Copy Markdown
Contributor Author

iav commented May 14, 2026

done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

05 Milestone: Second quarter release Hardware Hardware related like kernel, U-Boot, ... Needs review Seeking for review Patches Patches related to kernel, U-Boot, ... size/medium PR with more then 50 and less then 250 lines

Development

Successfully merging this pull request may close these issues.

1 participant