From 2d58b9ae58d2c698accd205223f5258aca215ca3 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:59:14 +0300 Subject: [PATCH] hisilicon-opensdk: bump to ecbc855, so the cv200 watchdog can reset the 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. --- general/package/hisilicon-opensdk/hisilicon-opensdk.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/package/hisilicon-opensdk/hisilicon-opensdk.mk b/general/package/hisilicon-opensdk/hisilicon-opensdk.mk index ad1398bc7..32e2a9fb0 100644 --- a/general/package/hisilicon-opensdk/hisilicon-opensdk.mk +++ b/general/package/hisilicon-opensdk/hisilicon-opensdk.mk @@ -5,7 +5,7 @@ ################################################################################ HISILICON_OPENSDK_SITE = $(call github,openipc,openhisilicon,$(HISILICON_OPENSDK_VERSION)) -HISILICON_OPENSDK_VERSION = 0f80bb88f50f1e3c925218e1bcd10e1bf3a1e691 +HISILICON_OPENSDK_VERSION = ecbc855ae41f0d412afb7e775824fcdbf3526428 HISILICON_OPENSDK_LICENSE = GPL-3.0 HISILICON_OPENSDK_LICENSE_FILES = LICENSE