Skip to content

sun50i-h6: fix secondary CPU bring-up failure and clean up dangling series.armbian reference#9

Draft
Copilot wants to merge 95 commits intodietpifrom
copilot/fix-orange-pi-cpu-cores
Draft

sun50i-h6: fix secondary CPU bring-up failure and clean up dangling series.armbian reference#9
Copilot wants to merge 95 commits intodietpifrom
copilot/fix-orange-pi-cpu-cores

Conversation

Copy link

Copilot AI commented Mar 3, 2026

Changes

  • Removed the dangling add-initial-support-for-orangepi3-lts.patch reference from series.armbian for consistency with the actual state of patches.armbian/. Note: series.armbian is not applied by the build system — only series.conf and patches placed directly in the root of the sunxi-6.12/ directory are applied.

  • Removed kaslr-seed = <0xfeedbeef 0xc0def00d> from dt/sun50i-h6-orangepi-3-lts.dts to fix secondary CPU bring-up failure.

Root Cause Analysis

The boot log showed all three secondary CPUs (CPU1–CPU3) failing with failed in unknown state : 0x0, meaning they never write to secondary_data.status — i.e., they never execute any kernel code despite PSCI CPU_ON returning success (each times out after exactly 5 seconds).

The kaslr-seed property in the DTS was enabling KASLR, which in Linux 6.12 ARM64 forces KPTI (Kernel Page Table Isolation) on, as confirmed by the boot log:

KASLR enabled
CPU features: kernel page table isolation forced ON by KASLR
CPU features: detected: Kernel page table isolation (KPTI)

KPTI adds a trampoline page-table transition to the ARM64 secondary CPU startup path (secondary_startup_64). A failure in this trampoline produces exactly the observed 0x0 state symptom.

The sunxi-6.15 version of the same DTS (add-initial-support-for-orangepi3-lts.patch) does not include kaslr-seed, which aligns with this fix. The removed seed was also a fixed constant (0xfeedbeef 0xc0def00d) rather than a truly random value, so it provided deterministic rather than meaningful KASLR randomisation.

Note

Hardware testing is needed to confirm that secondary CPUs come online after this change.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

MichaIng added 30 commits March 1, 2026 16:04
Linux prior to v6.11 did not contain a native Orange Pi 3B device tree, hence "rk3566-orangepi-3b.dtb" was added via patch. Since there is an incompatibility between board revisions v1.1 and v2.1, mainline Linux however added two device trees for those two revisions. Since mainline U-Boot did already select those new device trees by default, we needed to define the old one via boot environmetn, which does not exist in new kernel. Older U-Boot versions however won't load the new device trees.

To not break boot after kernel package upgrade, a symlink is hence added to the package to keep it compatible with old U-Boot and boot environment. A migration to new U-Boot, removing the then obsolete fdtfile declaration from boot env, can be done via distro upgrade scripts or manually, to fully support board revision v2.1.

Signed-off-by: MichaIng <micha@dietpi.com>
In case of rk35xx-vendor, the mt7921e PCIe WiFi drivers were enabled already,
but the one for USB was missing. It was enabled for most other boards already,
hence this commit is an alignment.

Signed-off-by: MichaIng <micha@dietpi.com>
to fix onboard Ethernet on NanoPi M1 Plus: MichaIng/DietPi#6974

Signed-off-by: MichaIng <micha@dietpi.com>
**********************************************************
**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **
**                                                      **
** trace_printk() being used. Allocating extra memory.  **
**                                                      **
** This means that this is a DEBUG kernel and it is     **
** unsafe for production use.                           **
**                                                      **
** If you see this message and you are not debugging    **
** the kernel, report this immediately to your vendor!  **
**                                                      **
**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **
**********************************************************

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
The image path "must be the absolute filename of the kernel image". Else, when using image_dest or link_in_boot in /etc/kernel-img.conf, it links to the non-existing boot/ sub directory.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Upstream kernel defines the exact same LEDs already. having both defined leads to unusable LED sysfs nodes: MichaIng/DietPi#5401

Signed-off-by: MichaIng <micha@dietpi.com>
and replace dialog with whiptail.

Signed-off-by: MichaIng <micha@dietpi.com>
- Enable all RTW88 mainline drivers
- Disable all related 3rd party drivers
- Merge and sort all related config keys
- Align for all mainline Rockchip/Allwinner/Amlogic configs

As an exception, keep using the out-of-tree driver for RTL8723DS, which performs much better on Linux 6.12. On Linux 6.16, the mainline driver runs as smooth, but throws a warning invalid efuse MAC, assigning a random one instead.  On ROCK Pi S, the out-of-tree driver does not assign a static MAC etiher, but only the last 3 blocks are random, the first 3 remain static. On the Gateway GZ80X, as heard from someone else, it seems to apply a completely static MAC. In any case, it can obviously better obtain MAC address info hardware, respectively do so in more cases.

Signed-off-by: MichaIng <micha@dietpi.com>
This breaks the ATF build that was likely unintentionally enabled with armbian#8449. However, when already creating an upstream diff, we go forward and use ATF with latest U-Boot version.

This also removes the unnecessary SPI images from U-Boot builds. This SBC does not have an SPI storage.

Signed-off-by: MichaIng <micha@dietpi.com>
* cpufrequtils is not installed anymore by Armbian, hence removing it from Trixie is not needed anymore.
* On Debian, software-properties-common is not needed, but spamming the logs with a warning about that is unnecessary => degraded to debug
* Removed duplicate software-properties-common argument
* Do not spam logs with a warning if the optional userspace extensions dir does not exist

Signed-off-by: MichaIng <micha@dietpi.com>
including the btrsubvol for manging Btrfs subvolumes.

Signed-off-by: MichaIng <micha@dietpi.com>
All other H3/H5 boards we support, have no RTC battery socket. But the RTC node is enabled by default in mainline Linux, reserving /dev/rtc0. The kernel config uses that via CONFIG_RTC_HCTOSYS_DEVICE="rtc0". This is unnecessary and becomes a problem when aiming to use an external I2C RTC, which currently requires a manual `hwclock --hctosys --rtc /dev/rtc1` call to be used. With the SoC-internal RTC disabled, the kernel restores from the external RTC automatically.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
by assigning it to the ethernet1 alias. U-Boot assigns an autogenerated MAC based on hardware parameters automatically.

Signed-off-by: MichaIng <micha@dietpi.com>
U-Boot generates and assigns two MAC addresses for Rockchip SBCs with ethernet0 and ethernet1 aliases pointing to repsective device nodes.

The PCIe child node for the PCIe Ethernet adapter with the needed "local-mac-address" property is added with this patch, as well as the respective alias.

This commit additionally applies default Ethernet LED triggers.

Signed-off-by: MichaIng <micha@dietpi.com>
U-Boot generates and assigns two MAC addresses for Rockchip SBCs with ethernet0 and ethernet1 aliases pointing to repsective device nodes.

The PCIe child nodes for both 2.5 Gbit Ethernet adapters with the needed "local-mac-address" properties are added with this patch, as well as the respective aliases.

This commit applies as well default Ethernet LED triggers.

Signed-off-by: MichaIng <micha@dietpi.com>
U-Boot assigns the variables eth(0)addr, eth1addr, eth2addr etc as MAC addresses to device tree aliases ethernet0, ethernet1, ethernet2 etc. For Rockchip SBCs, it generates only ethaddr and eth1addr so far. To support 3 static MAC addresses for the NanoPi R5S, it needs to generate eth2addr. This is archived with a U-Boot patch, to derive eth2addr the same way like eth1addr, but inverting the 2nd last bit instead.

With a kernel patch, PCIe child nodes with the needed "local-mac-address" attributes are added to respective PCIe bridge nodes, and added as ethernet1 and ethernet2 aliases respectively.

In sum: U-Boot additionally generates a valid eth2addr, and additionally assigns eth1addr and eth2addr to the now existing ethernet1 and ethernet2 aliases, pointing to the 2.5 Gbit Ethernet device nodes.

This commit applies as well default Ethernet LED triggers.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
since it sometimes results in a boot loop, when aiming to boot from eMMC or SD card: MichaIng/DietPi#7168, https://forum.armbian.com/topic/36141-usb-errors/

The attempt to boot from USB might be too fast, when trying it first, where some USB drives are not ready yet, resulting in an error.

Signed-off-by: MichaIng <micha@dietpi.com>
U-Boot assigns the variables eth(0)addr, eth1addr, eth2addr etc as MAC addresses to device tree aliases ethernet0, ethernet1, ethernet2 etc. For Rockchip SBCs, it generates only ethaddr and eth1addr so far. To support 3 static MAC addresses for the NanoPi R6S, it needs to generate eth2addr. This is archived with a U-Boot patch, to derive eth2addr the same way like eth1addr, but inverting the 2nd last bit instead.

With a kernel patch, PCIe child nodes with the needed "local-mac-address" attributes are added to respective PCIe bridge nodes, and added as ethernet1 and ethernet2 aliases respectively.

In sum: U-Boot additionally generates a valid eth2addr, and additionally assigns eth1addr and eth2addr to the now existing ethernet1 and ethernet2 aliases, pointing to the 2.5 Gbit Ethernet device nodes.

Due to shared includes, this applies static MAC addresses for both NanoPi R6C adapters as well.

This commit additionally fixes the default Ethernet LED triggers for NanoPi R6C and applies them for later Linux versions.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
It is in peripheral mode by default.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Seriously, while the chip might live long enough at 85 °C - 100 °C, it is also about the temperature sourrounding components, peripherals and in case passive cooling cases get. I do not want to fry eggs on my NanoPi R4S case, which is directly connected to the SoC as passive cooler.

Revert to upstream Linux values, which can always be overridden via board device tree or overlay.

Signed-off-by: MichaIng <micha@dietpi.com>
On mainline Linux for RK3588 `&usb_host0_xhci` is usually the USB-C port, if there is one, sometimes used as debug serial port, like on NanoPi R6C. Depending on SBC, it is pre-configured differently. Add overlays to swap it freely.

Signed-off-by: MichaIng <micha@dietpi.com>
The additional HDMI timings have been added upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit?h=linux-6.12.y&id=d1ea423

Signed-off-by: MichaIng <micha@dietpi.com>
MichaIng added 21 commits March 3, 2026 17:45
Signed-off-by: MichaIng <micha@dietpi.com>
It is in peripheral mode by default.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Seriously, while the chip might live long enough at 85 °C - 100 °C, it is also about the temperature sourrounding components, peripherals and in case passive cooling cases get. I do not want to fry eggs on my NanoPi R4S case, which is directly connected to the SoC as passive cooler.

Revert to upstream Linux values, which can always be overridden via board device tree or overlay.

Signed-off-by: MichaIng <micha@dietpi.com>
On mainline Linux for RK3588 `&usb_host0_xhci` is usually the USB-C port, if there is one, sometimes used as debug serial port, like on NanoPi R6C. Depending on SBC, it is pre-configured differently. Add overlays to swap it freely.

Signed-off-by: MichaIng <micha@dietpi.com>
The additional HDMI timings have been added upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit?h=linux-6.12.y&id=d1ea423

Signed-off-by: MichaIng <micha@dietpi.com>
Linux removed it from base dtsi to be added to individual dts for boards which actually have onboard Ethernet: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit?id=5d90cb1

Signed-off-by: MichaIng <micha@dietpi.com>
All credits go to @gitmeister: MichaIng/DietPi#5414 (comment)

Signed-off-by: MichaIng <micha@dietpi.com>
Flashing via dd as before causes a U-Boot loop due to failing BL33 CHK. This was caused almost certainly by the recent bump of U-Boot from v2022.10 to v2026.01.

Flashing via flashcp as done in many other cases results in successful boot from SPI NOR flash.

This commit also removes the obsolete ToDo comment: The meson-g12b-odroid-n2-spi.dtbo exists since a long time and works perfectly fine. No need to switch the entire base device tree.

Signed-off-by: MichaIng <micha@dietpi.com>
It breaks the respective USB port on all RK3328 boards we support, and the internally attached Ethernet on NanoPi R2S.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
armbian/linux-rockchip@7628960

Everything is wired the same way, and mainline defines the same pinctl, only on vendor it is missing:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/rockchip/rk3588-base-pinctrl.dtsi#n368

Signed-off-by: MichaIng <micha@dietpi.com>
That way, it can be autoloaded. Otherwise, e.g. LEDs on ROCK64 do not work unless manually loading that driver.

Signed-off-by: MichaIng <micha@dietpi.com>
This saves ~150 MiB disk space. Culprit commit: armbian/firmware@36ec437

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Not needed anymore for any device or kernel version we support.

Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
for Orange Pi 5 Max and Ultra WiFi support

Signed-off-by: MichaIng <micha@dietpi.com>
In case of Orange Pi 3B v1.1: All other differences between the (functional) vendor kernel device tree and mainline kernel have been tested, as well as defining a more precise "compatible" entry for the PHY. Also raising the reset delays to match the vendor kernel values did not work. Only reverting to old way of defining reset delays in MAC instead of PHY solved the RTL8211F Ethernet of this board.

Same change helped for ROCK 3B and Orange Pi 3 LTS, which use the same RTL8211F chip, or the pin-compatible YT8531.

`https://dietpi.com/forum/t/22129`
`https://github.com/MichaIng/DietPi/issues/7327`
`https://github.com/MichaIng/DietPi/issues/7490`
`https://github.com/MichaIng/DietPi/issues/7905`

Signed-off-by: MichaIng <micha@dietpi.com>
The existing patch works on rockchip only since uwe5622-fix-setting-mac-address-for-netdev.patch is applied on sunxi. The new patch has been adjusted for sunxi to replace both lines and make use of its target_mac_addr.

Signed-off-by: MichaIng <micha@dietpi.com>
It removes cooling device entries for CPUs 1-3, adding them for CPU 0 only, potentially causing an issue where H6 boards boot with a single usable CPU core only.

Signed-off-by: MichaIng <micha@dietpi.com>
@MichaIng
Copy link
Owner

MichaIng commented Mar 3, 2026

@copilot here is the kernel log until the relevant CPU init failures:

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.12.74-current-sunxi64 (build@armbian) (aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #1 SMP Thu Feb 19 15:29:56 UTC 2026
[    0.000000] KASLR enabled
[    0.000000] Machine model: OrangePi 3 LTS
[    0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
[    0.000000] NUMA: Faking a node at [mem 0x0000000040000000-0x00000000bfffffff]
[    0.000000] NODE_DATA(0) allocated [mem 0xbfbd36c0-0xbfbd577f]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x00000000bfffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x00000000bfffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x00000000bfffffff]
[    0.000000] cma: Reserved 128 MiB at 0x00000000b5a00000 on node -1
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.5
[    0.000000] percpu: Embedded 33 pages/cpu s96728 r8192 d30248 u135168
[    0.000000] pcpu-alloc: s96728 r8192 d30248 u135168 alloc=33*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: kernel page table isolation forced ON by KASLR
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: root=UUID=aff49849-0ea3-4eb6-a80d-6dc667c0efb3 rootfstype=ext4 rootwait console=tty1 consoleblank=0 coherent_pool=2M ubootpart=14ff413a-01 fsck.repair=yes net.ifnames=0 cgroup_enable=memory
[    0.000000] Unknown kernel command line parameters "ubootpart=14ff413a-01 cgroup_enable=memory", will be passed to user space.                                                   [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Fallback order for Node 0: 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 524288
[    0.000000] Policy zone: DMA
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 2MB
[    0.000000] software IO TLB: area num 4.
[    0.000000] software IO TLB: mapped [mem 0x00000000b5600000-0x00000000b5800000] (2MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 49887 entries in 195 pages
[    0.000000] ftrace: allocated 195 pages with 4 groups
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000]  Rude variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000001] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000132] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000709] Console: colour dummy device 80x25
[    0.000723] printk: legacy console [tty1] enabled
[    0.001338] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000)
[    0.001370] pid_max: default: 32768 minimum: 301
[    0.001466] LSM: initializing lsm=capability,yama,apparmor,ima,evm
[    0.001558] Yama: becoming mindful.
[    0.001801] AppArmor: AppArmor initialized
[    0.001997] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.002030] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.004868] rcu: Hierarchical SRCU implementation.
[    0.004903] rcu:     Max phase no-delay instances is 1000.
[    0.005199] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.006456] smp: Bringing up secondary CPUs ...
[    5.092262] CPU1: failed to come online
[    5.092283] CPU1: failed in unknown state : 0x0
[   10.216585] CPU2: failed to come online
[   10.216605] CPU2: failed in unknown state : 0x0
[   15.340913] CPU3: failed to come online
[   15.340933] CPU3: failed in unknown state : 0x0
[   15.341008] smp: Brought up 1 node, 1 CPU
[   15.341026] SMP: Total of 1 processors activated.
[   15.341040] CPU: All CPU(s) started at EL2
[   15.341078] CPU features: detected: 32-bit EL0 Support
[   15.341093] CPU features: detected: 32-bit EL1 Support
[   15.341112] CPU features: detected: CRC32 instructions

