hisilicon-opensdk: bump to ecbc855, so the cv200 watchdog can reset the board - #2517
Conversation
…he board Closes #127. OpenIPC/openhisilicon#235. The watchdog on the hi3516cv200 generation -- cv200, hi3518ev200/ev201, and the av100 and 3520dv200 copies of the same driver -- was armed, enabled and counting, and still never reset anything. hidog_release() handed the device to the driver's own kernel thread the moment userspace let go, so the one event the watchdog exists for ended with the driver feeding the dog for the rest of the board's life. #127 asks for "the watchdog module" on these parts. It was already insmod'ed, and this package installs open_wdt.ko over the vendor blob as wdt.ko, so openhisilicon's build is what has been running all along -- confirmed by building the unmodified source and watching it answer ioctls exactly as the shipped module does. The module was never the missing piece; the fixes were. Measured on a lab hi3518ev200 before, stock module: a 30 s margin armed, the owner killed, and the board ran on for 106 s with CTRL=0x00000003, LOAD=0x055D4A80 (90,000,000 = 30 x 3 MHz, twice the margin) and VALUE counting down. After: 18 of 18 crash-and-recover cycles, the bite 30 s after arming on a UART clock, the board back unattended in 17-28 s, and a 521 s majestic soak against its 300 s margin. Two more worth knowing about, both specific to this generation: - the magic close was inverted. hidog_write() assigned the nowayout module parameter, so writing "V" left the dog running and not writing it stopped it. A single "V" also flipped nowayout for the rest of the boot, after which every WDIOC_SETOPTIONS was refused with -WDIOS_UNKNOWN, which is -(-1) = +1 -- a positive ioctl return that userspace reads as success. majestic writes "V" before closing, so one clean `S95majestic stop` disabled that ioctl for good. - hi3520dv200 had "if (IS_ERR(p_dog) < 0)", never true, so its feeder creation failure went undetected. The bump also picks up two unrelated openhisilicon commits that have landed since 6eb7736: 0f80bb8 osal, isp: a process that dies holding the pipeline no longer wedges the next start (#234) c1f9eb5 hi3516ev200/sc2235: repeat the DVP pad setup after stream start (#233) Worth knowing before this ships: cv200-era cameras go from a watchdog that never fired to one that does, so a camera whose majestic wedges will now reboot where it previously sat there unguarded. That is the fix, and it is the first thing anyone will notice. Only hi3516cv200 is measured. hi3520dv200 is build-verified and hi3516av100 syntax-checked only, neither having hardware in the lab.
PR Summary by QodoBump openhisilicon to restore cv200 watchdog resets
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can show, collapse, or hide each part of a finding: code, evidence, and all |
|
The review is right about the base pin and I had it wrong: this moves I read the old pin from a stale local PR body corrected, and the squash commit message will carry the right range rather than the one I wrote. |
Closes #127. Bumps
hisilicon-opensdkfrom0f80bb8toecbc855, picking up OpenIPC/openhisilicon#235.What #127 actually needed
The issue asks for "the watchdog kernel module" on hi3516cv200/hi3518ev200. It
has been
insmoded there all along, and this package installsopen_wdt.koover the vendor blob as
wdt.ko— so openhisilicon's build is what runs. Iconfirmed that by building the unmodified source and watching it answer ioctls
exactly as the shipped module does. The module was never the missing piece; the
driver fixes were.
Before, on a lab hi3518ev200
A 30 s margin armed, the owner killed, and the board ran on for 106 s:
Armed, running, never firing —
hidog_release()handed the device to thedriver's own kernel thread the moment userspace let go.
Two more, specific to this generation:
hidog_write()assigned thenowayoutmodule parameter, so writing
"V"left the dog running and not writing itstopped it. A single
"V"also flippednowayoutfor the rest of the boot,after which every
WDIOC_SETOPTIONSwas refused with-WDIOS_UNKNOWN=-(-1)=+1— a positive ioctl return that userspace reads as success.majestic writes
"V"before closing, so one cleanS95majestic stopdisabledthat ioctl permanently.
hi3520dv200hadif (IS_ERR(p_dog) < 0), never true, so its feeder-creationfailure went undetected.
After
WDT_VALUE: counts to zero, reloads once, runs a second count, then resetsScope of the bump
0f80bb8..ecbc855is exactly one commit — the watchdog change above. Nothingelse rides along.
Worth a release note
cv200-era cameras go from a watchdog that never fired to one that does. A camera
whose majestic wedges will now reboot where it previously sat there unguarded.
That is the fix working, and it is the first thing anyone will notice.
Scope
Only hi3516cv200 is measured on hardware.
hi3520dv200is build-verifiedand
hi3516av100syntax-checked only, neither having hardware in the lab.