From d3b91ff1fd2ac762c764b5f7a93e2564e4643ffb Mon Sep 17 00:00:00 2001 From: lxowalle Date: Sat, 4 Jan 2025 13:57:18 +0800 Subject: [PATCH] * fix cvi_base deadlock --- .../SG200X/overlay/etc/init.d/S30gadget_nic | 30 +++++++++++++++---- .../cvitek/SG200X/overlay/etc/init.d/S30wifi | 9 ++++-- .../SG200X/overlay/etc/init.d/S99temptest | 8 +++-- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30gadget_nic b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30gadget_nic index 919bc37bc..169bde393 100755 --- a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30gadget_nic +++ b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30gadget_nic @@ -39,7 +39,11 @@ start() { then new_rndismac=$(cat /boot/usb.rndis.mac) else - new_rndismac=$(hex2mac 48da356f$(sha512sum /sys/class/cvi-base/base_uid | head -c 4)) + if [ -e /boot/cvi_base_uid ]; then + new_rndismac=$(hex2mac 48da356f$(sha512sum /boot/cvi_base_uid | head -c 4)) + else + new_rndismac=$(hex2mac 48da356f$(sha512sum /sys/class/cvi-base/base_uid | head -c 4)) + fi fi ip link set $rndis_ifname address ${new_rndismac} ifconfig $rndis_ifname up @@ -52,8 +56,13 @@ start() { then ipv4_prefix=`cat /boot/rndis.ipv4_prefix` else - id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) - id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + if [ -e /boot/cvi_base_uid ]; then + id2=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 4 | tail -c 2)) + else + id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + fi id3=$((id3 + 1)) if [ "$id2" = "$id3" ] then @@ -85,7 +94,11 @@ start() { then new_mac=$(cat /boot/usb.ncm.mac) else - new_mac=$(hex2mac 48da356e$(sha512sum /sys/class/cvi-base/base_uid | head -c 4)) + if [ -e /boot/cvi_base_uid ]; then + new_mac=$(hex2mac 48da356e$(sha512sum /boot/cvi_base_uid | head -c 4)) + else + new_mac=$(hex2mac 48da356e$(sha512sum /sys/class/cvi-base/base_uid | head -c 4)) + fi fi ip link set $rndis_ifname address ${new_mac} ifconfig $rndis_ifname up @@ -98,8 +111,13 @@ start() { then ipv4_prefix=`cat /boot/ncm.ipv4_prefix` else - id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) - id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + if [ -e /boot/cvi_base_uid ]; then + id2=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 4 | tail -c 2)) + else + id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + fi if [ "$id2" = "$id3" ] then id2=$((id2 + 1)) diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30wifi b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30wifi index 1bbd768d6..7552b8db9 100755 --- a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30wifi +++ b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S30wifi @@ -76,8 +76,13 @@ start() { then cp /boot/hostapd.conf /etc/hostapd.conf else - id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) - id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + if [ -e /boot/cvi_base_uid ]; then + id2=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /boot/cvi_base_uid | head -c 4 | tail -c 2)) + else + id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2)) + id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2)) + fi if [ "$id2" = "$id3" ] then id2=$((id2 + 1)) diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S99temptest b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S99temptest index ffcd63fd7..909efcb20 100755 --- a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S99temptest +++ b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/S99temptest @@ -27,8 +27,12 @@ case "$1" in fi echo "soc temp: $soc_temp" | fbbar 32 $colorfg $colorbg colorfg=0xFFFFFFFF - echo "soc id: $(cat /sys/class/cvi-base/base_uid)" | fbbar 48 $colorfg $colorbg - sleep 1 + if [ -e /boot/cvi_base_uid ]; then + echo "soc id: $(cat /boot/cvi_base_uid)" | fbbar 48 $colorfg $colorbg + else + echo "soc id: $(cat /sys/class/cvi-base/base_uid)" | fbbar 48 $colorfg $colorbg + fi + sleep 1 done ) & [ $? = 0 ] && echo "OK" || echo "FAIL"