From a2b8843a0fe9b5c57dfdbecda0ed7517e92109a1 Mon Sep 17 00:00:00 2001 From: AI Dev Date: Fri, 18 Sep 2026 19:54:46 +0000 Subject: [PATCH] hi3516cv200, gk7205v200, gk7605v100: back under the squashfs cap The 2026-09-18 master matrix (run 35375141337, at 49908b5a) failed on three boards, each at 5124KB against the 5120KB squashfs cap -- over by exactly 4KB. All three were reproduced locally from a clean worktree at that commit before anything here was changed, and the cause is the same fleet-wide drift in the unpinned majestic and majestic-webui refs that #2404, #2410, #2421, #2433, #2437 and #2440 have each answered on other boards. #2437 landed one day ago and left these two Goke boards 8KB of headroom while saying in as many words that the drift would take them again; it did. hi3516cv200 shipped two Realtek drivers waiting on firmware the image does not carry. rtl8192cu asks for rtlwifi/rtl8192cufw*.bin, and rtl8xxxu -- with RTL8XXXU_UNTESTED off, so RTL8723AU only -- asks for rtlwifi/rtl8723aufw*.bin. The only Wi-Fi blobs this board installs are mediatek/mt7601u.bin and rtlwifi/rtl8188eufw.bin, so neither could finish probing, and nothing loads them either: /etc/wireless/usb, dispatched by S40network from the wlandev U-Boot variable, is the one entry point and names mt7601u and 8188eu. That was 350KB of .ko (rtl8xxxu 104KB, rtl8192cu 90KB, rtlwifi 85KB, rtl8192c-common 54KB, rtl_usb 15KB), and RTLWIFI_DEBUG=y is why rtlwifi.ko was as large as it was. Same argument as #2404 made for hi3519v101. R8188EU stays, and the line is drawn where the firmware is: rtl8188eufw.bin is what drivers/staging/rtl8188eu/hal/fw.c requests by name, and R8188EU is the only symbol on this board selecting WIRELESS_EXT and WEXT_PRIV, which the out-of-tree drivers a camera may add still need. This is #2410 in reverse -- there the same driver went, because that board had no wext consumer left. gk7205v200 and gk7605v100 are out of free levers: #2376 took their SCSI stack, #2421 stripped the modules they cannot load, #2437 built their crypto helpers in, and every module left is named by a script or dependency-loaded by one that is. So they take the cheaper half of the one lever #2420 found remaining, the same half #2440 gave gk7205v300. Only cfg80211 moves; mac80211 and mt7601u stay modules, because moving those too would trade "one commit from red on rootfs" for the same on uImage. The cost is worth stating: cfg80211 is now permanently resident, so every camera pays for the wireless core whether a dongle is ever plugged in or not. The load path survives being built in -- modules.builtin now lists kernel/net/wireless/cfg80211.ko, which busybox modprobe consults, and mac80211.ko's modules.dep line no longer names it. Measured locally, clean builds of both the before and the after -- an incremental rebuild keeps the old .ko in target/ and reports a nonsensical saving, which is the trap #2437 documented: hi3516cv200_lite rootfs 5124 -> 5012KB uImage 1656 -> 1657KB gk7205v200_lite rootfs 5124 -> 5044KB uImage 1821 -> 1876KB gk7605v100_lite rootfs 5124 -> 5044KB uImage 1799 -> 1855KB None of the three prints a headroom warning any more. --- .../gk7205v200/gk7205v200.generic.config | 10 +++++++++- .../gk7205v200/gk7605v100.generic.config | 10 +++++++++- .../hi3516cv200/hi3516cv200.generic.config | 20 +++++++++++-------- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/br-ext-chip-goke/board/gk7205v200/gk7205v200.generic.config b/br-ext-chip-goke/board/gk7205v200/gk7205v200.generic.config index 3e2279ab29..271efd1dac 100644 --- a/br-ext-chip-goke/board/gk7205v200/gk7205v200.generic.config +++ b/br-ext-chip-goke/board/gk7205v200/gk7205v200.generic.config @@ -806,7 +806,15 @@ CONFIG_BQL=y # CONFIG_AF_KCM is not set # CONFIG_STREAM_PARSER is not set CONFIG_WIRELESS=y -CONFIG_CFG80211=m +# #2437 built this board's crypto helpers in and left 8KB of headroom, saying in +# as many words that the fleet-wide majestic drift would take it again; it did, +# one day later. cfg80211 is the cheaper half of the only lever #2420 found +# left: built in it moves 88KB out of the size-capped rootfs for 62KB of uImage, +# which has room, while mac80211 and mt7601u stay modules -- moving those too +# would trade "one commit from red on rootfs" for the same on uImage. The cost +# worth stating is RAM: the wireless core is now resident whether a dongle is +# ever plugged in or not. Same change #2440 made for gk7205v300. +CONFIG_CFG80211=y # CONFIG_NL80211_TESTMODE is not set # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set CONFIG_CFG80211_DEFAULT_PS=y diff --git a/br-ext-chip-goke/board/gk7205v200/gk7605v100.generic.config b/br-ext-chip-goke/board/gk7205v200/gk7605v100.generic.config index 58ffec5a8e..192c4dadc6 100644 --- a/br-ext-chip-goke/board/gk7205v200/gk7605v100.generic.config +++ b/br-ext-chip-goke/board/gk7205v200/gk7605v100.generic.config @@ -702,7 +702,15 @@ CONFIG_BQL=y # CONFIG_AF_KCM is not set # CONFIG_STREAM_PARSER is not set CONFIG_WIRELESS=y -CONFIG_CFG80211=m +# #2437 built this board's crypto helpers in and left 8KB of headroom, saying in +# as many words that the fleet-wide majestic drift would take it again; it did, +# one day later. cfg80211 is the cheaper half of the only lever #2420 found +# left: built in it moves 88KB out of the size-capped rootfs for 62KB of uImage, +# which has room, while mac80211 and mt7601u stay modules -- moving those too +# would trade "one commit from red on rootfs" for the same on uImage. The cost +# worth stating is RAM: the wireless core is now resident whether a dongle is +# ever plugged in or not. Same change #2440 made for gk7205v300. +CONFIG_CFG80211=y # CONFIG_NL80211_TESTMODE is not set # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set CONFIG_CFG80211_DEFAULT_PS=y diff --git a/br-ext-chip-hisilicon/board/hi3516cv200/hi3516cv200.generic.config b/br-ext-chip-hisilicon/board/hi3516cv200/hi3516cv200.generic.config index 68f8da5fb6..fbddf83d76 100644 --- a/br-ext-chip-hisilicon/board/hi3516cv200/hi3516cv200.generic.config +++ b/br-ext-chip-hisilicon/board/hi3516cv200/hi3516cv200.generic.config @@ -1091,14 +1091,18 @@ CONFIG_MT7601U=m # CONFIG_WLAN_VENDOR_RALINK is not set CONFIG_WLAN_VENDOR_REALTEK=y # CONFIG_RTL8187 is not set -CONFIG_RTL_CARDS=m -CONFIG_RTL8192CU=m -CONFIG_RTLWIFI=m -CONFIG_RTLWIFI_USB=m -CONFIG_RTLWIFI_DEBUG=y -CONFIG_RTL8192C_COMMON=m -CONFIG_RTL8XXXU=m -# CONFIG_RTL8XXXU_UNTESTED is not set +# Both of these wait on firmware no package in this tree installs. rtl8192cu +# asks for rtlwifi/rtl8192cufw*.bin; rtl8xxxu, with UNTESTED off, is RTL8723AU +# only and asks for rtlwifi/rtl8723aufw*.bin. The only Wi-Fi blobs on this image +# are mediatek/mt7601u.bin and rtlwifi/rtl8188eufw.bin, so neither could finish +# probing, and nothing modprobes them either -- /etc/wireless/usb is the one +# entry point and names mt7601u and 8188eu. That was 350KB of .ko on a rootfs +# 4KB over its cap, and RTLWIFI_DEBUG=y is why rtlwifi.ko was as big as it was. +# Same argument as #2404 and #2410. R8188EU below stays: rtl8188eufw.bin is the +# firmware it requests, and it is the only symbol here selecting WIRELESS_EXT +# and WEXT_PRIV, which the out-of-tree drivers a camera may add still need. +# CONFIG_RTL_CARDS is not set +# CONFIG_RTL8XXXU is not set # CONFIG_WLAN_VENDOR_RSI is not set # CONFIG_WLAN_VENDOR_ST is not set # CONFIG_WLAN_VENDOR_TI is not set