Skip to content

vexpress64 u boot upstream contribution proposals

MarekBykowski edited this page Jun 14, 2026 · 1 revision

vexpress64 U-Boot — Upstream Contribution Proposals

Modernization and contribution opportunities for board/armltd/vexpress64 (ARM Ltd Versatile Express / FVP-Base, BaseR, and Juno targets), based on a comparison against current modern BSPs: total_compute, ti/am62x, qemu-arm, sunxi, and rockchip.

Goal: land a series of small-to-medium patches that modernize the board, become an active reviewer/contributor presence, and get visibility with the maintainers (David Feng, Linus Walleij, Peter Hoyes).


Summary table

# Proposal Tier Risk Effort Visibility
1 Add vexpress64.env text environment file 1 Low Small High
2 Implement checkboard() 1 Low Tiny Medium
3 Add board_late_init() 1 Low Small Medium
4 Standard boot (bootstd / bootflow) support 2 Medium Medium High
5 ft_board_setup() for runtime DTB fixups 2 Medium Medium Medium
6 EFI capsule update + capsule-on-disk 3 High Large High
7 SPL board hooks 3 Medium Large Low

Tier 1 — Good first patches (low risk, high visibility)

1. Add a vexpress64.env text environment file

Modern boards (total_compute, am62x, qemu-arm) ship a .env file instead of cramming CONFIG_EXTRA_ENV_SETTINGS into the config header.

  • What: Move boot environment out of include/configs/vexpress_aemv8.h into board/armltd/vexpress64/vexpress64.env, and wire CONFIG_ENV_SOURCE_FILE.
  • Why it's a good first patch: pure cleanup, no functional change, idiomatic, easy for reviewers to evaluate.
  • Pairs with: #3.

2. Implement checkboard()

vexpress64 currently prints nothing board-specific at boot.

  • What: A checkboard() that prints the detected model (Base FVP / BaseR FVP / Juno).
  • Why: tiny, self-contained, improves boot diagnostics. Classic "first contribution" size.

3. Add board_late_init()

Currently absent.

  • What: Even a minimal hook that sets board_name / fdtfile env from the detected target (useful for bootstd).
  • Why: conventional, low-risk, pairs naturally with #1.

Tier 2 — Medium effort, more substantive

4. Standard boot (bootstd / bootflow) support

qemu-arm enables BOOTSTD_FULL and bootflow scanning; vexpress64 still relies on a hand-written bootcmd.

  • What: Enable CONFIG_BOOTSTD / BOOTSTD_FULL and provide the right boot_targets.
  • Why: aligns the board with U-Boot's current direction — high community relevance.
  • Recommendation: propose on the mailing list before coding.

5. ft_board_setup() for runtime DTB fixups

No runtime devicetree modification hook exists.

  • What: Add ft_board_setup() (e.g. to fix up memory or reserved regions at boot).
  • Why: well-understood pattern, easy for reviewers to evaluate.

Tier 3 — Larger / needs design discussion

6. EFI capsule update + capsule-on-disk

am62x and qemu-arm implement firmware capsule update; vexpress64 does not.

  • What: Define firmware images, GUIDs, and an update DFU backend; add capsule-on-disk support.
  • Why: biggest-impact area, sustained visibility — but needs design buy-in. Not a first patch.

7. SPL board hooks

vexpress64 has no SPL path.

  • What: Add SPL board hooks.
  • Why: only worth it with a real use case; likely out of scope for FVP.

Not gaps (don't bother)

  • doc/board/armltd/vexpress64.rst already exists and is comprehensive — documentation is not a gap.
  • Memory map / MMU regions (vexpress64_mem_map[]) are already correct.

Suggested sequencing

  1. #2 (checkboard) — warm-up to learn the maintainer review flow.
  2. #1 (.env) + #3 (board_late_init) — small series that establishes you on the board.
  3. #4 (bootstd) — propose on the mailing list first; this is the patch that gets you noticed.
  4. #6 (capsule update) — longer-term, higher-impact effort.

Maintainers / references

  • Maintainers: David Feng, Linus Walleij, Peter Hoyes
  • Board: board/armltd/vexpress64/
  • Config header: include/configs/vexpress_aemv8.h
  • Docs: doc/board/armltd/vexpress64.rst
  • Reference BSPs: total_compute, ti/am62x, qemu-arm, sunxi, rockchip

Clone this wiki locally