Let me know if any logs after that would help to clarify something relevant.

We did now test it with the defconf from pyavitz: https://github.com/pyavitz/debian-image-builder/blob/feature/defconfig/sunxi64_defconfig
Applied with the commit here: 86f3167
This rules out NUMA and the initial CPU governor as culprit. The functional kernel from pyavitz actually contains CONFIG_SUN50I_H6_PRCM_PPU=m as well, and it is effective since that new driver is patched into the kernel there as well. But the patch is better named with "h616" in the name, indicating which SoC it is effectively applied to, while in our patches it is confusingly named with "h6", while not being references in any Allwinner H6 device tree: https://github.com/pyavitz/debian-image-builder/blob/feature/patches/allwinner/6.12/001-arm64-sunxi-h616-Enable-Mali-GPU.patch
But it means that the presence of this new PRCM PPU driver is not the culprit either.

Hence the debugging could need to focus on the patches, in combination with above kernel log.

Co-authored-by: MichaIng <28480705+MichaIng@users.noreply.github.com>
Copy link
Author

Copilot AI commented Mar 3, 2026

@copilot here is the kernel log until the relevant CPU init failures:

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]

...

The boot log is very revealing — failed in unknown state : 0x0 means the secondary CPUs never wrote to secondary_data.status at all, i.e., they never executed any kernel code despite PSCI CPU_ON returning success (5 s = exact timeout, not immediate).

Two key observations from the log:

  • KASLR enabled + CPU features: kernel page table isolation forced ON by KASLR — KPTI is active because of kaslr-seed = <0xfeedbeef 0xc0def00d> in our DTS
  • KPTI adds a trampoline page-table transition to the ARM64 secondary CPU startup path (secondary_startup_64); a failure there produces exactly this symptom

The sunxi-6.15 version of the same DTS (add-initial-support-for-orangepi3-lts.patch) has no kaslr-seed and therefore no KPTI. All other H6 patches are equivalent between the two kernel versions.

Commit 442d571 removes kaslr-seed from dt/sun50i-h6-orangepi-3-lts.dts to align with sunxi-6.15. This should allow secondary CPUs to come online by eliminating the KPTI trampoline from the startup path. A hardware test will confirm whether this is the root cause.

Security note: the removed seed was a fixed constant (0xfeedbeef 0xc0def00d), not truly random, so it provided deterministic rather than meaningful KASLR randomisation anyway.

Copilot AI changed the title sun50i-h6: clean up dangling series.armbian reference sun50i-h6: fix secondary CPU bring-up failure and clean up dangling series.armbian reference Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants