Skip to content

cv200_lite: load_hisilicon remove_detect rmmods open_* names that don't match installed sensor_*/hi_* names #2127

@widgetii

Description

@widgetii

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions