Skip to content

config: default SO3 boot chain to bare U-Boot (no ATF/OP-TEE)#259

Merged
daniel-rossier merged 1 commit into
mainfrom
config/so3-default-bare-boot-chain
Jun 30, 2026
Merged

config: default SO3 boot chain to bare U-Boot (no ATF/OP-TEE)#259
daniel-rossier merged 1 commit into
mainfrom
config/so3-default-bare-boot-chain

Conversation

@daniel-rossier

Copy link
Copy Markdown
Contributor

Summary

The SO3 standalone default on virt64 was set to IB_BOOT_CHAIN = "full", which pulled ATF + OP-TEE + AVZ into the boot chain and assembled a secure-world flash0.img. That is appropriate for the e1c capsule model, but not for the plain SO3-at-EL1 default — and it contradicted the inline documentation in build/conf/local.conf, which already describes the empty value as the SO3 default and prescribes a weak assignment so a capsule layer can override it.

This sets:

IB_BOOT_CHAIN ?= ""

so the default build is bare U-Boot (no ATF, no OP-TEE, no AVZ), while a downstream capsule layer can still select "full".

Why

  • bsp.bbclass only wires atf/optee/avz dependencies into do_build/do_deploy_boot_chain when IB_BOOT_CHAIN is atf+uboot/full. With "", none are pulled.
  • The ?= (weak) form matches the documented intent: the e1c capsule layer overrides it to "full".

Verification

  • Clean bsp-so3 build: 42-task graph, all succeeded, zero atf/optee/avz tasks, no flash0.img produced.
  • QEMU boot (st.sh): bare U-Boot 2022.04 loaded via -kernel at EL1 → SO3 FIT image → kernel → userspace:
    U-Boot 2022.04 (Jun 30 2026 ...)
    ...
    Starting kernel ...
    ********** Smart Object Oriented SO3 Operating System **********
    [SO3 USR] Starting the initial process
    SO3 Init Program :)
    
    No aborts, panics, or exceptions.

The SO3 standalone default on virt64 was left at IB_BOOT_CHAIN = "full",
which pulled ATF + OP-TEE + AVZ into the boot chain and assembled a secure-
world flash0.img — appropriate for the e1c capsule model but not for the
plain SO3-at-EL1 default. The inline documentation already describes the
empty value as the SO3 default and prescribes a weak assignment so a
capsule layer can override it.

Set IB_BOOT_CHAIN ?= "" so the default build is bare U-Boot (no ATF, no
OP-TEE, no AVZ) and a downstream capsule layer can still select "full".

Verified: a clean bsp-so3 build now produces a 42-task graph with no
atf/optee/avz tasks and no flash0.img; st.sh loads U-Boot via -kernel at
EL1.
@daniel-rossier daniel-rossier merged commit eebb982 into main Jun 30, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant