hi3516cv100_neo: Linux 7.0 firmware target (V1 / ARM926EJ-S)#2131
Merged
Conversation
Adds the firmware-side pieces to assemble a hi3516cv100_neo image against the Linux 7.0 base in openipc/linux:upstream-patches. cv100 mainline kernel support (DT + mach-hibvt + ARCH_HI3516CV100 Kconfig) landed in openipc/linux PR #46 (8701d2079bf72); openhisilicon module support (V1 OSAL shim + 92 EXPORT_SYMBOL re-declarations for the V1 __ksymtab format that modern modpost doesn't grok + source-side patches on mmz/rtc/ir/cipher) landed in openipc/openhisilicon PR #187 (488a76f). This PR completes the chain. Changes: * br-ext-chip-hisilicon/configs/hi3516cv100_neo_defconfig — buildroot config. Reuses cv100_lite's V1 musleabi toolchain (3.0 headers — fine since Linux preserves syscall ABI backward-compat), points kernel at upstream-patches.tar.gz, picks hisilicon-opensdk + majestic + the standard OpenIPC userspace package set. VARIANT="neo" gates the hisilicon-opensdk install rule's v1_shim ship. * br-ext-chip-hisilicon/board/hi3516cv100/hi3516cv100.neo.config — kernel config seed. ARCH_HI3516CV100=y (selects ARM_VIC + ARM_TIMER_SP804 + COMMON_CLK_HI3516CV200 via the Kconfig PR #46 wires up). Built as zImage with appended DTB; CMA enabled for the openhisilicon MMZ allocator. * br-ext-chip-hisilicon/board/hi3516cv100/neo-post-image.sh — wraps zImage + hi3516cv100-demb.dtb into a U-Boot uImage at load/entry 0x80008000 (the V1/V2 ARMv5TE family default — same as cv200_neo / cv300_neo / etc.). * general/package/hisilicon-opensdk/hisilicon-opensdk.mk — bump pin 7fa06b2 → 488a76f to pull in the cv100 7.0 support. Transitively picks up commits 14fc1950 (openipc_event_trigger sample), 6bc0face (cv200 isp.c tasklet-defer for #183 — the regression that motivated the #2128 revert), and the openhisilicon side of cv100_neo. Also adds the v1_shim install rule for cv100/neo variant. * .github/workflows/build.yml — add hi3516cv100_neo to the CI matrix next to hi3516cv100_lite. Tested under qemu-system-arm -M hi3516cv100 -m 64M with a locally-built hi3516cv100_neo image (uImage = zImage + hi3516cv100-demb.dtb wrapped by neo-post-image.sh; rootfs.squashfs from this defconfig with my modules from this opensdk pin): hisi-femac 10090000.ethernet eth0: Link is Up - 100Mbps/Full cv100 V1 OSAL shim: ready (do_gettimeofday, register_sysctl_table, ...) openipc-hi3516cv100 login: eth0 inet addr:10.0.2.15 64 bytes from 10.0.2.2: seq=0 ttl=255 time=16.912 ms Boots to login, eth0 up via SLIRP, ping gateway succeeds. No Oops/panic/BUG. open_v1_shim.ko inserts cleanly at boot. cv100_lite (kernel 3.0.8 production) byte-equivalence vs nightly confirmed via QEMU diff: identical 33-module lsmod, dmesg diff is 2 benign lines (random MAC + 1 KiB ramdisk size from EXPORT_SYMBOL additions in init wrappers — see openhisilicon PR #187 for details).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the firmware-side pieces to assemble a `hi3516cv100_neo` image against the Linux 7.0 base in `openipc/linux:upstream-patches`. Completes the three-repo chain:
Changes
`br-ext-chip-hisilicon/configs/hi3516cv100_neo_defconfig` — buildroot config. Reuses cv100_lite's V1 musleabi toolchain (3.0 headers, which is fine since Linux preserves syscall ABI backward compat). Points kernel at `upstream-patches.tar.gz`, selects hisilicon-opensdk + majestic + the standard OpenIPC userspace package set. `VARIANT="neo"` gates the hisilicon-opensdk install rule's `v1_shim` ship.
`br-ext-chip-hisilicon/board/hi3516cv100/hi3516cv100.neo.config` — kernel config seed (~215 lines). `ARCH_HI3516CV100=y` selects `ARM_VIC` + `ARM_TIMER_SP804` + `COMMON_CLK_HI3516CV200` per openipc/linux PR Change XMC flash mode to READ_DUAL #46. Built as zImage with appended DTB; CMA enabled for the openhisilicon MMZ allocator.
`br-ext-chip-hisilicon/board/hi3516cv100/neo-post-image.sh` — wraps zImage + `hi3516cv100-demb.dtb` into a U-Boot uImage at load/entry `0x80008000` (same as cv200_neo / cv300_neo).
`general/package/hisilicon-opensdk/hisilicon-opensdk.mk` — bump pin `7fa06b2 → 488a76f` (cv100 7.0 support, openhisilicon PR fix kernel and rootfs filesize checking, keep libstdc++ for fpv profile #187 merge). Transitively picks up:
Also adds the v1_shim install rule for cv100/neo variant.
`.github/workflows/build.yml` — add hi3516cv100_neo to the CI matrix.
Verification
Built locally via this defconfig + manual `make BOARD=hi3516cv100_neo br-hisilicon-opensdk br-linux` against this branch. uImage = 1.88MB (zImage 1.78MB + DTB 4.4KB wrapped by neo-post-image.sh).
Booted under `qemu-system-arm -M hi3516cv100 -m 64M`:
```
hisi-femac 10090000.ethernet eth0: Link is Up - 100Mbps/Full
cv100 V1 OSAL shim: ready (do_gettimeofday, register_sysctl_table, ...)
openipc-hi3516cv100 login:
eth0 inet addr:10.0.2.15
64 bytes from 10.0.2.2: seq=0 ttl=255 time=135.170 ms
64 bytes from 10.0.2.2: seq=1 ttl=255 time=16.912 ms
```
Boots to login, eth0 up via SLIRP, ping gateway succeeds steady-state. No Oops/panic/BUG. `open_v1_shim.ko` inserts cleanly at boot.
cv100_lite (kernel 3.0.8 production) byte-equivalence vs nightly confirmed via QEMU diff:
Test plan
Out of scope
`mmz.ko` / `hi3518_base.ko` fail `insmod` on cv100_neo at runtime with `.gnu.linkonce.this_module section size must match the kernel's built struct module size` — pre-compiled cv100 blobs embed a `struct module` sized for kernel 3.0.8; modern 7.0 expects a different layout. Same drift cv200/av100 hit; fix lives elsewhere (vermagic shim or blob recompile). Doesn't affect cv100_lite (production target) and doesn't block the cv100_neo boot/ethernet DoDs above.
🤖 Generated with Claude Code