Skip to content

ti: k3: Fix boot, change branch names, add upstream edge#8926

Merged
igorpecovnik merged 5 commits intoarmbian:mainfrom
TexasInstruments:major-refactor
Nov 17, 2025
Merged

ti: k3: Fix boot, change branch names, add upstream edge#8926
igorpecovnik merged 5 commits intoarmbian:mainfrom
TexasInstruments:major-refactor

Conversation

@jonaswood01
Copy link
Contributor

@jonaswood01 jonaswood01 commented Nov 13, 2025

Description

  • Update k3 pre-uboot cross-compilation and TI SDK tags, which fixed boot on sk-am62p & sk-am64b
  • Change instances of current to vendor, current-rt to vendor-rt, and edge to vendor-edge - better follows branch name convention as requested in Beagle kernel config #8913
  • Add upstream edge - latest mainline u-boot/kernel/ATF/OPTEE (added for experimental use as desired, not build/boot tested)
  • Update vendor-edge - latest TI u-boot/kernel & upstream ATF/OPTEE

Documentation summary for feature / change

Possibly could add documentation to https://docs.armbian.com/Developer-Guide_Build-Switches/ for vendor-rt and vendor-edge, though not needed per-se.

May need manual re-mapping of Armbian.com images for TI/beagle boards due to changing branch names.

How Has This Been Tested?

TI K3 boards tested with build logs below.

vendor branch:

  • sk-am62b: build, boots ✅
  • sk-am62p: build, boots ✅
  • sk-am64b: build, boots ✅
  • sk-am68: build, fails to boot ❌ (same as before; will need further PR to fix)
  • sk-am69: build, boot not tested ⚠️
  • sk-tda4vm: build, boot not tested ⚠️

vendor-edge branch:

  • sk-am62b: build, boots ✅
  • sk-am62p: build, boots ✅
  • sk-am64b: build, boots ✅
  • sk-am68: build, fails to boot ❌ (same as before; will need further PR to fix)
  • sk-am69: build, boot not tested ⚠️
  • sk-tda4vm: build, boot not tested ⚠️

Note: git status changes in logs are proxy-related only.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings (as far as I can tell)
  • Any dependent changes have been merged and published in downstream modules

Summary by CodeRabbit

  • New Features

    • Added vendor/vendor-rt/vendor-edge kernel targets and OP-TEE platform selections for multiple boards; some boards gained CC33XX support.
  • Updates

    • Standardized board branding to "Texas Instruments" and shifted default kernel/test targets to vendor variants; branch/tag semantics and Processor SDK references updated.
  • Documentation

    • Added comprehensive vendor-edge and beagle-edge kernel configurations and clarified source/firmware selection and branch usage.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 13, 2025

Walkthrough

Retargets many K3 boards to vendor-focused kernel branches, adds OPTEE and CC33XX flags to boards, introduces two K3 kernel defconfigs, and restructures K3 family/source branch declarations including ATF/OPTEE/boot scoping and a bootgen cross‑compile tweak.

Changes

Cohort / File(s) Summary
Board configuration — kernel targets & OP‑TEE
config/boards/beaglebone-ai64.conf, config/boards/beagleplay.conf, config/boards/beagley-ai.conf, config/boards/pocketbeagle2.conf, config/boards/sk-am62b.conf, config/boards/sk-am62p.conf, config/boards/sk-am64b.conf, config/boards/sk-am68.conf, config/boards/sk-am69.conf, config/boards/sk-tda4vm.conf
Replaced/expanded KERNEL_TARGET / KERNEL_TEST_TARGET values to vendor/vendor-rt/vendor-edge forms; updated header/comments; added OPTEE_PLATFORM (and where present OPTEE_ARGS, CC33XX_SUPPORT); minor inline edits (e.g., dtb→dts change).
Kernel defconfigs (added)
config/kernel/linux-k3-beagle-edge.config, config/kernel/linux-k3-vendor-edge.config
Added two comprehensive K3 defconfigs (6.12-era) with extensive CONFIG_* entries for platform drivers and subsystems.
K3 common include — branch‑scoped sources & bootgen tweak
config/sources/families/include/k3_common.inc
Removed global ATFSOURCE; added an edge branch block exporting KERNELSOURCE, KERNEL_MAJOR_MINOR, KERNEL_DESCRIPTION, ATFBRANCH, OPTEE_BRANCH, TI_LINUX_FIRMWARE_BRANCH, BOOTSOURCE, BOOTBRANCH; changed bootgen CROSS_COMPILE prefix from arm-linux-gnueabihf- to arm-linux-gnueabi-.
K3‑Beagle family sources
config/sources/families/k3-beagle.conf
Switched case pattern from `current
K3 family sources — vendor/vendor-edge restructuring
config/sources/families/k3.conf
Added top-level ATFSOURCE and TI_PSDK_TAG; relocated KERNELSOURCE into branch blocks; changed branch/tag semantics and updated KERNELBRANCH, KERNEL_DESCRIPTION, ATFBRANCH, OPTEE_BRANCH, TI_LINUX_FIRMWARE_BRANCH, BOOTSOURCE, BOOTBRANCH per branch (vendor, vendor-rt, vendor-edge).

Sequence Diagram(s)

sequenceDiagram
  participant Build as Build system (BRANCH)
  participant K3Common as include/k3_common.inc
  participant K3Family as sources/families/k3.conf
  participant Board as board config

  Build->>K3Common: evaluate BRANCH
  alt BRANCH == edge
    K3Common-->>Build: export edge KERNELSOURCE / KERNEL_MAJOR_MINOR / ATF/OPTEE/BOOT branches
  else BRANCH == vendor or vendor-rt
    K3Family-->>Build: export vendor/vendor-rt KERNELSOURCE / KERNELBRANCH / ATF/OPTEE/BOOT branches
  end
  Build->>Board: apply board-level KERNEL_TARGET / KERNEL_TEST_TARGET / OPTEE_* variables
  Note right of Board: Boards now prefer vendor* kernels and may include OPTEE_PLATFORM / OPTEE_ARGS / CC33XX_SUPPORT
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Files needing extra attention:
    • config/kernel/linux-k3-beagle-edge.config, config/kernel/linux-k3-vendor-edge.config — very large generated defconfigs: verify CONFIG choices (built-in vs module) and unintended omissions.
    • config/sources/families/k3.conf, config/sources/families/k3-beagle.conf, config/sources/families/include/k3_common.inc — branch/tag/variable scoping and moved declarations.
    • config/sources/families/include/k3_common.inc — CROSS_COMPILE tweak in bootgen: confirm expected toolchain prefix.

Possibly related PRs

Suggested labels

Patches

Suggested reviewers

  • glneo
  • igorpecovnik
  • rpardini

Poem

🐰 I hop through configs, tidy each line,
Vendor kernels chosen, OP‑TEE signs shine.
Defconfigs sprout branches, sources rearranged,
Tiny cross‑compile tweak, headers exchanged.
A rabbit’s small patch — build paths realigned.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: fixing boot issues, renaming branches (current/edge to vendor/vendor-rt/vendor-edge), and adding an upstream edge branch for K3 boards.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@github-actions github-actions bot added 11 Milestone: Fourth quarter release size/large PR with 250 lines or more Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... labels Nov 13, 2025
Copy link
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.

Actionable comments posted: 0

🧹 Nitpick comments (2)
config/boards/pocketbeagle2.conf (1)

17-17: Clarify the inline comment.

The comment states "#Name changed in upstream" but the BOOT_FDT_FILE value itself hasn't changed in this diff. If this is documenting a historical upstream change, consider making that clearer (e.g., "#Previously named differently in upstream"). If this is documenting a future change, clarify when/where it's expected to change.

config/sources/families/include/k3_common.inc (1)

31-32: Verify and resolve uncertainty comments.

The inline comments "might not need to define?" on KERNELSOURCE, KERNEL_MAJOR_MINOR, and BOOTSOURCE suggest uncertainty. Per established patterns, KERNELSOURCE and BOOTSOURCE can be omitted when using standard mainline sources since the build system falls back to defaults. KERNEL_MAJOR_MINOR may also be auto-detected.

Test whether these explicit declarations are necessary, and either remove them (preferred if defaults work) or remove the uncertainty comments if they're required. Based on learnings.

Also applies to: 38-38

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between ebc129f and 542f827.

📒 Files selected for processing (15)
  • config/boards/beaglebone-ai64.conf (2 hunks)
  • config/boards/beagleplay.conf (2 hunks)
  • config/boards/beagley-ai.conf (2 hunks)
  • config/boards/pocketbeagle2.conf (2 hunks)
  • config/boards/sk-am62b.conf (1 hunks)
  • config/boards/sk-am62p.conf (2 hunks)
  • config/boards/sk-am64b.conf (2 hunks)
  • config/boards/sk-am68.conf (2 hunks)
  • config/boards/sk-am69.conf (2 hunks)
  • config/boards/sk-tda4vm.conf (2 hunks)
  • config/kernel/linux-k3-beagle-edge.config (1 hunks)
  • config/kernel/linux-k3-vendor-edge.config (1 hunks)
  • config/sources/families/include/k3_common.inc (2 hunks)
  • config/sources/families/k3-beagle.conf (1 hunks)
  • config/sources/families/k3.conf (1 hunks)
🧰 Additional context used
🧠 Learnings (44)
📓 Common learnings
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.280Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: The-going
Repo: armbian/build PR: 8147
File: config/sources/families/include/sunxi64_common.inc:38-39
Timestamp: 2025-04-30T16:16:47.150Z
Learning: The Armbian build system references Linux kernel versions in the form "tag:v6.14.4" in the KERNELBRANCH variable, even when point release tags might not be directly visible in the upstream repository in the same form.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8328
File: lib/functions/compilation/patch/drivers_network.sh:542-545
Timestamp: 2025-06-24T10:08:40.313Z
Learning: In the Armbian build system, when a PR removes build support for a specific kernel version, version check issues for that removed version become practically irrelevant even if they appear incorrect in isolation. Context about which kernel versions are being deprecated/removed is important for understanding the impact of version-related code changes.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/kernel/linux-k3-vendor-edge.config
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files (regardless of file extension), the standard pattern is to have only one line as a comment describing the board hardware specifications. This single-line description typically includes the SoC model, core count, RAM options, and key features like connectivity options, storage interfaces, and special features. The file extensions indicate board support status: .conf (standard support), .csc (community supported), .eos (end of support), .tvb (tvbox), .wip (work in progress).

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am64b.conf
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/kernel/linux-k3-vendor-edge.config
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am64b.conf
📚 Learning: 2025-07-17T04:12:33.125Z
Learnt from: pyavitz
Repo: armbian/build PR: 8388
File: config/boards/kickpik2b.conf:1-14
Timestamp: 2025-07-17T04:12:33.125Z
Learning: In the Armbian build system, board configuration files (*.conf) follow a project standard of not including shebang lines, even though they contain bash code and are sourced by the build system. This is an established Armbian convention that individual contributors are expected to follow, and changes to this standard would require broader project maintainer approval.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-11-11T20:56:20.280Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.280Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am69.conf
  • config/sources/families/k3-beagle.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-12T21:44:09.061Z
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-08-21T08:10:25.459Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/nanopiduo2.csc:12-12
Timestamp: 2025-08-21T08:10:25.459Z
Learning: KERNEL_TARGET and KERNEL_TEST_TARGET in Armbian build system do not have enforced validation relationships. KERNEL_TARGET is used for interactive menu ordering and branch validation, while KERNEL_TEST_TARGET is used for build list generation and recorded in /etc/armbian-release. No existing codebase validation enforces that KERNEL_TEST_TARGET values must be present in KERNEL_TARGET.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am64b.conf
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
📚 Learning: 2025-09-12T09:49:31.957Z
Learnt from: amazingfate
Repo: armbian/build PR: 8617
File: lib/functions/compilation/kernel.sh:126-127
Timestamp: 2025-09-12T09:49:31.957Z
Learning: In the Armbian build system, the "all" target in kernel build has been used for a long time without issues. The "all" target builds vmlinux/Image/Image.gz defaults for the architecture and works correctly alongside KERNEL_IMAGE_TYPE in the build_targets_build array.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am62p.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-07T17:39:32.272Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8586
File: config/boards/nanopi-r76s.conf:15-21
Timestamp: 2025-09-07T17:39:32.272Z
Learning: In the Armbian build system, the variables $BOARD and $SDCARD are always set by the build framework, so guard checks for these variables are unnecessary in board configuration files and hook functions.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/beagley-ai.conf
📚 Learning: 2025-09-27T21:47:58.020Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am68.conf
  • config/boards/sk-am62b.conf
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/kernel/linux-k3-vendor-edge.config
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am64b.conf
📚 Learning: 2025-09-27T21:49:55.796Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-09-27T21:50:15.915Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am62b.conf
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-07-27T15:53:30.629Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-10-23T19:48:42.980Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-sm8250-edge.config:498-501
Timestamp: 2025-10-23T19:48:42.980Z
Learning: For Armbian EDGE kernel configs, CONFIG_ATH12K=m alone is sufficient for PCI-based Wi-Fi 7 devices (e.g., WCN785x/QCN9274). A separate CONFIG_ATH12K_PCI option is not required, as confirmed by maintainer testing.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the KERNEL_CONFIGURE=yes switch is deprecated. The recommended approach for kernel configuration is now to use the `kernel-config` build command, which provides a more structured way to configure kernel options.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am62b.conf
📚 Learning: 2025-10-13T02:26:18.249Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-08-30T06:56:33.372Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
  • config/kernel/linux-k3-vendor-edge.config
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files, .wip and .conf extensions require BOARD_MAINTAINER to be present and contain at least one maintainer. If no maintainer is present, the board support rules state it does not qualify for standard support and must be moved to community support (.csc extension). This is documented at https://docs.armbian.com/User-Guide_Board-Support-Rules/

Applied to files:

  • config/boards/sk-am62p.conf
  • config/boards/beagley-ai.conf
📚 Learning: 2025-09-11T06:16:10.236Z
Learnt from: SuperKali
Repo: armbian/build PR: 8609
File: config/boards/nanopi-r76s.conf:5-5
Timestamp: 2025-09-11T06:16:10.236Z
Learning: In Armbian board configuration files, WIP (Work In Progress) comments describe intended goals or planned features rather than current implementation state. For example, a comment like "WIP: current kernel" indicates that current kernel support is being worked toward, even if KERNEL_TARGET doesn't yet include "current".

Applied to files:

  • config/boards/sk-am62p.conf
  • config/boards/sk-am68.conf
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.

Applied to files:

  • config/boards/sk-am62p.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-04T23:45:38.860Z
Learnt from: djurny
Repo: armbian/build PR: 8272
File: config/bootscripts/boot-mvebu.cmd:182-186
Timestamp: 2025-06-04T23:45:38.860Z
Learning: In config/bootscripts/boot-mvebu.cmd, the `fdtfile` variable is mandatory for booting and is pre-set by U-Boot, but can be overridden via armbianEnv.txt. If `fdtfile` is empty, the subsequent device tree file search logic will eventually fail and trigger the critical error "Cannot find DT!" with proper error handling.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
📚 Learning: 2025-07-21T04:12:02.439Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-07-21T04:12:02.439Z
Learning: In the Armbian build system, for recurring maintenance tasks like kernel version bumping, TODO comments should use generic version formats (e.g., "MAJOR.MINOR-rc1") rather than specific version numbers (e.g., "6.17-rc1") to avoid the need for frequent comment updates that would create unnecessary maintenance overhead.

Applied to files:

  • config/boards/sk-am68.conf
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.

Applied to files:

  • config/boards/sk-am68.conf
  • config/sources/families/k3-beagle.conf
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-06-25T03:40:52.109Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:40:52.109Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, when KERNELSOURCE is not explicitly declared in a case branch, the system falls back to a default KERNELSOURCE value, so missing KERNELSOURCE declarations are not critical issues.

Applied to files:

  • config/boards/sk-am62b.conf
  • config/sources/families/k3-beagle.conf
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-05-05T12:35:07.143Z
Learnt from: Grippy98
Repo: armbian/build PR: 8152
File: lib/functions/configuration/interactive.sh:209-266
Timestamp: 2025-05-05T12:35:07.143Z
Learning: For the interactive kernel selection in Armbian, KERNEL_MAJOR_MINOR and KERNEL_DESCRIPTION are parsed from family.conf but deliberately not set as environment variables to avoid potential interference with other parts of the build system.

Applied to files:

  • config/sources/families/k3-beagle.conf
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-10T03:00:06.658Z
Learnt from: wei633
Repo: armbian/build PR: 8590
File: packages/bsp/xpressreal-t3/load-rtk-modules.sh:12-13
Timestamp: 2025-09-10T03:00:06.658Z
Learning: When analyzing kernel modules for embedded platforms, always check the target platform's kernel version and source repository as specified in the board/family configuration files, rather than assuming or checking the host system's kernel version.

Applied to files:

  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-04-30T16:16:47.150Z
Learnt from: The-going
Repo: armbian/build PR: 8147
File: config/sources/families/include/sunxi64_common.inc:38-39
Timestamp: 2025-04-30T16:16:47.150Z
Learning: The Armbian build system references Linux kernel versions in the form "tag:v6.14.4" in the KERNELBRANCH variable, even when point release tags might not be directly visible in the upstream repository in the same form.

Applied to files:

  • config/sources/families/k3-beagle.conf
  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-07-23T07:30:52.265Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-05-16T15:34:34.672Z
Learnt from: Grippy98
Repo: armbian/build PR: 8202
File: config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh:2-3
Timestamp: 2025-05-16T15:34:34.672Z
Learning: The shell scripts in the Armbian build system's desktop configuration files, such as config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh, rely on environment variables like $SRC and $destination that are expected to be set externally before the script is executed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:08:11.318Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:13-23
Timestamp: 2025-06-12T21:08:11.318Z
Learning: In config/bootscripts/boot-sunxi.cmd the variable name `align_overlap_oboe_avoidance` intentionally uses the acronym “OBOE” (Off-By-One Error); it is not a typo and should not be renamed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:03:39.686Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:148-161
Timestamp: 2025-06-12T21:03:39.686Z
Learning: In Armbian U-Boot bootscripts, the `${cpu}` environment variable is always pre-set by U-Boot (or defaults to a valid value), so additional guards against it being unset are unnecessary.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-06T15:36:04.682Z
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
📚 Learning: 2025-06-22T00:45:26.182Z
Learnt from: djurny
Repo: armbian/build PR: 8315
File: lib/functions/rootfs/distro-agnostic.sh:54-68
Timestamp: 2025-06-22T00:45:26.182Z
Learning: In Armbian build system, external command dependencies like envsubst are handled by adding the required packages (e.g., gettext for envsubst) to host_dependencies in adaptative_prepare_host_dependencies function in lib/functions/host/prepare-host.sh, rather than checking command availability at runtime.

Applied to files:

  • config/sources/families/include/k3_common.inc
🔇 Additional comments (28)
config/boards/sk-am64b.conf (2)

1-1: LGTM: Branding update consistent with project standards.

The header comment now uses "Texas Instruments" instead of "TI", which aligns with the branding updates applied consistently across other K3 board configurations in this PR.


13-14: LGTM: Kernel target updates align with vendor naming convention.

The transition from "current,edge" to "vendor,vendor-edge" and from "current" to "vendor" for test targets correctly follows the established naming convention for non-mainline/vendor kernel forks. Based on learnings.

config/kernel/linux-k3-vendor-edge.config (1)

1-1100: LGTM: New autogenerated kernel config for vendor-edge branch.

This kernel configuration file supports the new vendor-edge branch for the K3 platform. The config is autogenerated through Armbian's standard process and includes comprehensive hardware support for K3 SoCs. Based on learnings.

config/sources/families/k3-beagle.conf (2)

13-13: LGTM: ATFSOURCE declaration added.

The ATF source is now explicitly declared at the global scope, pointing to Texas Instruments' ARM Trusted Firmware repository. This provides clarity on the firmware source used by the k3-beagle family.


17-29: LGTM: Vendor branch configuration properly structured.

The vendor | vendor-rt case block correctly:

  • Uses vendor naming convention for non-mainline BeagleBoard kernel forks
  • Explicitly declares KERNELSOURCE and BOOTSOURCE for BeagleBoard repositories
  • Sets appropriate branches, tags, and descriptions
  • Disables EXTRAWIFI for vendor branches

Based on learnings.

config/sources/families/k3.conf (3)

13-14: LGTM: Source declarations and version management added.

The additions provide:

  • ATFSOURCE pointing to ARM's mainline ATF repository (differs from k3-beagle which uses TI's fork)
  • TI_PSDK_TAG variable for centralized Processor SDK version management

18-30: LGTM: Vendor branch configuration updated correctly.

The vendor | vendor-rt block now:

  • Uses TI_PSDK_TAG for stable tagged releases (11.01.16)
  • Explicitly sets KERNELSOURCE and BOOTSOURCE to TI repositories
  • Uses specific commits for ATF and OPTEE (not tags) for tighter version control
  • Updated description to "Texas Instruments currently supported Processor SDK kernel"

This provides a stable, tested baseline for production use.


32-44: LGTM: Vendor-edge branch configured for bleeding-edge development.

The vendor-edge block appropriately:

  • Uses latest development branches (ti-linux-6.12.y, master, ti-u-boot-2025.01)
  • Points to TI's repositories
  • Description clarifies this is "latest Processor SDK kernel"

Per learnings, edge branches are experimental and don't require hardware testing before merge.

config/boards/sk-am62p.conf (2)

1-1: LGTM: Branding update consistent.

Header comment updated to use full "Texas Instruments" branding, consistent with other K3 boards in this PR.


12-13: LGTM: Kernel targets updated to vendor variants.

The transition from "current,edge" to "vendor,vendor-edge" and test target to "vendor" correctly follows the vendor naming convention for TI's non-mainline kernel fork. Based on learnings.

config/boards/beagleplay.conf (2)

1-1: LGTM: Branding update with BeaglePlay prefix.

Header comment appropriately prefixes "BeaglePlay" before the TI SoC details, consistent with product naming.


14-15: LGTM: Comprehensive kernel target support.

BeaglePlay now supports three kernel variants:

  • vendor: BeagleBoard's stable vendor kernel
  • vendor-rt: BeagleBoard's real-time vendor kernel
  • edge: Mainline experimental kernel

This provides flexibility for different use cases while defaulting to vendor for testing. Based on learnings.

config/boards/sk-am68.conf (2)

1-1: LGTM: Branding update consistent.

Header comment updated to use full "Texas Instruments" branding, consistent with other K3 boards.


12-13: LGTM: Kernel targets updated to vendor variants.

The transition to "vendor,vendor-edge" and test target "vendor" correctly follows the naming convention for TI's vendor kernel fork. Based on learnings.

config/boards/sk-tda4vm.conf (2)

1-1: LGTM: Branding update consistent.

Header comment updated to use full "Texas Instruments TDA4VM" branding, consistent with other K3 boards in this PR.


15-16: LGTM: Kernel targets updated to vendor variants.

The transition from "current,edge" to "vendor,vendor-edge" and test target to "vendor" correctly follows the vendor naming convention for TI's non-mainline kernel fork. Based on learnings.

config/boards/pocketbeagle2.conf (2)

1-1: LGTM: Board header updated accurately.

The header now includes proper board identification and specifications.


11-12: LGTM: Kernel target naming aligned with vendor fork convention.

The transition from "current/current-rt" to "vendor/vendor-rt" correctly follows the Armbian naming convention where vendor-specific kernel forks use the "vendor" prefix. Based on learnings.

config/boards/beaglebone-ai64.conf (2)

1-1: LGTM: Enhanced board header with manufacturer branding.


15-16: LGTM: Kernel targets updated correctly.

The change from "current" to "vendor" variants aligns with the PR's branch renaming convention, while appropriately retaining "edge" for mainline kernel support. The addition of "vendor-rt" provides real-time kernel variant support. Based on learnings.

config/boards/beagley-ai.conf (2)

12-13: LGTM: Kernel targets updated consistently.

The transition to vendor/vendor-rt/edge variants follows the same pattern as other boards in this PR. Based on learnings.


17-18: LGTM: Board-specific feature flags added.

OPTEE_PLATFORM and CC33XX_SUPPORT are appropriate board configuration variables that enable OP-TEE and CC33XX wireless support respectively.

config/boards/sk-am69.conf (2)

12-13: LGTM: Vendor kernel targets updated appropriately.

The use of "vendor-edge" instead of mainline "edge" correctly reflects this board's use of the TI vendor kernel edge variant as described in the PR objectives.


17-18: LGTM: OP-TEE configuration variables added.

OPTEE_ARGS and OPTEE_PLATFORM provide board-specific OP-TEE build configuration.

config/boards/sk-am62b.conf (1)

12-13: LGTM: Kernel targets aligned with vendor fork convention.

Consistent with the other board configurations in this PR. Based on learnings.

config/kernel/linux-k3-beagle-edge.config (1)

1-1100: LGTM: New edge kernel configuration added.

This auto-generated defconfig for the k3-beagle-edge kernel variant is appropriate for the new experimental edge branch. Per established practices, the edge branch is intended to be bleeding-edge and experimental, not requiring hardware testing before merge. Based on learnings.

config/sources/families/include/k3_common.inc (2)

27-42: LGTM: Edge branch configuration added for mainline kernel support.

The new edge case block appropriately configures the experimental mainline kernel branch with upstream sources. The structure follows established patterns for branch-specific configuration.


64-65: The toolchain change from hard-float to soft-float for R5 builds is intentional and required.

The recent commit ec72a290 by Jonas Wood (Texas Instruments contributor) explicitly updated the R5 bootgen builds from arm-linux-gnueabihf- to arm-linux-gnueabi- as part of updating to TI's official Processor SDK release tag 11.01.16. This is a deliberate architectural change, not an oversight. The OP-TEE build (line 73) correctly remains on arm-linux-gnueabihf- since it targets the A72 cores, not the R5 core.


run_host_command_logged make -j$(nproc) CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm O=build-r5 ${TIBOOT3_BOOTCONFIG}
run_host_command_logged make -j$(nproc) CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm O=build-r5 BINMAN_INDIRS=${SRC}/cache/sources/ti-linux-firmware
run_host_command_logged make -j$(nproc) CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm O=build-r5 ${TIBOOT3_BOOTCONFIG}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why is this change needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fails to build sk-am62p without change. See log

Copy link
Collaborator

Choose a reason for hiding this comment

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

interesting.

   spl/u-boot-spl.bin exceeds file size limit:
     limit:  0x2ef20 bytes
     actual: 0x2f2de bytes
     excess: 0x3be bytes

odd edge-case.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agreed, is worth looking into further, but this CROSS_COMPILE PR change I tested and does work

Copy link
Collaborator

Choose a reason for hiding this comment

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

We seem to be having the same issue with some internal builds, this will get fixed.

For now at least break it out into it's own patch, you are doing too many un-related things in one patch.

Copy link
Contributor Author

@jonaswood01 jonaswood01 Nov 13, 2025

Choose a reason for hiding this comment

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

@glneo that seems unnecessary. PR is already tested and nearly done, and each commit is clear on what is being done. These changes are ones we agreed upon already following your PR

Copy link
Collaborator

Choose a reason for hiding this comment

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

@glneo do you agree this is resolved?

@armbian armbian deleted a comment from coderabbitai bot Nov 13, 2025
Copy link
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.

Actionable comments posted: 0

🧹 Nitpick comments (2)
config/sources/families/include/k3_common.inc (1)

64-65: Bootgen CROSS_COMPILE change is reasonable but keep toolchain alignment in mind

Switching CROSS_COMPILE from arm-linux-gnueabihf- to arm-linux-gnueabi- for the R5 bootgen build is justified given the reported sk-am62p build failure and the R5’s lack of hardware FP. Just be aware that compile_k3_optee() still uses arm-linux-gnueabihf-; once the planned CROSS_COMPILE64/CROSS_COMPILE32 cleanup happens for OP‑TEE, it may be worth double‑checking that all R5 builds consistently use the intended soft‑ or hard‑float toolchain.
Based on learnings

config/boards/beagley-ai.conf (1)

1-1: Confirm OPTEE_PLATFORM for AM67A

The vendor/vendor‑rt/edge kernel targets and CC33xx enablement look good and match the rest of the K3/Beagle ecosystem. One thing to double‑check: this board is described as AM67A, but OPTEE_PLATFORM is set to k3-am62x. If OP‑TEE really expects the AM67A platform to build under the AM62X target, that’s fine; otherwise, this could lead to subtle boot/runtime issues.

If AM67A should use a different OP‑TEE platform (e.g. a dedicated k3-am67x), please update OPTEE_PLATFORM here and in any related boards accordingly. Based on learnings

Also applies to: 12-13, 17-18

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 542f827 and 5768a49.

📒 Files selected for processing (13)
  • config/boards/beaglebone-ai64.conf (2 hunks)
  • config/boards/beagleplay.conf (2 hunks)
  • config/boards/beagley-ai.conf (2 hunks)
  • config/boards/pocketbeagle2.conf (2 hunks)
  • config/boards/sk-am62p.conf (2 hunks)
  • config/boards/sk-am64b.conf (2 hunks)
  • config/boards/sk-am68.conf (2 hunks)
  • config/boards/sk-am69.conf (2 hunks)
  • config/boards/sk-tda4vm.conf (2 hunks)
  • config/kernel/linux-k3-beagle-edge.config (1 hunks)
  • config/sources/families/include/k3_common.inc (2 hunks)
  • config/sources/families/k3-beagle.conf (1 hunks)
  • config/sources/families/k3.conf (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • config/boards/sk-am62p.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am64b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am68.conf
  • config/boards/beaglebone-ai64.conf
🧰 Additional context used
🧠 Learnings (56)
📓 Common learnings
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8328
File: lib/functions/compilation/patch/drivers_network.sh:542-545
Timestamp: 2025-06-24T10:08:40.313Z
Learning: In the Armbian build system, when a PR removes build support for a specific kernel version, version check issues for that removed version become practically irrelevant even if they appear incorrect in isolation. Context about which kernel versions are being deprecated/removed is important for understanding the impact of version-related code changes.
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/beagleplay.conf
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files (regardless of file extension), the standard pattern is to have only one line as a comment describing the board hardware specifications. This single-line description typically includes the SoC model, core count, RAM options, and key features like connectivity options, storage interfaces, and special features. The file extensions indicate board support status: .conf (standard support), .csc (community supported), .eos (end of support), .tvb (tvbox), .wip (work in progress).

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
📚 Learning: 2025-09-12T21:44:09.061Z
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
📚 Learning: 2025-09-07T17:39:32.272Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8586
File: config/boards/nanopi-r76s.conf:15-21
Timestamp: 2025-09-07T17:39:32.272Z
Learning: In the Armbian build system, the variables $BOARD and $SDCARD are always set by the build framework, so guard checks for these variables are unnecessary in board configuration files and hook functions.

Applied to files:

  • config/boards/sk-tda4vm.conf
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-08-21T08:10:25.459Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/nanopiduo2.csc:12-12
Timestamp: 2025-08-21T08:10:25.459Z
Learning: KERNEL_TARGET and KERNEL_TEST_TARGET in Armbian build system do not have enforced validation relationships. KERNEL_TARGET is used for interactive menu ordering and branch validation, while KERNEL_TEST_TARGET is used for build list generation and recorded in /etc/armbian-release. No existing codebase validation enforces that KERNEL_TEST_TARGET values must be present in KERNEL_TARGET.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-12T09:49:31.957Z
Learnt from: amazingfate
Repo: armbian/build PR: 8617
File: lib/functions/compilation/kernel.sh:126-127
Timestamp: 2025-09-12T09:49:31.957Z
Learning: In the Armbian build system, the "all" target in kernel build has been used for a long time without issues. The "all" target builds vmlinux/Image/Image.gz defaults for the architecture and works correctly alongside KERNEL_IMAGE_TYPE in the build_targets_build array.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagleplay.conf
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.

Applied to files:

  • config/boards/sk-tda4vm.conf
  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-06-04T23:45:38.860Z
Learnt from: djurny
Repo: armbian/build PR: 8272
File: config/bootscripts/boot-mvebu.cmd:182-186
Timestamp: 2025-06-04T23:45:38.860Z
Learning: In config/bootscripts/boot-mvebu.cmd, the `fdtfile` variable is mandatory for booting and is pre-set by U-Boot, but can be overridden via armbianEnv.txt. If `fdtfile` is empty, the subsequent device tree file search logic will eventually fail and trigger the critical error "Cannot find DT!" with proper error handling.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
📚 Learning: 2025-11-11T20:56:20.303Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/beagleplay.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-06-25T03:40:52.109Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:40:52.109Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, when KERNELSOURCE is not explicitly declared in a case branch, the system falls back to a default KERNELSOURCE value, so missing KERNELSOURCE declarations are not critical issues.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-05-05T12:35:07.143Z
Learnt from: Grippy98
Repo: armbian/build PR: 8152
File: lib/functions/configuration/interactive.sh:209-266
Timestamp: 2025-05-05T12:35:07.143Z
Learning: For the interactive kernel selection in Armbian, KERNEL_MAJOR_MINOR and KERNEL_DESCRIPTION are parsed from family.conf but deliberately not set as environment variables to avoid potential interference with other parts of the build system.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-10-13T02:26:18.249Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
  • config/sources/families/k3.conf
📚 Learning: 2025-06-24T10:08:40.313Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8328
File: lib/functions/compilation/patch/drivers_network.sh:542-545
Timestamp: 2025-06-24T10:08:40.313Z
Learning: In the Armbian build system, when a PR removes build support for a specific kernel version, version check issues for that removed version become practically irrelevant even if they appear incorrect in isolation. Context about which kernel versions are being deprecated/removed is important for understanding the impact of version-related code changes.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-25T18:37:00.330Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-07-25T03:51:50.830Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-07-25T03:51:50.830Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
  • config/sources/families/k3.conf
📚 Learning: 2025-03-31T22:20:48.475Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-07-23T10:01:41.310Z
Learnt from: amazingfate
Repo: armbian/build PR: 8419
File: lib/functions/host/prepare-host.sh:272-275
Timestamp: 2025-07-23T10:01:41.310Z
Learning: In the Armbian build system, the design philosophy is to fail fast when host dependencies are not met rather than gracefully skipping unsupported architectures. This ensures build environment consistency and prevents silent failures. Host dependency checks should be explicit and non-negotiable.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-04-30T16:16:47.150Z
Learnt from: The-going
Repo: armbian/build PR: 8147
File: config/sources/families/include/sunxi64_common.inc:38-39
Timestamp: 2025-04-30T16:16:47.150Z
Learning: The Armbian build system references Linux kernel versions in the form "tag:v6.14.4" in the KERNELBRANCH variable, even when point release tags might not be directly visible in the upstream repository in the same form.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-11-06T15:36:04.682Z
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-07-21T04:12:02.439Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-07-21T04:12:02.439Z
Learning: In the Armbian build system, for recurring maintenance tasks like kernel version bumping, TODO comments should use generic version formats (e.g., "MAJOR.MINOR-rc1") rather than specific version numbers (e.g., "6.17-rc1") to avoid the need for frequent comment updates that would create unnecessary maintenance overhead.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-06-22T00:45:26.182Z
Learnt from: djurny
Repo: armbian/build PR: 8315
File: lib/functions/rootfs/distro-agnostic.sh:54-68
Timestamp: 2025-06-22T00:45:26.182Z
Learning: In Armbian build system, external command dependencies like envsubst are handled by adding the required packages (e.g., gettext for envsubst) to host_dependencies in adaptative_prepare_host_dependencies function in lib/functions/host/prepare-host.sh, rather than checking command availability at runtime.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-13T14:50:44.651Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8925
File: lib/functions/host/docker.sh:141-141
Timestamp: 2025-11-13T14:50:44.651Z
Learning: In the Armbian build system, certain boards have U-Boot that doesn't build correctly on ubuntu:noble but works on ubuntu:jammy. For these boards, DOCKER_ARMBIAN_BASE_IMAGE can be set to "ubuntu:jammy" via an extension file loaded before docker_cli_prepare() runs, allowing legacy toolchains to work while the community works on proper fixes with limited resources.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beagleplay.conf
📚 Learning: 2025-07-04T18:33:19.873Z
Learnt from: leggewie
Repo: armbian/build PR: 8357
File: config/boards/qcom-robotics-rb5.conf:88-88
Timestamp: 2025-07-04T18:33:19.873Z
Learning: In the Armbian build system, package transitions in Debian/Ubuntu don't happen uniformly across all releases. For example, the transition from plasma-workspace-wayland to plasma-workspace occurred in newer releases like trixie (Debian testing) around July 2024, but older releases like jammy (Ubuntu 22.04) still maintain the original plasma-workspace-wayland package. Release-specific package availability must be considered when updating package references.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-03-31T22:20:41.849Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:73-75
Timestamp: 2025-03-31T22:20:41.849Z
Learning: When porting patches between U-Boot versions (like from 2025.01 to 2025.04), rpardini prefers to maintain patches as-is rather than introducing refactoring changes, even when potential improvements are identified. This approach prioritizes consistency and reduces the risk of introducing new issues.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-14T11:37:35.089Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:65-72
Timestamp: 2025-09-14T11:37:35.089Z
Learning: In the Armbian build system, patch directories referenced in BOOTPATCHDIR and KERNELPATCHDIR configurations can be non-existent without causing build failures. Empty patch directories are also ignored by git, so missing patch directories should not be flagged as errors during code review.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-07-27T15:53:30.629Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-03T11:42:46.660Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:96-169
Timestamp: 2025-10-03T11:42:46.660Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), deletion of kernel config files does not need to be handled. The workflow intentionally only captures ACMR (added/copied/modified/renamed) changes and does not need to propagate deletions to the aggregator.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-10-04T17:59:19.369Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:217-220
Timestamp: 2025-10-04T17:59:19.369Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), the workflow is designed to rewrite existing kernel configs only. New/untracked files can be safely ignored, so using `git diff --quiet` (which ignores untracked files) is the correct approach for detecting changes rather than `git status --porcelain`.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-27T21:49:55.796Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-09-27T21:47:58.020Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-07-23T07:30:52.265Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-05-16T15:34:34.672Z
Learnt from: Grippy98
Repo: armbian/build PR: 8202
File: config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh:2-3
Timestamp: 2025-05-16T15:34:34.672Z
Learning: The shell scripts in the Armbian build system's desktop configuration files, such as config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh, rely on environment variables like $SRC and $destination that are expected to be set externally before the script is executed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:08:11.318Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:13-23
Timestamp: 2025-06-12T21:08:11.318Z
Learning: In config/bootscripts/boot-sunxi.cmd the variable name `align_overlap_oboe_avoidance` intentionally uses the acronym “OBOE” (Off-By-One Error); it is not a typo and should not be renamed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:03:39.686Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:148-161
Timestamp: 2025-06-12T21:03:39.686Z
Learning: In Armbian U-Boot bootscripts, the `${cpu}` environment variable is always pre-set by U-Boot (or defaults to a valid value), so additional guards against it being unset are unnecessary.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files, .wip and .conf extensions require BOARD_MAINTAINER to be present and contain at least one maintainer. If no maintainer is present, the board support rules state it does not qualify for standard support and must be moved to community support (.csc extension). This is documented at https://docs.armbian.com/User-Guide_Board-Support-Rules/

Applied to files:

  • config/boards/beagley-ai.conf
📚 Learning: 2025-07-17T04:12:33.125Z
Learnt from: pyavitz
Repo: armbian/build PR: 8388
File: config/boards/kickpik2b.conf:1-14
Timestamp: 2025-07-17T04:12:33.125Z
Learning: In the Armbian build system, board configuration files (*.conf) follow a project standard of not including shebang lines, even though they contain bash code and are sourced by the build system. This is an established Armbian convention that individual contributors are expected to follow, and changes to this standard would require broader project maintainer approval.

Applied to files:

  • config/boards/beagley-ai.conf
📚 Learning: 2025-09-27T21:50:15.915Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-23T19:48:42.980Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-sm8250-edge.config:498-501
Timestamp: 2025-10-23T19:48:42.980Z
Learning: For Armbian EDGE kernel configs, CONFIG_ATH12K=m alone is sufficient for PCI-based Wi-Fi 7 devices (e.g., WCN785x/QCN9274). A separate CONFIG_ATH12K_PCI option is not required, as confirmed by maintainer testing.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-08-30T06:56:33.372Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-11-08T06:39:24.527Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.

Applied to files:

  • config/sources/families/k3.conf
📚 Learning: 2025-09-29T06:32:32.361Z
Learnt from: amazingfate
Repo: armbian/build PR: 8687
File: config/sources/mainline-kernel.conf.sh:11-11
Timestamp: 2025-09-29T06:32:32.361Z
Learning: There can be timing discrepancies between different kernel.org sources (web pages vs git repositories) when new kernel releases are published. Direct verification via git.kernel.org repository URLs is more reliable than general web searches for confirming tag availability.

Applied to files:

  • config/sources/families/k3.conf
📚 Learning: 2025-09-10T03:00:06.658Z
Learnt from: wei633
Repo: armbian/build PR: 8590
File: packages/bsp/xpressreal-t3/load-rtk-modules.sh:12-13
Timestamp: 2025-09-10T03:00:06.658Z
Learning: When analyzing kernel modules for embedded platforms, always check the target platform's kernel version and source repository as specified in the board/family configuration files, rather than assuming or checking the host system's kernel version.

Applied to files:

  • config/sources/families/k3.conf
🔇 Additional comments (8)
config/sources/families/include/k3_common.inc (1)

27-42: Edge branch wiring for upstream mainline looks coherent

The new edge) case cleanly scopes upstream mainline settings (torvalds/linux master, u-boot master, ATF/OPTEE/firmware branches) without interfering with vendor/vendor-edge handling in k3.conf. The explicit KERNELSOURCE, KERNEL_MAJOR_MINOR, and description match the intended “bleeding-edge experimental” semantics and are consistent with how other families document edge.
Based on learnings

config/boards/beagleplay.conf (1)

1-1: Board now correctly targets vendor branches and stable test kernel

Updating KERNEL_TARGET to vendor,vendor-rt,edge and KERNEL_TEST_TARGET to vendor aligns this board with the new vendor/vendor‑rt naming and testing policy while still exposing upstream edge as an opt‑in. This matches the project’s convention that non‑mainline vendor trees use vendor* branch names.
Based on learnings

Also applies to: 14-15

config/boards/sk-tda4vm.conf (1)

1-1: Sk-TDA4VM vendor/vendor-edge wiring and OP-TEE platform look consistent

The switch to KERNEL_TARGET="vendor,vendor-edge" plus KERNEL_TEST_TARGET="vendor" and OPTEE_PLATFORM="k3-j721e" matches the TI PSDK split between supported vs pre-release tags and uses the expected OP‑TEE platform string for TDA4VM/J721E. Nothing blocking here.
Based on learnings

Also applies to: 15-16, 20-20

config/boards/pocketbeagle2.conf (1)

1-1: PocketBeagle 2 branch renames and DT comment are fine

Moving KERNEL_TARGET/KERNEL_TEST_TARGET to vendor,vendor-rt/vendor correctly reflects that this board tracks TI/Beagle vendor kernels rather than mainline. The inline note on BOOT_FDT_FILE documenting the upstream DT name change is helpful for future debugging and does not affect behaviour.
Based on learnings

Also applies to: 11-12, 17-17

config/kernel/linux-k3-beagle-edge.config (1)

1-1101: Edge defconfig looks internally consistent; treat as generated and managed via tooling

This new linux-k3-beagle-edge defconfig enables a broad, sensible feature set (TI K3 SoC support, CPSW, PCIe, multimedia, common filesystems, SELinux/AppArmor, etc.) and appears structurally consistent with other Armbian edge configs. Given these files are generated/maintained by the config tooling, there’s nothing here that needs manual adjustment in this PR.
Based on learnings

config/sources/families/k3.conf (3)

13-13: ATFSOURCE relocation into k3 family config is appropriate

Defining ATFSOURCE at the family level (k3.conf) rather than in the shared include keeps bootloader source selection centralized alongside the TI PSDK wiring, and makes it clear that all K3 branches (vendor, vendor‑edge, upstream edge) share the same ATF upstream.
Based on learnings


17-30: Vendor/vendor-rt: PSDK tag pinning and source layout are clear

The vendor | vendor-rt case now cleanly pins all components to a single TI PSDK tag via TI_PSDK_TAG and uses that consistently for kernel, u‑boot, and firmware while locking ATF/OP‑TEE to specific commits. This matches the documented “currently supported Processor SDK” semantics and should give reproducible builds across boards.
Based on learnings


32-44: Vendor-edge description and branches match “pre-release PSDK” intent

For vendor-edge, using branch:ti-linux-6.12.y for the kernel, branch:ti-u-boot-2025.01 for U‑Boot, and branch:master/branch:ti-linux-firmware for ATF/OP‑TEE/firmware aligns with the “latest pre‑released Processor SDK” description. The naming and comments now clearly differentiate stable PSDK tags (vendor) from development/pre‑release flows (vendor-edge), which should help users choose the right risk level.
Based on learnings

Copy link
Contributor

@Grippy98 Grippy98 left a comment

Choose a reason for hiding this comment

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

Approved from my end

@github-actions github-actions bot removed the Needs review Seeking for review label Nov 13, 2025
Copy link
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.

Actionable comments posted: 0

🧹 Nitpick comments (2)
config/sources/families/include/k3_common.inc (1)

27-42: Edge branch wiring to upstream sources looks correct; keep KERNEL_MAJOR_MINOR in sync

The new edge) block correctly scopes mainline-only settings: KERNELSOURCE to torvalds/linux, ATF/OPTEE/firmware/U‑Boot to upstream branches, and leaves KERNELBRANCH to be driven by mainline-kernel.conf.sh as per framework expectations. The only maintenance burden is KERNEL_MAJOR_MINOR="6.18", which now needs to be bumped in lockstep with the mainline kernel version configured in mainline-kernel.conf.sh to keep interactive kernel selection and metadata accurate. Consider noting this in release bump checklists, but otherwise this looks good and matches the agreed “edge = mainline” model.

Based on learnings

config/sources/families/k3.conf (1)

32-44: Clarify vendor‑edge comment to reflect branch‑based sources, not tags

The vendor-edge) block correctly uses TI’s development branches (branch:ti-linux-6.12.y, branch:ti-u-boot-2025.01, branch:ti-linux-firmware, plus ATF/OPTEE branch:master) to represent “latest pre-release” SDK content. The leading comment still says “uses latest pre-released TI Processor SDK tag”, which could confuse readers since no tag: is actually used here. Consider rephrasing to something like “uses latest pre-release TI Processor SDK branches (ti-linux-6.12.y, ti-u-boot-2025.01, ti-linux-firmware)” so the comment matches the implementation.

Based on learnings

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f9a205c and fbbe89b.

📒 Files selected for processing (13)
  • config/boards/beaglebone-ai64.conf (2 hunks)
  • config/boards/beagleplay.conf (2 hunks)
  • config/boards/beagley-ai.conf (2 hunks)
  • config/boards/pocketbeagle2.conf (2 hunks)
  • config/boards/sk-am62p.conf (2 hunks)
  • config/boards/sk-am64b.conf (2 hunks)
  • config/boards/sk-am68.conf (2 hunks)
  • config/boards/sk-am69.conf (2 hunks)
  • config/boards/sk-tda4vm.conf (2 hunks)
  • config/kernel/linux-k3-beagle-edge.config (1 hunks)
  • config/sources/families/include/k3_common.inc (2 hunks)
  • config/sources/families/k3-beagle.conf (1 hunks)
  • config/sources/families/k3.conf (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • config/boards/beagley-ai.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62p.conf
  • config/boards/beagleplay.conf
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-11T20:56:20.303Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-25T03:40:52.109Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:40:52.109Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, when KERNELSOURCE is not explicitly declared in a case branch, the system falls back to a default KERNELSOURCE value, so missing KERNELSOURCE declarations are not critical issues.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-05-05T12:35:07.143Z
Learnt from: Grippy98
Repo: armbian/build PR: 8152
File: lib/functions/configuration/interactive.sh:209-266
Timestamp: 2025-05-05T12:35:07.143Z
Learning: For the interactive kernel selection in Armbian, KERNEL_MAJOR_MINOR and KERNEL_DESCRIPTION are parsed from family.conf but deliberately not set as environment variables to avoid potential interference with other parts of the build system.

Applied to files:

  • config/sources/families/include/k3_common.inc
🔇 Additional comments (9)
config/kernel/linux-k3-beagle-edge.config (1)

1-1101: LGTM — Comprehensive K3 edge defconfig properly configured.

This is a well-structured, Armbian-generated kernel configuration for the K3 BeagleBoard edge branch. The configuration correctly enables K3-specific hardware support (CPSW networking, UDMA, remoteproc, thermal management), includes comprehensive peripheral support (I2C/SPI, PMICs, regulators, USB), and employs reasonable security posture (SELinux, AppArmor). The broad feature set with experimental modules is appropriate for an edge branch targeting early adopters.

Per the PR notes, this has been tested and verified to build and boot on sk-am62b, sk-am62p, and sk-am64b.

If applicable, verify this config is consistent with the sibling vendor-edge defconfig and other K3 family configurations to ensure alignment across branch naming changes (current → vendor, edge → vendor-edge).

config/boards/pocketbeagle2.conf (3)

11-12: LGTM! Branch naming follows convention.

The kernel target changes from "current/current-rt" to "vendor/vendor-rt" correctly align with the Armbian naming convention for vendor kernel branches.

Based on learnings


17-17: Clarify the device tree name change status.

The comment "#Name changed in upstream" is ambiguous. Please clarify:

  • Has the device tree name already changed in upstream kernel?
  • If so, what is the new name, and does this config need updating?
  • If it's a future change, should this be tracked as a TODO?

1-1: The PocketBeagle 2 features 512 MB LPDDR4 SDRAM, confirming the updated hardware specification in the header comment is accurate.

config/boards/beaglebone-ai64.conf (2)

1-1: Header update addresses past review feedback.

The addition of "TDA4VM" to the board description addresses the previous request for SoC name consistency with other boards.


15-16: Branch naming changes align with established conventions.

The renaming of kernel targets from "current,edge" to "vendor,vendor-rt,edge" follows the correct naming convention where "vendor" and "vendor-rt" are used for non-mainline/vendor forks, while "edge" is reserved for mainline kernel branches. The KERNEL_TEST_TARGET update is consistent with this change.

Based on learnings

config/sources/families/include/k3_common.inc (1)

64-65: CROSS_COMPILE switch to arm-linux-gnueabi- for R5 SPL build

Changing CROSS_COMPILE from arm-linux-gnueabihf- to arm-linux-gnueabi- for the R5 build-r5 U‑Boot/SPL build is consistent with a 32‑bit ARM soft‑float target and matches the prior build‑failure discussion for sk-am62p. As long as the gnueabi toolchain is present in the host dependencies (which appears to be the case for other ARM 32‑bit uses), this change is sound and should help keep SPL size under the ROM limit without impacting the 64‑bit pieces.

config/sources/families/k3.conf (1)

13-28: Vendor / vendor‑rt tag/commit wiring is consistent and reproducible

Defining ATFSOURCE here and then scoping the TI PSDK details under vendor | vendor-rt) makes sense: kernel, u‑boot, firmware all use tag:${TI_PSDK_TAG}, and ATF/OP‑TEE are pinned to explicit commits, giving you a fully reproducible “currently supported TI Processor SDK” path. This matches Armbian’s convention that vendor/vendor-rt track non‑mainline vendor trees and keeps room for a separate mainline edge handled via k3_common.inc.

Based on learnings

config/sources/families/k3-beagle.conf (1)

13-29: Beagle vendor scoping and ATFSOURCE override look correct

Moving Beagle’s KERNELSOURCE/BOOTSOURCE under vendor | vendor-rt) while setting ATFSOURCE to TI’s ATF fork ensures that only vendor builds use the BeagleBoard/TI trees, and that the new generic mainline edge configuration from k3_common.inc isn’t unintentionally overridden. The KERNEL/BOOT branches, ATF/OPTEE/TI_LINUX_FIRMWARE tags, and description are all coherently tied to the 6.12-based Beagle vendor stack.

Based on learnings

Copy link
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.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between fbbe89b and 57d6abd.

📒 Files selected for processing (10)
  • config/boards/beaglebone-ai64.conf (2 hunks)
  • config/boards/beagleplay.conf (2 hunks)
  • config/boards/beagley-ai.conf (2 hunks)
  • config/boards/pocketbeagle2.conf (2 hunks)
  • config/boards/sk-am62b.conf (2 hunks)
  • config/boards/sk-am62p.conf (2 hunks)
  • config/boards/sk-am64b.conf (2 hunks)
  • config/boards/sk-am68.conf (2 hunks)
  • config/boards/sk-am69.conf (2 hunks)
  • config/boards/sk-tda4vm.conf (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am62p.conf
  • config/boards/beagley-ai.conf
🧰 Additional context used
🧠 Learnings (22)
📓 Common learnings
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-11-11T20:56:20.303Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files (regardless of file extension), the standard pattern is to have only one line as a comment describing the board hardware specifications. This single-line description typically includes the SoC model, core count, RAM options, and key features like connectivity options, storage interfaces, and special features. The file extensions indicate board support status: .conf (standard support), .csc (community supported), .eos (end of support), .tvb (tvbox), .wip (work in progress).

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-09-12T21:44:09.061Z
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-08-21T08:10:25.459Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/nanopiduo2.csc:12-12
Timestamp: 2025-08-21T08:10:25.459Z
Learning: KERNEL_TARGET and KERNEL_TEST_TARGET in Armbian build system do not have enforced validation relationships. KERNEL_TARGET is used for interactive menu ordering and branch validation, while KERNEL_TEST_TARGET is used for build list generation and recorded in /etc/armbian-release. No existing codebase validation enforces that KERNEL_TEST_TARGET values must be present in KERNEL_TARGET.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-09-12T09:49:31.957Z
Learnt from: amazingfate
Repo: armbian/build PR: 8617
File: lib/functions/compilation/kernel.sh:126-127
Timestamp: 2025-09-12T09:49:31.957Z
Learning: In the Armbian build system, the "all" target in kernel build has been used for a long time without issues. The "all" target builds vmlinux/Image/Image.gz defaults for the architecture and works correctly alongside KERNEL_IMAGE_TYPE in the build_targets_build array.

Applied to files:

  • config/boards/beagleplay.conf
  • config/boards/sk-tda4vm.conf
📚 Learning: 2025-11-13T14:50:44.651Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8925
File: lib/functions/host/docker.sh:141-141
Timestamp: 2025-11-13T14:50:44.651Z
Learning: In the Armbian build system, certain boards have U-Boot that doesn't build correctly on ubuntu:noble but works on ubuntu:jammy. For these boards, DOCKER_ARMBIAN_BASE_IMAGE can be set to "ubuntu:jammy" via an extension file loaded before docker_cli_prepare() runs, allowing legacy toolchains to work while the community works on proper fixes with limited resources.

Applied to files:

  • config/boards/beagleplay.conf
📚 Learning: 2025-07-21T04:12:02.439Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-07-21T04:12:02.439Z
Learning: In the Armbian build system, for recurring maintenance tasks like kernel version bumping, TODO comments should use generic version formats (e.g., "MAJOR.MINOR-rc1") rather than specific version numbers (e.g., "6.17-rc1") to avoid the need for frequent comment updates that would create unnecessary maintenance overhead.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-06-04T23:45:38.860Z
Learnt from: djurny
Repo: armbian/build PR: 8272
File: config/bootscripts/boot-mvebu.cmd:182-186
Timestamp: 2025-06-04T23:45:38.860Z
Learning: In config/bootscripts/boot-mvebu.cmd, the `fdtfile` variable is mandatory for booting and is pre-set by U-Boot, but can be overridden via armbianEnv.txt. If `fdtfile` is empty, the subsequent device tree file search logic will eventually fail and trigger the critical error "Cannot find DT!" with proper error handling.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.

Applied to files:

  • config/boards/pocketbeagle2.conf
  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-tda4vm.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/boards/sk-am69.conf
  • config/boards/sk-tda4vm.conf
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.

Applied to files:

  • config/boards/sk-am69.conf
  • config/boards/sk-am62b.conf
  • config/boards/sk-am68.conf
📚 Learning: 2025-09-11T06:16:10.236Z
Learnt from: SuperKali
Repo: armbian/build PR: 8609
File: config/boards/nanopi-r76s.conf:5-5
Timestamp: 2025-09-11T06:16:10.236Z
Learning: In Armbian board configuration files, WIP (Work In Progress) comments describe intended goals or planned features rather than current implementation state. For example, a comment like "WIP: current kernel" indicates that current kernel support is being worked toward, even if KERNEL_TARGET doesn't yet include "current".

Applied to files:

  • config/boards/sk-am62b.conf
📚 Learning: 2025-09-07T17:39:32.272Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8586
File: config/boards/nanopi-r76s.conf:15-21
Timestamp: 2025-09-07T17:39:32.272Z
Learning: In the Armbian build system, the variables $BOARD and $SDCARD are always set by the build framework, so guard checks for these variables are unnecessary in board configuration files and hook functions.

Applied to files:

  • config/boards/sk-tda4vm.conf
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.

Applied to files:

  • config/boards/sk-am68.conf
🔇 Additional comments (14)
config/boards/sk-am69.conf (2)

1-1: LGTM! Improved board description.

The updated header comment provides comprehensive hardware specifications, improving documentation clarity.


12-13: Branch naming follows convention; verify sk-am69 functionality.

The kernel target changes correctly follow the vendor naming convention established in PR #8913. However, the PR description indicates that sk-am69 was not tested on either vendor or vendor-edge branches.

Please verify that sk-am69 builds and boots successfully with the vendor and vendor-edge kernel targets, especially since similar boards (sk-am62b, sk-am62p, sk-am64b) tested successfully.

Based on learnings.

config/boards/sk-am68.conf (3)

1-1: LGTM! More descriptive header.

The updated header comment provides detailed hardware specifications following the standard pattern for Armbian board configuration files.


12-13: LGTM! Branch rename aligns with naming convention.

The change from "current,edge" to "vendor,vendor-edge" correctly reflects that TI K3 boards use vendor/non-mainline kernel forks. This aligns with the established naming convention where "vendor" branches are reserved for non-mainline kernels.

Based on learnings


17-18: ****

The OPTEE_PLATFORM value of "k3-j784s4" for AM68 SK is correct. Per official U-Boot documentation, this assignment is intentional: "The following is not a typo, j784s4 is the OP-TEE platform for j721s2." The AM68 Starter Kit is based on the J721S2 family of SoCs, and while the bootconfig values reflect the U-Boot/TFA platform identifier (j721s2_evm), the OP-TEE platform identifier is correctly set to k3-j784s4. No changes are needed.

Likely an incorrect or invalid review comment.

config/boards/sk-tda4vm.conf (3)

1-1: Good clarification with full company name.

Expanding "TI" to "Texas Instruments" improves readability and consistency.


20-20: OPTEE_PLATFORM="k3-j721e" is correct for j721e SoC.

OP-TEE supports the TI K3 / J721E platform (k3-j721e), as documented in TI Processor SDK Linux and U-Boot documentation showing PLATFORM=k3-j721e as the correct identifier for J721e EVM builds. The addition follows the proper pattern consistent with other j721e boards (beaglebone-ai64) and correctly integrates with the k3_common.inc build system where OPTEE_PLATFORM is passed to the OP-TEE Makefile.


15-16: Now I'll check the complete sk-tda4vm configuration to understand the board setup:

Based on my verification:

Branch configuration is correct; testing needs verification.

The vendor and vendor-edge branches are properly defined in k3.conf with vendor-edge at line 32 for TI Processor SDK support. The KERNEL_TARGET="vendor,vendor-edge" and KERNEL_TEST_TARGET="vendor" settings are valid—vendor is a proper subset for testing. However, the PR explicitly states sk-tda4vm was "not tested" with these vendor branch changes. While previous builds succeeded with current/edge kernels, this board requires build/boot verification with the new vendor/vendor-edge branches before merging.

config/boards/pocketbeagle2.conf (2)

1-1: LGTM! Header comment improved with branding and corrected specifications.

The updated header adds proper PocketBeagle 2 branding and corrects the RAM specification from 1GB to 512MB, making it more accurate and descriptive.


11-12: LGTM! Branch renaming follows vendor fork naming convention.

The change from "current,current-rt" to "vendor,vendor-rt" correctly aligns with the established convention that vendor kernel forks should use "vendor" naming rather than "current". KERNEL_TEST_TARGET is appropriately updated to match.

Based on learnings

config/boards/beagleplay.conf (2)

1-1: LGTM! Header comment improved with proper board branding.

The updated header adds BeaglePlay branding and expands the TI abbreviation, making the description more complete and searchable.


14-15: LGTM! Branch configuration correctly adds vendor targets while preserving mainline edge.

The update appropriately renames "current" to "vendor" for the vendor kernel fork, adds "vendor-rt" for real-time support, and retains "edge" for mainline kernel support. This configuration provides users with multiple kernel options.

Based on learnings

config/boards/sk-am62b.conf (2)

1-1: LGTM! Header comment follows board description conventions.

The header clearly describes the board specifications including the dual Gigabit Ethernet, OSPI, and HDMI features.


12-13: LGTM! Branch configuration correctly targets vendor kernel variants.

The update appropriately renames "current" to "vendor" and "edge" to "vendor-edge", aligning with the PR's introduction of vendor-edge for latest TI kernel/U-Boot with upstream ATF/OPTEE. The configuration is appropriate for this board's support level.

Based on learnings

@jonaswood01 jonaswood01 force-pushed the major-refactor branch 2 times, most recently from 1ae8661 to 293f037 Compare November 14, 2025 23:27
@tabrisnet
Copy link
Collaborator

@coderabbitai any last thoughts before I approve this?
@glneo still has a pending/not-yet-marked-resolved comment as well.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 15, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for unresolved comments and review threads on this PR
gh pr view 8926 --repo armbian/build --json comments,reviews --jq '.comments[] | select(.author.login == "glneo") | {author: .author.login, body: .body, createdAt: .createdAt}' | head -20

echo "---"
echo "Checking review comments:"
gh api repos/armbian/build/pulls/8926/comments --jq '.[] | select(.user.login == "glneo") | {user: .user.login, path: .path, line: .line, body: .body, position: .position}' | head -30

Length of output: 342


🏁 Script executed:

#!/bin/bash
# Check the specific lines mentioned in glneo's comments

echo "=== k3_common.inc around line 64 ==="
cat config/sources/families/include/k3_common.inc | head -70 | tail -15

echo ""
echo "=== k3.conf - checking ATFSOURCE and variable placement ==="
cat config/sources/families/k3.conf | head -30

Length of output: 1749


🏁 Script executed:

#!/bin/bash
# Check how ATFSOURCE is used across different branches in k3.conf and k3-beagle.conf

echo "=== Checking ATFSOURCE usage in k3.conf ==="
grep -n "ATFSOURCE\|ATF" config/sources/families/k3.conf | head -30

echo ""
echo "=== Checking entire k3.conf branch structure ==="
cat config/sources/families/k3.conf

echo ""
echo "=== Checking k3-beagle.conf for ATFSOURCE ==="
grep -n "ATFSOURCE\|ATF" config/sources/families/k3-beagle.conf

Length of output: 2170


🏁 Script executed:

#!/bin/bash
# Check the cross-compiler change context in k3_common.inc
echo "=== Checking compile_k3_bootgen function changes ==="
git diff origin/main config/sources/families/include/k3_common.inc | grep -A 5 -B 5 "arm-linux"

echo ""
echo "=== Check if edge branch exists in k3_common.inc ==="
grep -n "edge" config/sources/families/include/k3_common.inc | head -20

echo ""
echo "=== Full context of k3_common.inc edge case ==="
cat config/sources/families/include/k3_common.inc | grep -A 20 'case "${BRANCH}"'

Length of output: 1963


@tabrisnet, I've reviewed the unresolved comments from @glneo and the overall PR. Here are my findings:

Unresolved Comments

There are two unresolved review comments from glneo that should be addressed:

  1. k3_common.inc line 64 - Cross-compiler ABI change:

    • Change from arm-linux-gnueabihf- to arm-linux-gnueabi-
    • This is a significant ABI change (hard float → soft float/softfp)
    • The PR description mentions "Update K3 pre-U-Boot cross-compilation" fixed boot issues
    • This needs explanation from the PR author (@jonaswood01) about why this ABI change was necessary to fix boot
  2. k3.conf - ATFSOURCE placement:

    • glneo suggests moving ATFSOURCE into the vendor case statement
    • However, looking at the code, ATFSOURCE is used by both vendor|vendor-rt AND vendor-edge branches (both only define ATFBRANCH)
    • The global placement appears correct for shared usage across multiple branches
    • This may need clarification between glneo and the PR author

Overall Assessment

The PR changes align well with the established conventions:

  • ✅ Branch naming (vendor/vendor-rt/vendor-edge/edge) follows the learning from PR Beagle kernel config #8913
  • ✅ Experimental edge branch is acceptable per project practices
  • ✅ Testing coverage is reasonable (3 boards built and booted successfully)
  • ✅ Known sk-am68 boot failure is documented as pre-existing

Recommendation: I suggest resolving or at least discussing the two glneo comments (especially the cross-compiler ABI change justification) before final approval, as they raise valid technical questions about the implementation.


🧠 Learnings used
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.

Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.

Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.

Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.

Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.

Learnt from: EvilOlaf
Repo: armbian/build PR: 8328
File: lib/functions/compilation/patch/drivers_network.sh:542-545
Timestamp: 2025-06-24T10:08:40.313Z
Learning: In the Armbian build system, when a PR removes build support for a specific kernel version, version check issues for that removed version become practically irrelevant even if they appear incorrect in isolation. Context about which kernel versions are being deprecated/removed is important for understanding the impact of version-related code changes.

Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.

Copy link
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.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 293f037 and 6149d12.

📒 Files selected for processing (14)
  • config/boards/beaglebone-ai64.conf (2 hunks)
  • config/boards/beagleplay.conf (2 hunks)
  • config/boards/beagley-ai.conf (2 hunks)
  • config/boards/pocketbeagle2.conf (2 hunks)
  • config/boards/sk-am62b.conf (2 hunks)
  • config/boards/sk-am62p.conf (2 hunks)
  • config/boards/sk-am64b.conf (2 hunks)
  • config/boards/sk-am68.conf (2 hunks)
  • config/boards/sk-am69.conf (2 hunks)
  • config/boards/sk-tda4vm.conf (2 hunks)
  • config/kernel/linux-k3-beagle-edge.config (1 hunks)
  • config/sources/families/include/k3_common.inc (2 hunks)
  • config/sources/families/k3-beagle.conf (1 hunks)
  • config/sources/families/k3.conf (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • config/boards/pocketbeagle2.conf
  • config/boards/beagleplay.conf
  • config/boards/sk-am62p.conf
  • config/boards/sk-tda4vm.conf
🧰 Additional context used
🧠 Learnings (63)
📓 Common learnings
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-11-11T20:56:20.303Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-06-25T03:40:52.109Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:40:52.109Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, when KERNELSOURCE is not explicitly declared in a case branch, the system falls back to a default KERNELSOURCE value, so missing KERNELSOURCE declarations are not critical issues.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3-beagle.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-05-05T12:35:07.143Z
Learnt from: Grippy98
Repo: armbian/build PR: 8152
File: lib/functions/configuration/interactive.sh:209-266
Timestamp: 2025-05-05T12:35:07.143Z
Learning: For the interactive kernel selection in Armbian, KERNEL_MAJOR_MINOR and KERNEL_DESCRIPTION are parsed from family.conf but deliberately not set as environment variables to avoid potential interference with other parts of the build system.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-10-13T02:26:18.249Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3-beagle.conf
  • config/kernel/linux-k3-beagle-edge.config
  • config/sources/families/k3.conf
📚 Learning: 2025-06-24T10:08:40.313Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8328
File: lib/functions/compilation/patch/drivers_network.sh:542-545
Timestamp: 2025-06-24T10:08:40.313Z
Learning: In the Armbian build system, when a PR removes build support for a specific kernel version, version check issues for that removed version become practically irrelevant even if they appear incorrect in isolation. Context about which kernel versions are being deprecated/removed is important for understanding the impact of version-related code changes.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-25T18:37:00.330Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-07-25T03:51:50.830Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-07-25T03:51:50.830Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-03-31T22:20:48.475Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-07-23T10:01:41.310Z
Learnt from: amazingfate
Repo: armbian/build PR: 8419
File: lib/functions/host/prepare-host.sh:272-275
Timestamp: 2025-07-23T10:01:41.310Z
Learning: In the Armbian build system, the design philosophy is to fail fast when host dependencies are not met rather than gracefully skipping unsupported architectures. This ensures build environment consistency and prevents silent failures. Host dependency checks should be explicit and non-negotiable.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-04-30T16:16:47.150Z
Learnt from: The-going
Repo: armbian/build PR: 8147
File: config/sources/families/include/sunxi64_common.inc:38-39
Timestamp: 2025-04-30T16:16:47.150Z
Learning: The Armbian build system references Linux kernel versions in the form "tag:v6.14.4" in the KERNELBRANCH variable, even when point release tags might not be directly visible in the upstream repository in the same form.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-11-06T15:36:04.682Z
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-07-21T04:12:02.439Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-07-21T04:12:02.439Z
Learning: In the Armbian build system, for recurring maintenance tasks like kernel version bumping, TODO comments should use generic version formats (e.g., "MAJOR.MINOR-rc1") rather than specific version numbers (e.g., "6.17-rc1") to avoid the need for frequent comment updates that would create unnecessary maintenance overhead.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-06-22T00:45:26.182Z
Learnt from: djurny
Repo: armbian/build PR: 8315
File: lib/functions/rootfs/distro-agnostic.sh:54-68
Timestamp: 2025-06-22T00:45:26.182Z
Learning: In Armbian build system, external command dependencies like envsubst are handled by adding the required packages (e.g., gettext for envsubst) to host_dependencies in adaptative_prepare_host_dependencies function in lib/functions/host/prepare-host.sh, rather than checking command availability at runtime.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-11-13T14:50:44.651Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8925
File: lib/functions/host/docker.sh:141-141
Timestamp: 2025-11-13T14:50:44.651Z
Learning: In the Armbian build system, certain boards have U-Boot that doesn't build correctly on ubuntu:noble but works on ubuntu:jammy. For these boards, DOCKER_ARMBIAN_BASE_IMAGE can be set to "ubuntu:jammy" via an extension file loaded before docker_cli_prepare() runs, allowing legacy toolchains to work while the community works on proper fixes with limited resources.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-07-04T18:33:19.873Z
Learnt from: leggewie
Repo: armbian/build PR: 8357
File: config/boards/qcom-robotics-rb5.conf:88-88
Timestamp: 2025-07-04T18:33:19.873Z
Learning: In the Armbian build system, package transitions in Debian/Ubuntu don't happen uniformly across all releases. For example, the transition from plasma-workspace-wayland to plasma-workspace occurred in newer releases like trixie (Debian testing) around July 2024, but older releases like jammy (Ubuntu 22.04) still maintain the original plasma-workspace-wayland package. Release-specific package availability must be considered when updating package references.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-03-31T22:20:41.849Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:73-75
Timestamp: 2025-03-31T22:20:41.849Z
Learning: When porting patches between U-Boot versions (like from 2025.01 to 2025.04), rpardini prefers to maintain patches as-is rather than introducing refactoring changes, even when potential improvements are identified. This approach prioritizes consistency and reduces the risk of introducing new issues.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-14T11:37:35.089Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:65-72
Timestamp: 2025-09-14T11:37:35.089Z
Learning: In the Armbian build system, patch directories referenced in BOOTPATCHDIR and KERNELPATCHDIR configurations can be non-existent without causing build failures. Empty patch directories are also ignored by git, so missing patch directories should not be flagged as errors during code review.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
  • config/boards/beagley-ai.conf
  • config/kernel/linux-k3-beagle-edge.config
  • config/boards/sk-am62b.conf
📚 Learning: 2025-07-27T15:53:30.629Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-03T11:42:46.660Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:96-169
Timestamp: 2025-10-03T11:42:46.660Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), deletion of kernel config files does not need to be handled. The workflow intentionally only captures ACMR (added/copied/modified/renamed) changes and does not need to propagate deletions to the aggregator.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-04T17:59:19.369Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:217-220
Timestamp: 2025-10-04T17:59:19.369Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), the workflow is designed to rewrite existing kernel configs only. New/untracked files can be safely ignored, so using `git diff --quiet` (which ignores untracked files) is the correct approach for detecting changes rather than `git status --porcelain`.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-27T21:49:55.796Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-09-27T21:47:58.020Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-06-12T21:14:36.024Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:38-44
Timestamp: 2025-06-12T21:14:36.024Z
Learning: In config/bootscripts/boot-sunxi.cmd the unconditional "+1" increment in func_align_addr_next (when align_overlap_oboe_avoidance="on") is intentional. It compensates for a known off-by-one error in U-Boot where the end address is calculated as start+size instead of start+size-1, so the extra page prevents overlap. This behavior should not be “optimized away”.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-05-07T20:49:40.969Z
Learnt from: djurny
Repo: armbian/build PR: 8166
File: config/bootscripts/boot-mvebu.cmd:38-50
Timestamp: 2025-05-07T20:49:40.969Z
Learning: The 4KB (0x1000) boundary used for device tree size calculations in U-Boot scripts is specific to how the `fdt resize` command works internally and should remain hardcoded rather than being tied to adjustable alignment variables.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-07-23T07:30:52.265Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-14T05:53:10.627Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8298
File: extensions/https_proxy.sh:1-9
Timestamp: 2025-06-14T05:53:10.627Z
Learning: Armbian build framework extensions are NOT designed to run standalone but are called by the supervisor. The framework provides environment variables like USERPATCHES_PATH and SDCARD, and commands are executed with protection via run_host_command_logged and chroot_sdcard functions that use bash -e -o pipefail.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-11T04:34:05.589Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-09-11T04:34:05.589Z
Learning: When users identify architectural issues during code review, they may prefer to split them into separate issues rather than expanding the scope of the current PR. This allows for focused fixes while ensuring broader problems get proper tracking and discussion.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-14T17:19:39.693Z
Learnt from: leggewie
Repo: armbian/build PR: 8502
File: config/desktop/trixie/environments/i3-wm/config_base/packages:44-44
Timestamp: 2025-08-14T17:19:39.693Z
Learning: When a PR author provides clear context about package transitions in the commit message and the changes are scoped to specific release pockets, focus the review on validating those specific changes rather than suggesting broader investigations across other releases or additional dependency verifications.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-29T06:32:32.361Z
Learnt from: amazingfate
Repo: armbian/build PR: 8687
File: config/sources/mainline-kernel.conf.sh:11-11
Timestamp: 2025-09-29T06:32:32.361Z
Learning: There can be timing discrepancies between different kernel.org sources (web pages vs git repositories) when new kernel releases are published. Direct verification via git.kernel.org repository URLs is more reliable than general web searches for confirming tag availability.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/sources/families/k3.conf
📚 Learning: 2025-09-22T21:52:01.225Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-201
Timestamp: 2025-09-22T21:52:01.225Z
Learning: In lib/functions/compilation/armbian-kernel.sh, the kernel_config_modifying_hashes array is not universally required for all kernel configuration functions - some functions like armbian_kernel_config__netkit() operate without it, and adding entries with '=m' would be incorrect when the actual result might be '=y' for options already built-in.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-06-04T23:45:38.860Z
Learnt from: djurny
Repo: armbian/build PR: 8272
File: config/bootscripts/boot-mvebu.cmd:182-186
Timestamp: 2025-06-04T23:45:38.860Z
Learning: In config/bootscripts/boot-mvebu.cmd, the `fdtfile` variable is mandatory for booting and is pre-set by U-Boot, but can be overridden via armbianEnv.txt. If `fdtfile` is empty, the subsequent device tree file search logic will eventually fail and trigger the critical error "Cannot find DT!" with proper error handling.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-09-12T21:44:09.061Z
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-05-16T15:34:34.672Z
Learnt from: Grippy98
Repo: armbian/build PR: 8202
File: config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh:2-3
Timestamp: 2025-05-16T15:34:34.672Z
Learning: The shell scripts in the Armbian build system's desktop configuration files, such as config/desktop/trixie/environments/gnome/armbian/create_desktop_package.sh, rely on environment variables like $SRC and $destination that are expected to be set externally before the script is executed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:08:11.318Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:13-23
Timestamp: 2025-06-12T21:08:11.318Z
Learning: In config/bootscripts/boot-sunxi.cmd the variable name `align_overlap_oboe_avoidance` intentionally uses the acronym “OBOE” (Off-By-One Error); it is not a typo and should not be renamed.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-06-12T21:03:39.686Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:148-161
Timestamp: 2025-06-12T21:03:39.686Z
Learning: In Armbian U-Boot bootscripts, the `${cpu}` environment variable is always pre-set by U-Boot (or defaults to a valid value), so additional guards against it being unset are unnecessary.

Applied to files:

  • config/sources/families/include/k3_common.inc
📚 Learning: 2025-09-12T09:49:31.957Z
Learnt from: amazingfate
Repo: armbian/build PR: 8617
File: lib/functions/compilation/kernel.sh:126-127
Timestamp: 2025-09-12T09:49:31.957Z
Learning: In the Armbian build system, the "all" target in kernel build has been used for a long time without issues. The "all" target builds vmlinux/Image/Image.gz defaults for the architecture and works correctly alongside KERNEL_IMAGE_TYPE in the build_targets_build array.

Applied to files:

  • config/sources/families/include/k3_common.inc
  • config/boards/beaglebone-ai64.conf
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files (regardless of file extension), the standard pattern is to have only one line as a comment describing the board hardware specifications. This single-line description typically includes the SoC model, core count, RAM options, and key features like connectivity options, storage interfaces, and special features. The file extensions indicate board support status: .conf (standard support), .csc (community supported), .eos (end of support), .tvb (tvbox), .wip (work in progress).

Applied to files:

  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-08-21T08:10:25.459Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/nanopiduo2.csc:12-12
Timestamp: 2025-08-21T08:10:25.459Z
Learning: KERNEL_TARGET and KERNEL_TEST_TARGET in Armbian build system do not have enforced validation relationships. KERNEL_TARGET is used for interactive menu ordering and branch validation, while KERNEL_TEST_TARGET is used for build list generation and recorded in /etc/armbian-release. No existing codebase validation enforces that KERNEL_TEST_TARGET values must be present in KERNEL_TARGET.

Applied to files:

  • config/boards/sk-am68.conf
  • config/boards/sk-am64b.conf
  • config/boards/beaglebone-ai64.conf
  • config/boards/sk-am69.conf
  • config/boards/beagley-ai.conf
  • config/boards/sk-am62b.conf
📚 Learning: 2025-09-10T03:00:06.658Z
Learnt from: wei633
Repo: armbian/build PR: 8590
File: packages/bsp/xpressreal-t3/load-rtk-modules.sh:12-13
Timestamp: 2025-09-10T03:00:06.658Z
Learning: When analyzing kernel modules for embedded platforms, always check the target platform's kernel version and source repository as specified in the board/family configuration files, rather than assuming or checking the host system's kernel version.

Applied to files:

  • config/sources/families/k3-beagle.conf
  • config/sources/families/k3.conf
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the KERNEL_CONFIGURE=yes switch is deprecated. The recommended approach for kernel configuration is now to use the `kernel-config` build command, which provides a more structured way to configure kernel options.

Applied to files:

  • config/boards/beagley-ai.conf
📚 Learning: 2025-09-27T21:50:15.915Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-23T19:48:42.980Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-sm8250-edge.config:498-501
Timestamp: 2025-10-23T19:48:42.980Z
Learning: For Armbian EDGE kernel configs, CONFIG_ATH12K=m alone is sufficient for PCI-based Wi-Fi 7 devices (e.g., WCN785x/QCN9274). A separate CONFIG_ATH12K_PCI option is not required, as confirmed by maintainer testing.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-08-30T06:56:33.372Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.

Applied to files:

  • config/kernel/linux-k3-beagle-edge.config
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files, .wip and .conf extensions require BOARD_MAINTAINER to be present and contain at least one maintainer. If no maintainer is present, the board support rules state it does not qualify for standard support and must be moved to community support (.csc extension). This is documented at https://docs.armbian.com/User-Guide_Board-Support-Rules/

Applied to files:

  • config/boards/sk-am62b.conf
📚 Learning: 2025-07-17T04:12:33.125Z
Learnt from: pyavitz
Repo: armbian/build PR: 8388
File: config/boards/kickpik2b.conf:1-14
Timestamp: 2025-07-17T04:12:33.125Z
Learning: In the Armbian build system, board configuration files (*.conf) follow a project standard of not including shebang lines, even though they contain bash code and are sourced by the build system. This is an established Armbian convention that individual contributors are expected to follow, and changes to this standard would require broader project maintainer approval.

Applied to files:

  • config/boards/sk-am62b.conf
📚 Learning: 2025-09-14T06:32:29.806Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:222-230
Timestamp: 2025-09-14T06:32:29.806Z
Learning: In the Armbian build system, the write_uboot_platform() function implementations follow different patterns across Rockchip family files. The newer standard (used in rockchip64_common.inc and rk3506) includes 'status=none' parameter in dd commands, while older implementations (rk3288, rk322x) use an older pattern without this parameter. The rk3506 implementation correctly follows the current Rockchip family standard.

Applied to files:

  • config/sources/families/k3.conf
📚 Learning: 2025-08-29T18:44:47.732Z
Learnt from: leggewie
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-29T18:44:47.732Z
Learning: When creating GitHub issues for code improvements in the Armbian build project, include the relevant patches/diffs in the issue description or open a PR directly instead of just describing the changes. This makes it more efficient for the assignee to handle the improvements.

Applied to files:

  • config/sources/families/k3.conf
🔇 Additional comments (12)
config/kernel/linux-k3-beagle-edge.config (1)

1-1101: New K3 BeagleBoard edge kernel defconfig is properly configured and consistent.

The configuration correctly enables the K3 architecture (CONFIG_ARCH_K3=y) with all appropriate TI K3 subsystems: AM65 CPSW networking with switchdev support, UDMA with glue layer, thermal driver, and remoteproc support for DSP/M4/R5 processors. Verification confirms consistency with the companion linux-k3-vendor-edge.config file (identical TI_K3_* option count). The file follows Armbian's autogenerated defconfig format properly.

config/sources/families/include/k3_common.inc (2)

27-42: LGTM: Edge branch configuration structure is sound.

The new edge branch block correctly leverages mainline-kernel.conf.sh for KERNELSOURCE and KERNELBRANCH definitions, eliminating manual maintenance overhead for tracking kernel versions. The configuration properly sets up bleeding-edge mainline sources (master branches) for ATF, OPTEE, firmware, and U-Boot.


64-65: Verify resolution of cross-compiler ABI change issue.

The cross-compiler prefix change from arm-linux-gnueabihf- (hard-float ABI) to arm-linux-gnueabi- (soft-float/softfp ABI) represents a significant ABI change. Based on past review comments, glneo indicated this issue would be fixed separately and requested breaking this into its own patch.

Has the underlying SPL size issue been resolved, or is this ABI change still necessary? If still required, please confirm this is the intended long-term solution rather than a temporary workaround.

config/sources/families/k3-beagle.conf (1)

13-29: LGTM: Source scoping correctly isolates BeagleBoard vendor sources.

The configuration properly scopes BeagleBoard-specific sources (KERNELSOURCE, BOOTSOURCE) within the vendor/vendor-rt case block while keeping ATFSOURCE global. This allows the parent k3_common.inc edge branch to use mainline sources without interference, which addresses the concern raised in past comments.

Branch naming follows the established convention for non-mainline vendor forks.

Based on learnings

config/boards/sk-am64b.conf (1)

13-18: LGTM: Board configuration correctly updated for new branch structure.

The changes properly implement the branch renaming convention (current→vendor) and expand available kernel targets to include vendor-rt, vendor-edge, and edge. KERNEL_TEST_TARGET correctly points to vendor, which is present in KERNEL_TARGET. The addition of OPTEE_PLATFORM="k3-am64x" aligns with the broader pattern across K3 boards in this PR.

config/boards/beagley-ai.conf (1)

12-18: LGTM: BeagleY-AI configuration properly updated.

The configuration correctly updates kernel targets to the new vendor naming scheme. Note that this board uses BOARDFAMILY="k3-beagle", so it inherits vendor/vendor-rt branches from k3-beagle.conf while edge comes from k3_common.inc (explaining why vendor-edge is not listed). The addition of OPTEE_PLATFORM and CC33XX_SUPPORT aligns with the board's hardware capabilities.

config/boards/sk-am69.conf (1)

12-18: LGTM: SK-AM69 configuration correctly updated.

The board configuration properly implements the branch renaming convention and adds the complete vendor branch matrix (vendor, vendor-rt, vendor-edge, edge). The OPTEE_PLATFORM and OPTEE_ARGS additions with board-specific console UART configuration are consistent with the AM69's hardware requirements.

config/boards/beaglebone-ai64.conf (1)

15-20: LGTM: BeagleBone AI-64 configuration updated correctly.

The configuration properly updates to the new vendor branch naming. As a k3-beagle family board, it correctly omits vendor-edge from KERNEL_TARGET since that branch is only defined in k3.conf (parent k3_common.inc), not k3-beagle.conf. The addition of OPTEE_PLATFORM="k3-j721e" aligns with the TDA4VM (J721E) SoC used on this board.

config/boards/sk-am68.conf (1)

12-18: LGTM: SK-AM68 configuration correctly updated.

The board configuration properly implements the complete vendor branch matrix and adds OPTEE support with the k3-j784s4 platform identifier (shared with AM69 which uses the same SoC family). The OPTEE_ARGS with console UART configuration is appropriate for this board's hardware.

config/boards/sk-am62b.conf (1)

12-18: LGTM: SK-AM62B configuration correctly updated.

The board configuration properly expands kernel targets to include the complete vendor branch matrix and adds OPTEE_PLATFORM="k3-am62x" and CC33XX_SUPPORT="yes". The CC33XX support enables the wireless functionality, and the changes align with the broader platform support updates across K3 boards.

config/sources/families/k3.conf (2)

13-13: LGTM: ATFSOURCE placement is correct for shared usage.

The global scope placement of ATFSOURCE is appropriate since both vendor/vendor-rt and vendor-edge cases use the same ARM Trusted Firmware repository with different branches/commits.


17-30: LGTM: Vendor branch configuration is well-structured.

The vendor/vendor-rt case correctly:

  • Uses the established naming convention for TI vendor kernel branches
  • Implements consistent tag-based versioning via TI_PSDK_TAG
  • Provides clear description indicating "currently supported" stable releases
  • Maintains the intentional mix of tags and commit references for precise component versioning

@jonaswood01
Copy link
Contributor Author

@tabrisnet, I've reviewed the unresolved comments from @glneo and the overall PR. Here are my findings:

Unresolved Comments

There are two unresolved review comments from glneo that should be addressed:

  1. k3_common.inc line 64 - Cross-compiler ABI change:

    • Change from arm-linux-gnueabihf- to arm-linux-gnueabi-
    • This is a significant ABI change (hard float → soft float/softfp)
    • The PR description mentions "Update K3 pre-U-Boot cross-compilation" fixed boot issues
    • This needs explanation from the PR author (@jonaswood01) about why this ABI change was necessary to fix boot
  2. k3.conf - ATFSOURCE placement:

    • glneo suggests moving ATFSOURCE into the vendor case statement
    • However, looking at the code, ATFSOURCE is used by both vendor|vendor-rt AND vendor-edge branches (both only define ATFBRANCH)
    • The global placement appears correct for shared usage across multiple branches
    • This may need clarification between glneo and the PR author
  1. See ti: k3: Fix boot, change branch names, add upstream edge #8926 (comment) thread for why
  2. His comment ti: k3: Fix boot, change branch names, add upstream edge #8926 (comment) was only to move TI_PSDK_TAG into vendor case, which I fixed already

I had to make couple recent force-pushes to address comments, but PR should be in done state now, pending any final reviews

Copy link
Collaborator

@tabrisnet tabrisnet left a comment

Choose a reason for hiding this comment

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

LGTM. 🚢

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

Labels

11 Milestone: Fourth quarter release Hardware Hardware related like kernel, U-Boot, ... size/large PR with 250 lines or more

Development

Successfully merging this pull request may close these issues.

5 participants