Symptom
cv200_lite firmware boot prints:
rmmod: can't unload module 'open_sensor_spi': No such file or directory
rmmod: can't unload module 'open_sensor_i2c': No such file or directory
rmmod: can't unload module 'open_isp': No such file or directory
These rmmod failures trip the openhisilicon CI qemu-boot row's regression detector (#62 pattern), turning the cv200 row from green to red.
Reproduce
QEMU=/path/to/qemu-system-arm
curl -sSLf -o /tmp/cv200-lite.tgz https://github.com/OpenIPC/firmware/releases/download/latest/openipc.hi3516cv200-nor-lite.tgz
mkdir /tmp/cv200-lite && tar xzf /tmp/cv200-lite.tgz -C /tmp/cv200-lite
timeout 120 $QEMU -M hi3516cv200 -m 64M \
-kernel /tmp/cv200-lite/uImage.hi3516cv200 \
-initrd /tmp/cv200-lite/rootfs.squashfs.hi3516cv200 \
-nographic -serial mon:stdio \
-append "console=ttyAMA0,115200 mem=32M root=/dev/ram0 rootfstype=squashfs" | grep rmmod
Root cause
The cv200 opensdk install block (general/package/hisilicon-opensdk/hisilicon-opensdk.mk) renames open_*.ko to vendor names at install time:
$(INSTALL) -m 644 $(@D)/kernel/open_sensor_i2c.ko $(HISILICON_OPENSDK_KMOD_DST)/sensor_i2c.ko
$(INSTALL) -m 644 $(@D)/kernel/open_sensor_spi.ko $(HISILICON_OPENSDK_KMOD_DST)/sensor_spi.ko
…but the cv200 load_hisilicon script in general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon remove_detect() calls rmmod open_sensor_spi / rmmod open_sensor_i2c / rmmod open_isp — the source module names, not the installed filenames. The modules are loaded under their installed names (sensor_spi, sensor_i2c, isp) and rmmod open_* resolves nothing.
When it surfaced
Pre-existing bug; latent until openhisilicon #178 (frame-ts FEND extension) made the script proceed further into the cleanup path. The previous nightly's cv200_lite passed CI because the script exited earlier; the current nightly exposes the bug.
Adjacent prior incident: same shape on av100 lite (QEMU boot (hi3516av100) is allow-failure: true in openhisilicon build.yml with comment: "load_hisilicon's remove_detect rmmods modules under vendor names (sensor_spi, sensor_i2c, hi_media, mmz, hi3516a_) but these names don't match what the firmware actually loaded"*). cv200 now hits the symmetric bug.
Fix
Edit general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon so remove_detect() calls match the names the modules are actually installed under (per the opensdk install block). Likely:
- rmmod -w open_sensor_spi
- rmmod -w open_sensor_i2c
- rmmod -w open_isp
+ rmmod -w sensor_spi
+ rmmod -w sensor_i2c
+ rmmod -w isp
(Audit all rmmod calls in remove_detect() — there may be more.)
Blocks
Symptom
cv200_lite firmware boot prints:
These rmmod failures trip the openhisilicon CI qemu-boot row's regression detector (#62 pattern), turning the cv200 row from green to red.
Reproduce
Root cause
The cv200 opensdk install block (
general/package/hisilicon-opensdk/hisilicon-opensdk.mk) renamesopen_*.koto vendor names at install time:…but the cv200
load_hisiliconscript ingeneral/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisiliconremove_detect()callsrmmod open_sensor_spi/rmmod open_sensor_i2c/rmmod open_isp— the source module names, not the installed filenames. The modules are loaded under their installed names (sensor_spi,sensor_i2c,isp) andrmmod open_*resolves nothing.When it surfaced
Pre-existing bug; latent until openhisilicon #178 (frame-ts FEND extension) made the script proceed further into the cleanup path. The previous nightly's cv200_lite passed CI because the script exited earlier; the current nightly exposes the bug.
Adjacent prior incident: same shape on av100 lite (
QEMU boot (hi3516av100)isallow-failure: truein openhisiliconbuild.ymlwith comment: "load_hisilicon's remove_detect rmmods modules under vendor names (sensor_spi, sensor_i2c, hi_media, mmz, hi3516a_) but these names don't match what the firmware actually loaded"*). cv200 now hits the symmetric bug.Fix
Edit
general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisiliconsoremove_detect()calls match the names the modules are actually installed under (per the opensdk install block). Likely:(Audit all rmmod calls in
remove_detect()— there may be more.)Blocks