Skip to content

add -w key to rmmod for prevent resource busy warning - #211

Merged
ZigFisher merged 1 commit into
OpenIPC:masterfrom
cronyx:master
Apr 30, 2022
Merged

ZigFisher merged 1 commit into
OpenIPC:masterfrom
cronyx:master

Conversation

@cronyx

@cronyx cronyx commented Apr 27, 2022

Copy link
Copy Markdown
Member

No description provided.

@ZigFisher

Copy link
Copy Markdown
Collaborator

Many thanks !

@ZigFisher
ZigFisher merged commit 43f226d into OpenIPC:master Apr 30, 2022
widgetii added a commit that referenced this pull request Aug 15, 2026
…, osal timer teardown) (#2267)

Picks up three commits:

  2d637e3 osal: wait for the timer callback before freeing the timer (#211)
  f69ecc9 kernel/hi3516cv200: recognize the gc2023_mipi sensor type (#207)
  849f066 acodec: retune the ADC when a clock change invalidates it (#209)

The acodec one fixes an audible tone on the analog mic of every V4 part
after a cold boot -- 609 Hz at a 16 kHz sample rate, plus harmonics, up
to 20 dB over the noise floor, lasting until something restarted the
streamer. The codec's ADC tuning is only valid for the codec clock that
was running when it was made, and enabling an audio input reprograms
that clock, so the tuning it had a moment earlier is stale and nothing
recalibrated. The driver now watches the hardware validity bit and
retunes. Reported as OpenIPC/majestic#285, reproduced on gk7205v200 and
hi3516ev200; gk7202v300, gk7205v300 and gk7605v100 share the same build
target and are covered too.

The osal one stops timer teardown freeing a timer whose callback may
still be running, or which has re-armed itself -- del_timer() does not
wait, and destroy kfree()s straight after. It reaches every module using
osal timers: vi, vpss, chnl, pm, rtc, ir, vdec and dis across the V2, V3
and V4 families.

Verified on a lab gk7205v200 built from this hash: 33 modules built, the
full 36-module stack boots, 10 x load_goke -a teardown cycles, 8 x
SIGHUP pipeline rebuilds, video throughout, no oops and no warnings.
Cold-boot mic capture goes from 41 LSB rms with the comb to 5 LSB with
no coherent tone.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
widgetii added a commit that referenced this pull request Sep 16, 2026
ipcinfo links libipchw, which knows every SoC vendor and every HiSilicon
generation ipctool has ever learned: a detection table for eleven vendor
HALs, and a chip-ID table, a sensor-bus back-end, a temperature formula
and a die-ID reader for each of ten HiSilicon generations. A camera is
one SoC. The rest is code that cannot execute on it, and it ships on all
but three of this tree's board configs, onto boards whose rootfs cap
leaves tens of KB spare -- gk7205v300_lite sits at 5080KB of 5120KB.

Upstream takes both as build options defaulting to "all" (ipctool #178
and #211), and majestic already derives them the same way from its
VENDOR and SDK code. This derives them from OPENIPC_SOC_VENDOR and
OPENIPC_SOC_FAMILY. The family names are not a coincidence: ipctool's
getchipfamily() returns the same strings, so `ipcinfo -f` on a board
prints the key the table is indexed by.

A vendor that is not HiSilicon reaches hal_hisi through nothing -- the
only route is a HiSilicon UART0 base in chipid.c's dispatch -- so those
boards drop hal_hisi.c and ispreg.c from the library altogether.
Checked rather than assumed, on the two non-HiSilicon lab boards:
ssc30kq has no uart line in /proc/iomem at all, and t31 reports
0x10031000, which is not one of the six bases that dispatch (and is one
digit from xm510's 0x10030000 without being it).

Two families are deliberately unmapped. The 3520DV200 ID sets no
chip_generation, and no ID in ipctool's table matches a GK7101 or
GK7102, so neither has a generation to name -- they keep every one
rather than be trimmed on a guess. Unmapped means nothing is passed and
upstream's default applies, so ambarella, anyka and ti keep every HAL
too, and a new SoC is never silently trimmed to the wrong thing.

Nothing derives IPCHW_SENSORS. A mainline image is per-family and gets
flashed onto whatever camera someone bought; `ipcinfo --short-sensor`
exists to name a sensor nobody catalogued, and it runs once, on an
unprovisioned camera, with the answer written to U-Boot env. Compiling a
probe family out turns that into "SENSOR is not detected, aborting".
IPCHW_PADMUX is left alone too: --gc-sections already drops it from
ipcinfo, and libipchw carries its selection as a PUBLIC compile
definition, so setting it would break config_tool in
sigmastar-osdrv-infinity6 on ssc325_lite and ssc325de_lite.

CONF_OPTS only, never DEPENDENCIES: a _DEPENDENCIES line would add an
edge to the graph ci-matrix.py walks and move its frozen board counts.

Measured on gk7205v300_lite, same tree and commit, only this file
differing:

  ipcinfo          34916 -> 22036 bytes   -12880  (-37%)
  rootfs.squashfs   5080 ->  5076 KB      -4KB, headroom 40KB -> 44KB

Verified on a hi3516ev200 (V4, SC2315E, musl armv7), which takes the
same options this file gives the Goke family: -c -f -v -s -l -F -i -S
-x, every long form, the combined -ci that extutils uses, and -t all
answer exactly as the stock 35124-byte binary does.

ci-matrix --self-test passes and the frozen counts are unchanged;
touching this package builds every board, which is the coverage this
wants.
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.

2 participants