vexpress64 u boot upstream contribution proposals - MarekBykowski/readme GitHub Wiki
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.hintoboard/armltd/vexpress64/vexpress64.env, and wireCONFIG_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/fdtfileenv 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_FULLand provide the rightboot_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.rstalready exists and is comprehensive — documentation is not a gap.- Memory map / MMU regions (
vexpress64_mem_map[]) are already correct.
Suggested sequencing
- #2 (checkboard) — warm-up to learn the maintainer review flow.
- #1 (.env) + #3 (board_late_init) — small series that establishes you on the board.
- #4 (bootstd) — propose on the mailing list first; this is the patch that gets you noticed.
- #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