Skip to content

ci: sigmastar: smoke-test every leg, NOR and NAND; 768 KiB NAND fit - #110

Merged
dimerr merged 2 commits into
openipcfrom
sigmastar/openipc-layout-ci
Nov 7, 2026
Merged

dimerr merged 2 commits into
openipcfrom
sigmastar/openipc-layout-ci

Conversation

@dimerr

@dimerr dimerr commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator

The CI side of #109. It follows #108.

  • Smoke test on every leg: all 52 legs boot twice, NOR and NAND, each on its own QEMU machine.
    • ssc029b boots as ssc029,bond=0x10 and ssc029c as ssc029. The infinity6e NAND legs use bond=0x10.
    • NOR legs boot from an erased 8 or 16 MiB flash. NAND legs boot from 128 MiB of 2048-byte pages, each with its 64 spare bytes.
    • The second boot must not print U-Boot's own Warning - bad CRC. The infinity6c IPL prints "env bad CRC" for its own environment format, and that line is not a failure.
  • QEMU pinned: the qemu job builds the commit of sigmastar: Ifliegen, SPI NAND on every die, Iford parts and ssc327de qemu-bench#242, which adds the ssc029a, ssc029b, ssc327de, ssc034a and ssc034b machines and Ifliegen's NAND and SD. Switch back to master once that PR merges.
  • NAND fit check: 768 KiB on every die, the boot partition of openipc-hisilicon's 768k(boot),256k(env),-(ubi).
  • Docs: README and CLAUDE.md describe the NAND layout, the rootfs.ubifs firmware and SD recovery file, and the smoke test.

Merge #109 first. This PR's own run builds the current openipc-sigmastar, whose NAND images are still in the vendor layout and fail the 768 KiB check until #109 is in.

qemu_smoke boots all 52 legs, each on its own machine (ssc029b as
ssc029,bond=0x10, ssc029c as ssc029, the infinity6e NAND legs at
bond=0x10): NOR from an erased 8 or 16 MiB flash, SPI NAND from 128 MiB
of 2048-byte pages with their spares. It checks U-Boot's own "Warning -
bad CRC": infinity6c's IPL prints "env bad CRC" for the environment
format it expects.

The qemu job builds OpenIPC/qemu-bench#242's commit, which adds the
ssc029a/b, ssc327de and ssc034a/b machines and Ifliegen's NAND and SD,
until that PR merges.

Every SPI NAND image is the 768 KiB boot partition of openipc-hisilicon's
768k(boot),256k(env),-(ubi), the fit check's limit; README and CLAUDE.md
say so, and that the NAND firmware is a UBIFS rootfs.ubifs with its
kernel in /boot.
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Smoke-test every SigmaStar NOR and NAND leg in CI

🧪 Tests ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Boot all 52 SigmaStar legs twice on their corresponding QEMU machines to verify environment
 persistence.
• Enforce a 768 KiB NAND boot-partition limit and pin QEMU for the required machines.
• Document the NAND layout, UBIFS firmware, SD recovery image, and expanded smoke-test coverage.
Diagram

graph TD
  Build["Build matrix"] --> Fit["Partition fit"] --> Images[("Boot images")] --> Flash[("Emulated flash")] --> Smoke["Two-boot smoke"] --> Release["Release gate"]
  Qemu["Pinned QEMU build"] --> Smoke
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Share one leg manifest across build and smoke jobs
  • ➕ Prevents the two 52-leg matrices from drifting as targets change.
  • ➖ Requires dynamic matrix generation and additional GitHub Actions wiring for machine and bond-strap exceptions.

Recommendation: Keep the explicit smoke matrix for this PR: its per-leg machine and bond settings are easy to review, while dynamic matrix generation would complicate the workflow. Consider a shared manifest if targets keep growing. Merge the prerequisite NAND-layout change in #109 first; current NAND images are expected to fail the new fit check.

Files changed (3) +122 / -61

Documentation (2) +26 / -23
CLAUDE.mdDescribe NAND limits and per-leg smoke-test behavior +14/-14

Describe NAND limits and per-leg smoke-test behavior

• Documents the 768 KiB NAND boot partition, machine and bond selections, pinned QEMU build, flash geometry, and the distinction between U-Boot and IPL CRC messages.

CLAUDE.md

README.mdDocument the NAND firmware layout and expanded QEMU coverage +12/-9

Document the NAND firmware layout and expanded QEMU coverage

• Describes the HiSilicon-compatible NAND partitions, UBIFS rootfs and kernel location, NAND SD recovery image, and CI coverage for NOR and NAND legs. It also distinguishes these images from the existing u-boot-sigmastar NAND layout.

README.md

Other (1) +96 / -38
build-sigmastar.ymlGate all SigmaStar legs with NOR and NAND QEMU smoke tests +96/-38

Gate all SigmaStar legs with NOR and NAND QEMU smoke tests

• Sets a uniform 768 KiB NAND image limit and builds a pinned QEMU commit with the required machines. Expands smoke coverage to all 52 build legs, constructs NOR or page-and-spare NAND flash images, and checks that a saved U-Boot environment survives the second boot without mistaking IPL CRC output for a failure.

.github/workflows/build-sigmastar.yml

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. README gives Anyka a NAND file it lacks ✓ Resolved
Description
The README's Anyka section names rootfs.ubifs..img as a NAND SD recovery image even though its SoC
table lists only NOR parts. The following bullet says SD recovery takes only uImage..img (or
fitImage..img) and rootfs.squashfs..img, leaving readers with incompatible filename
instructions.

2. SigmaStar recovery guidance names old files ✓ Resolved
Description
The new SigmaStar NAND layout places the kernel inside a UBIFS rootfs volume, but the section
still instructs readers to recover NAND with a separate raw kernel and squashfs. When preparing
recovery media for the newly documented layout, readers are directed to files that do not match its
single UBIFS rootfs image.

Grey Divider

Tip of the day
💡 Did you know, you can hide the parts of a finding you never read, like the evidence or the agent prompt

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

The previous commit put the NAND rootfs.ubifs.<soc>.img note in the
Anyka section, which has no NAND parts, and left SigmaStar's naming the
raw kernel and squashfs. Anyka's text is back as it was; SigmaStar's
names rootfs.ubifs.<soc>.img, and its list of the file names SD
recovery takes has it too.

Reported by Qodo on #110.
@dimerr
dimerr merged commit 4ad9901 into openipc Nov 7, 2026
107 of 130 checks passed
@dimerr
dimerr deleted the sigmastar/openipc-layout-ci branch November 7, 2026 18:35
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