fixed ERRORs in deblob-5.10, still for 5.10-rc6
[releases.git] / deblob-check
index 816000462b25b3b66530b19d3f72e34368f2608b..992b86a63ddc07d4b658cc9b86f030feac55f182 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# deblob-check version 2020-07-09
+# deblob-check version 2020-12-05
 # Inspired in gNewSense's find-firmware script.
 # Written by Alexandre Oliva <lxoliva@fsfla.org>
 
 #              completed in reasonable time.
 
 
+# For reference, as of 5.8-rc6-gnu, checking the full tarball (with
+# -B, not -C) takes up:
+
+# Engine            top mem   time
+# GNU awk 5.0.1     2.2GB       1x
+# Python 3.8.3         48MB    14x
+# Perl 5.30.3          22MB    45x
+# GNU sed 4.5      24GB         4x
+
+
 # The default sensitivity is 32 constants.
 
 # The sensitivity, if present, must be the first option.  The action
@@ -2350,7 +2360,7 @@ set_except () {
     blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
     blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
     defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
+    accept '[ ][*][ ]File:[ ]main_usb\.c[\n][ ]\([*]\+[^/*][^*]*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
     blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
     defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
     defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
@@ -3223,7 +3233,7 @@ set_except () {
     blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
 
     # New in 3.8
-    accept 'K_table:\([\n][    ]*\.quad[       ]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
+    accept 'K_table:\([\n][ \t]*\.\(quad\|long\)[ \t]*0x[0-9a-f]*[,][ ]\?0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
     defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
     accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
     defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
@@ -3767,7 +3777,7 @@ set_except () {
     blobname 'brcm[/]brcmfmac43569\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
     blobname '3826\.eeprom' drivers/net/wireless/p54/p54spi.c
     defsnc 'static[ ]const[ ]u64[ ]sha512_k\[\][ ]=' arch/arm/crypto/sha512_neon_glue.c
-    accept 'K_table:\([\n][    ]*\.long[       ]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
+    accept 'K_table:\([\n][ \t]*\.\(quad\|long\)[ \t]*0x[0-9a-f]*[,][ ]\?0x[0-9a-f]*\)\*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
     accept '\.L_s[12345678]:\([\n][    ]*\.quad[       ]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/des3_ede-asm_64.S
     defsnc '[\t]const[ ]unsigned[ ]char[ ][*]K[ ]=[ ][(]unsigned[ ]char[ ][*][)]' crypto/drbg.c
     accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,]' drivers/base/firmware_class.c
@@ -4182,11 +4192,12 @@ set_except () {
     blobname 'brcm[/]brcmfmac4358-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmacpcie.c
     blobname 'brcm[/]brcmfmac43241b5-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/sdio.c
     # http://arago-project.org/git/projects/?p=am33x-cm3.git contains
-    # source code and the license even looks like a Free Software
-    # license, but there are provisions about trade secrets that might
-    # be contained in blobs therein.  Furthermore, the license hasn't
-    # been reviewed by the FSF.  So let's keep on assuming it's
-    # non-Free, until we get a definitive answer.
+    # source code and the Texas Instruments, Inc Software License
+    # Agreeent even looks like a Free Software license, but there are
+    # provisions about trade secrets that might be contained in blobs
+    # therein.  Furthermore, the license hasn't been reviewed by the
+    # FSF.  So let's keep on assuming it's non-Free, until we get a
+    # definitive answer.
     blobname 'am335x-pm-firmware\.elf' Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
     blobname 'rtl_bt[/]rtl\(8723[ab]\|8821a\|8761a\)_fw\.bin' drivers/bluetooth/btrtl.c
     blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
@@ -4279,9 +4290,9 @@ set_except () {
 
     # New in 4.4.
     blobna 'More[ ]description[ ]on[ ]the[ ]firmware.*make[ ]sure[ ]to[ ]copy[ ]firmware[\n]to[ ]file[ ]system[ ]before[ ]using[ ]these[ ]queue[ ]types[.]' Documentation/arm/keystone/knav-qmss.txt
-    accept '[\t        ]*interrupts[ ]=[ ]<\([\n\t ]*\([0-9xa-f ]*\|[/][*]\([^*]\|[*]*[^*/]\)*[*][*]*[/]\)\)*>[;]' arch/arm64/boot/dts/hisilicon/hip05_hns.dtis
+    accept '[\t        ]*interrupts[ ]=[ ]<\([\n\t ]*\([0-9xa-f]*\|[/]\([*]\+[^*/][^*]*\)\+[*]\+[/]\)\)*>[;]' arch/arm64/boot/dts/hisilicon/hip05_hns.dtis
     accept '[ ][ ][ ][ ]run_cmd[ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '#define[ ]XCHAL_BYTE0_FORMAT_LENGTHS[ \t23,\\\n]*' arch/xtensa/variants/de212/include/variant/tie.h
+    accept '#define[ ]XCHAL_BYTE0_FORMAT_LENGTHS[ \t238,\\\n]*' arch/xtensa/variants/de212/include/variant/tie.h
     defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]wm8998_rev_a_patch\[\][ ]=' drivers/mfd/wm8998-tables.c
     defsnc 'static[ ]struct[ ]nand_ecclayout[ ]vf610_nfc_ecc\(45\|60\)[ ]=' drivers/mtd/nand/vf610_nfc.c
     defsnc 'static[ ]const[ ]struct[ ]iro[ ]iro_arr\[31\][ ]=' drivers/net/ethernet/qlogic/qed/qed_hsi.h
@@ -4390,7 +4401,7 @@ set_except () {
     blob '[/]lib[/]firmware[/]\([\n][^\n][^\n]*\)*\.\.\.' Documentation/x86/early-microcode.txt
     blobname 'https[:][/][/]01\.org[/]linuxgraphics[/]intel-[^"\n]*' drivers/gpu/drm/i915/intel_csr.c
     accept '[\t ]*["]genroms[/]kvmvapic\.bin' Documentation/ABI/testing/sysfs-firmware-qemu_fw_cfg
-    accept '[#]define[ ]XCHAL_BYTE0_FORMAT_LENGTHS[ \t\n,238\\]*' arch/xtensa/variants/test_kc705_hifi/include/variant/tie.h
+    accept '#define[ ]XCHAL_BYTE0_FORMAT_LENGTHS[ \t238,\\\n]*' arch/xtensa/variants/test_kc705_hifi/include/variant/tie.h
     defsnc 'static[ ]const[ ]int[ ]supported_data_lane_swaps\[\]\[4\][ ]=' drivers/gpu/drm/msm/dsi/dsi_host.c
     accept '[\t ]*\(if[ ][(]\)\?[(]ret[ ]=[ ]gf100_gr_ctor_fw[(]gr[,][ ]["]gr[/]\(fecs\|gpccs\)_\(data\|inst\)["][,][ ][&]gr->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gm200.c
     defsnc '[\t]static[ ]const[ ]u8[ ]sixaxis_leds\[10\]\[4\][ ]=' drivers/hid/hid-sony.c
@@ -4663,7 +4674,7 @@ set_except () {
     defsnc 'static[ ]yyconst[ ]YY_CHAR[ ]yy_meta\[48\][ ]=' scripts/dtc/dtc-lexer.lex.c_shipped
     defsnc 'static[ ]yyconst[ ]flex_uint16_t[ ]yy_base\[180\][ ]=' scripts/dtc/dtc-lexer.lex.c_shipped
     defsnc 'static[ ]yyconst[ ]flex_uint16_t[ ]yy_nxt\[449\][ ]=' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '0x1B[,][ ]0x5E[,][ ]0x78[,][ ]0x3D[,][ ]0x00[,][ ]0x00[,][ ]0x00[,][ ]0x18[,][ ][0x1-9A-F, ]*' security/apparmor/nulldfa.in
+    accept '0x1B[,][ ]0x5E[,][ ]0x78[,][ ]0x3D[,][ ]0x00[,][ ]0x00[,][ ]0x00[,][ ]0x18[,][ ][0x1-9A-F, \n]*' security/apparmor/nulldfa.in
     defsnc '[\t]struct[ ]sock_filter[ ]bpf_filter\[\][ ]=' tools/testing/selftests/net/psock_lib.h
     blobname 'cpt8x-mc-[as]e\.out' drivers/crypto/cavium/cpt/cptpf_main.c
     blobname 'i915[/]["][ ]__stringify[(]platform[)][ ]["]_huc_ver["][ ]__stringify[(]major[)][ ]["]_["][ \\\n\t]*__stringify[(]minor[)][ ]["]_["][ ]__stringify[(]bld_num[)][ ]["]\.bin' drivers/gpu/drm/i915/intel_huc.c
@@ -5804,7 +5815,7 @@ set_except () {
     accept '[\t]err[ ]=[ ]request_firmware_direct[(][&]fw[,][ ]file_name[,]\([^\n]*[\n]\+[^\n}]\)*err[ ]=[ ]mlx5_firmware_flash[(]' drivers/net/ethernet/mellanox/mlx5/core/devlink.c
 
     # New in 5.7-rc7.
-    accept '[\t ]*:\([ ]*[32][86420]0*\)*\([\n][ ]*[32][86420]0*:\([ ]*[012345]\)*\)*' Documentation/cpu-freq/cpufreq-stats.rst
+    accept '[\t ]*:\([ ]*[32][86420]0*\)\+\([\n][ ]*[32][86420]0*:\([ ]*[012345]\)*\)\+' Documentation/cpu-freq/cpufreq-stats.rst
     accept '\(The[ ]\)\?firmware_request_platform[(][)][ ]function' Documentation/driver-api/firmware/fallback-mechanisms.rst
     accept '[ ][ ][ ]request_firmware[\n]' Documentation/driver-api/firmware/index.rst
     accept '[ ][ ]firmware_request_platform[(][)][ ]is[ ]used' Documentation/driver-api/firmware/lookup-order.rst
@@ -5888,6 +5899,195 @@ set_except () {
     defsnc 'static[ ]const[ ]u32[ ]ivb_clear_kernel\[\][ ]=' drivers/gpu/drm/i915/gt/ivb_clear_kernel.c
     defsnc 'static[ ]const[ ]u32[ ]hsw_clear_kernel\[\][ ]=' drivers/gpu/drm/i915/gt/hsw_clear_kernel.c
 
+    # New in 5.8-rc5.
+    blobname 'brcm[/]BCM%s\.hcd' drivers/bluetooth/btbcm.c
+    accept '[ ]Package[\t]Core[\t]CPU[\t]Bzy_MHz\([\n][ ]0[\t][\t]\([0-9]\|1[0-3]\)[\t]\([0-9]\|1[0-3]\)[\t][1-9][0-9]*\)*' Documentation/admin-guide/pm/intel-speed-select.rst
+    accept '[ \t]*cellwise[,]battery-profile[ ]=[ ][/]bits[/][ ]8[ ]<\([\n][ \t]*0x[0-9A-F][0-9A-F]\([ ]0x[0-9A-F][0-9A-F]\)*\)*[\n][ \t]*>[;]' Documentation/devicetree/bindings/power/supply/cw2015_battery.yaml
+    blobname 'imx[/]easrc[/]easrc-imx8mn\.bin' Documentation/devicetree/bindings/sound/fsl,easrc.yaml
+    defsnc '[ ]*struct[ ]sock_filter[ ]code\[\][ ]=' Documentation/networking/filter.rst
+    accept '[ ]*gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
+    accept '[ ][*][ ]*0[ ]-[ ]success[ ][(]no[ ]update[ ]done[ ]or[ ]microcode[ ]was[ ]updated[)]' arch/x86/kernel/cpu/microcode/core.c
+    blobname 'qca[/]htnv%02x\.bin' drivers/bluetooth/btqca.c
+    blobname 'rtl_bt[/]rtl8761b_fw\.bin' drivers/bluetooth/btrtl.c
+    defsnc '[}][ ]postdivs\[\][ ]=' drivers/clk/mmp/clk-audio.c
+    defsnc '[\t][}][ ]common_modes\[21\][ ]=' drivers/gpu/drm/amd/amdgpu/dce_virtual.c
+    defsc 'static[ ]const[ ]unsigned[ ]int[ ]a405_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a4xx_gpu.c
+    blobname 'a6[45]0_\(gmu\.bin\|zap\.mdt\|sqe\.fw\)' drivers/gpu/drm/msm/adreno/adreno_device.c
+    defsc 'static[ ]const[ ]struct[ ]ltk050h3146w_cmd[ ]page[13]_cmds\[\][ ]=' drivers/gpu/drm/panel/panel-leadtek-ltk050h3146w.c
+    defsnc '[\t]dsi_dcs_write_seq[(]dsi[,][ ]0x' drivers/gpu/drm/panel/panel-leadtek-ltk050h3146w.c
+    defsnc 'static[ ]const[ ]struct[ ]ov2740_reg[ ]mode_1932x1092_regs\[\][ ]=' drivers/media/i2c/ov2740.c
+    blobname 'habanalabs[/]gaudi[/]gaudi\(-boot\)\?-fit\.itb' drivers/misc/habanalabs/gaudi/gaudi.c
+    blobname 'habanalabs[/]gaudi[/]gaudi_tpc\.bin' drivers/misc/habanalabs/gaudi/gaudi.c
+    blobname 'habanalabs[/]goya[/]goya-boot-fit\.itb' drivers/misc/habanalabs/goya/goya.c
+    defsnc 'static[ ]const[ ]u8[ ]ice_fdir_\(tc\|ud\|sct\|\|i\)p\(v[46]\|[46]_tun\)_pkt\[\][ ]=' drivers/net/ethernet/intel/ice/ice_fdir.c
+    defsnc 'static[ ]const[ ]u32[ ]ice_ptypes_gre_of\[\][ ]=' drivers/net/ethernet/intel/ice/ice_flow.c
+    defsc 'static[ ]const[ ]struct[ ]ath10k_index_v\?ht_data_rate_type[ ]supported_v\?ht_mcs_rate_nss[12]\[\][ ]=' drivers/net/wireless/ath/ath10k/mac.c
+    defsnc '[\t]static[ ]const[ ]u16[ ]freq_list\[\][ ]=' drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+    blobname 'mediatek[/]mt7663\(pr2h\|_n9\)_rebb\.bin' drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
+    blobname 'mediatek[/]mt7915_\(w[am]\|rom_patch\)\.bin' drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h
+    defsnc 'static[ ]const[ ]u32[ ]rtw8723d_\(ofdm\|cck\)_swing_table\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8723d.c
+    blobname 'rtw88[/]rtw8723d_fw\.bin' drivers/net/wireless/realtek/rtw88/rtw8723d.c
+    defsnc 'static[ ]const[ ]u32[ ]rtw8723d_\(mac\|agc\|bb\|rf_a\)\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8723d_table.c
+    defsnc 'static[ ]const[ ]struct[ ]rtw_phy_pg_cfg_pair[ ]rtw8723d_bb_pg\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8723d_table.c
+    defsnc 'static[ ]const[ ]struct[ ]rtw_txpwr_lmt_cfg_pair[ ]rtw8723d_txpwr_lmt\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8723d_table.c
+    defsnc 'static[ ]const[ ]struct[ ]rtw_txpwr_lmt_cfg_pair[ ]rtw8822c_txpwr_lmt_type5\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8723d_table.c
+    blobname 'gsl3680-mpman-mpwin895cl\.fw' drivers/platform/x86/touchscreen_dmi.c
+    blobname 'gsl3676-onda-v891-v5\.fw' drivers/platform/x86/touchscreen_dmi.c
+    blobname 'gsl1680-techbite-arc-11-6\.fw' drivers/platform/x86/touchscreen_dmi.c
+    blobname 'gsl1680-vinga-twizzle_j116\.fw' drivers/platform/x86/touchscreen_dmi.c
+    defsc 'static[ ]struct[ ]ov2680_reg[ ]const[ ]ov2680_\(global_setting\|\(Q\?CIF\|QVGA\|656x496\|800x600\|720p\|1296x976\|1456x1096\|1616x916\|1616x1082\)_30fps\)\[\][ ]=' drivers/staging/media/atomisp/i2c/ov2680.h
+    defsnc 'static[ ]struct[ ]ia_css_macc_table[ ]\(skin_\(low\|medium\|high\)\|blue\|green\)_macc_table[ ]=' drivers/staging/media/atomisp/pci/atomisp_tables.h
+    defsnc 'static[ ]struct[ ]ia_css_ctc_table[ ]vivid_ctc_table[ ]=' drivers/staging/media/atomisp/pci/atomisp_tables.h
+    blobname 'shisp_240\(0b\|1a\)0_v21\.bin' 'drivers/staging/media/atomisp/\(TODO\|atomisp_v4l2\.c\)'
+    blobname 'shisp_2401a0_legacy_v21\.bin' drivers/staging/media/atomisp/pci/atomisp_v4l2.c
+    defsnc 'static[ ]const[ ]s16[ ]g_pyramid\[8\]\[8\][ ]=' drivers/staging/media/atomisp/pci/isp/kernels/tdf/tdf_1.0/ia_css_tdf.host.c
+    defsc 'static[ ]const[ ]struct[ ]vnt_threshold[ ]\(al2230\|vt3\(226\|342\)\)_vnt_threshold\[\][ ]=' drivers/staging/vt6656/baseband.c
+    defsnc 'static[ ]const[ ]int[ ]k3_adc_to_temp\[\][ ]=' drivers/thermal/k3_bandgap.c
+    blobname 'renesas_usb_fw\.mem' drivers/usb/host/xhci-pci.c
+    defsnc 'static[ ]u8[ ]swap_bits_table\[\][ ]=' lib/bch.c
+    blobname 'dsm_param\(_%s_%s\)\?\.bin' sound/soc/codecs/max98390.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt1016_reg\[\][ ]=' sound/soc/codecs/rt1016.c
+    defsnc 'const[ ]struct[ ]reg_default[ ]rt5682_reg\[RT5682_REG_NUM\][ ]=' sound/soc/codecs/rt5682.c
+    blobname 'zl38060\.fw' sound/soc/codecs/zl38060.c
+    blobname '%s-tplg\.bin' sound/soc/intel/skylake/skl-topology.c
+    defsnc 'static[ ]uint8_t[ ]default_tx\[\][ ]=' tools/spi/spidev_test.c
+    # This is not used at all, but watch out for future uses thereof.
+    # It is intended for use to load large register-set files rather
+    # than code.  That ought to be acceptable, but let's make sure no
+    # unwanted use slips through.
+    blobna 'load_msr_list' drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper.c
+    accept 'int[ ]load_msr_list[(][^)]*[)][\n][{][\n][\t]int[ ]ret[ ]=[ ]request_firmware[(]' drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper.c
+    accept 'int[ ]load_msr_list[(][^)]*[)][;]' drivers/staging/media/atomisp/include/linux/libmsrlisthelper.h
+    blobname 'qca[/]crbtfw%02x\.tlv' drivers/bluetooth/btqca.c
+    blobname 'qca[/]htbtfw%02x\.tlv' drivers/bluetooth/btqca.c
+    blobname 'qca[/]%s' drivers/bluetooth/btqca.c
+    accept '[\t]quirks[ \t]*=[ ]XHCI_RENESAS_FW_QUIRK[,][\n][\t]\.firmware[ ]=' drivers/usb/host/xhci-pci.c
+    accept '[\t]*dev_err[(][&]pdev->dev[,][ ]["]request_firmware[ ]failed' drivers/usb/host/xhci-pci-renesas.c
+    accept 'EXPORT_SYMBOL_GPL[(]load_msr_list[)]' drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper.c
+    blobna 'for[ ]the[ ]WinTV[/]PVR[^:.]*firmware[^:.]*:[\n ][`][`]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/admin-guide/media/bttv.rst
+
+    # New in 5.8.2, 5.7.16, 5.4.59, and 4.19.140.
+    blobname 'mrvl[/]sdsd8977_combo_v2\.bin' 'drivers/\(bluetooth/btmrvl_sdio\.c\|net/wireless/marvell/mwifiex/sdio\.h\)'
+    blobname 'mrvl[/]sdsd8997_combo_v4\.bin' 'drivers/\(bluetooth/btmrvl_sdio\.c\|net/wireless/marvell/mwifiex/sdio\.h\)'
+
+    # New in 5.9-rc6.
+    accept '[ ][ ]For[ ]pm\(8841\|8916\|8941\|8994\|8994\|a8084\|i8994\|i8998\|s405\)\([,][ \n][ ]*[slv0-9]*\)*' Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml
+    initnc '[ ][ ][ ][ ][$][ ]devlink[ ]region[ ]dump[ ]pci[/][^ ]*[ ]snapshot' Documentation/networking/devlink/ice.rst
+    blobname 'nvm_00440302_i2s_eu\.bin' arch/arm64/boot/dts/mediatek/mt8183-kukui-krane.dtsi
+    initnc '[\t][\t]temperature-lookup-table[ ]=[ ]<' arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
+    blobname 'nvm_00440302_i2s\.bin' arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
+    defsnc 'static[ ]const[ ]u64[ ]inst\[\][ ]=' drivers/crypto/qat/qat_common/qat_hal.c
+    defsnc 'static[ ]u8[ ]mci_cbc_\(enc\|dec\)_\(no_iv_\)\?array\[3\]\[MODE_CONTROL_BYTES\][ ]=' drivers/crypto/sa2ul.c
+    defsnc 'static[ ]u8[ ]mci_ecb_\(enc\|dec\)_\(no_iv_\)\?array\[3\]\[27\][ ]=' drivers/crypto/sa2ul.c
+    blobname 'amdgpu[/]\(tahiti\|verde\|pitcairn\|oland\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'amdgpu[/]\(sienna_cichlid\|navy_flounder\)_vcn\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+    blobname 'amdgpu[/]\(sienna_cichlid\|navy_flounder\|%s\)_sdma\(%d\)\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
+    # Sources are in cwsr_trap_handler_gfx10.asm.
+    defsnc 'static[ ]const[ ]uint32_t[ ]cwsr_trap_nv1x_hex\[\][ ]=' drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler.h
+    blobname 'amdgpu[/]\(sienna_cichlid\|navy_flounder\|%s\)_dmcub\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_dm.c
+    blobname 'i915[/]rkl_dmc_ver2_01\.bin' drivers/gpu/drm/i915/display/intel_csr.c
+    initnc '[\t]dsi_dcs_write_seq[(]dsi[,][ ]ST7703_CMD_SET\(GIP[12]\|GAMMA\)[,]' drivers/gpu/drm/panel/panel-sitronix-st7703.c
+    defsnc 'static[ ]const[ ]struct[ ]vadc_map_pt[ ]adcmap7_100k\[\][ ]=' drivers/iio/adc/qcom-vadc-common.c
+    defsc '[}][ ]ov10635_regs_wizard\[\][ ]=' drivers/media/i2c/rdacm20.c
+    accept '[\t][/][*][ ]get[ ]reference[ ]of[ ]pdev[ ]for[ ]request_firmware[ ][*][/]' drivers/misc/ti-st/st_kim.c
+    accept '[ ][*][ ]@path:[ ]the[ ]path[ ]of[ ]the[ ]firmware[ ]file[ ]to[ ]use[ ]via[ ]request_firmware' drivers/net/ethernet/intel/ice/ice_devlink.c
+    blobname 'mellanox[/]mlxsw_spectrum3-\(["][ ]__stringify[(]MLXSW_SP3_FWREV_[^)]*[)][ \\\n\t]*["]\.\)*mfa2' drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+    blobname 'rtl_nic[/]rtl8125b-2\.fw' drivers/net/ethernet/realtek/r8169_main.c
+    defsnc 'static[ ]const[ ]u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ba]_[np]\[\]\[DEL_SW_IDX_SZ\][ ]=' drivers/net/wireless/realtek/rtlwifi/rtl8821ae/dm.c
+    defsnc 'static[ ]const[ ]u32[ ]rtw8821c_txscale_tbl\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8821c.c
+    defsnc 'static[ ]const[ ]u8[ ]rtw8821c_pwrtrk_5g[ba]_[np]\[\]\[RTW_PWR_TRK_TBL_SZ\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8821c.c
+    blobname 'rtw88[/]rtw8821c_fw\.bin' drivers/net/wireless/realtek/rtw88/rtw8821c.c
+    defsnc 'static[ ]const[ ]u32[ ]rtw8821c_\(mac\|agc\|bb\|rf_a\)\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8821c_table.c
+    defsnc 'static[ ]const[ ]struct[ ]rtw_phy_pg_cfg_pair[ ]rtw8821c_bb_pg_type0\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8821c_table.c
+    defsnc 'static[ ]const[ ]struct[ ]rtw_txpwr_lmt_cfg_pair[ ]rtw8821c_txpwr_lmt_type0\[\][ ]=' drivers/net/wireless/realtek/rtw88/rtw8821c_table.c
+    defsnc 'static[ ]const[ ]struct[ ]xpsgtr_ssc[ ]ssc_lookup\[\][ ]=' drivers/phy/xilinx/phy-zynqmp.c
+    accept '[\t]*dev_err[(]dev[,][ ]["]request_firmware[ ]failed' drivers/remoteproc/remoteproc_core.c
+    defsnc 'const[ ]unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\)\[\][ ]=' drivers/s390/net/qeth_core_mpc.c
+    defsnc '[\t]static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8723bs/core/rtw_security.c
+    defsnc '[\t]static[ ]const[ ]u8[ ]rx_hash_toeplitz_key\[\][ ]=' drivers/vdpa/mlx5/net/mlx5_vnet.c
+    defsnc 'static[ ]struct[ ]test_bitmap_cut[ ]test_cut\[\][ ]=' lib/test_bitmap.c
+    defsnc 'static[ ]__maybe_unused[ ]const[ ]a3d_Hrtf_t[ ]A3dHrir\(Impulse\|Ones\|SatTest\|DImpulse\)[ ]=' sound/pci/au88x0/au88x0_a3ddata.c
+    defsnc 'static[ ]__maybe_unused[ ]xtalk_dline_t[ ]const[ ]alXtalkDlineTest[ ]=' sound/pci/au88x0/au88x0_xtalk.c
+    accept '[\t]const[ ]char[ ][*]pathname[ ]=[ ]["][/]var[/]run[/]isst_cpu_topology\.dat["]' tools/power/x86/intel-speed-select/isst-config.c
+    # The firmware file name is supplied by the user.
+    accept '[\t]err[ ]=[ ]request_firmware_direct[(][&]fw[,][ ]file_name[,][\n\t ]*[&]priv->hwdev->hwif->pdev->dev[)]' drivers/net/ethernet/huawei/hinic/hinic_devlink.c
+    accept '[\t]err[ ]=[ ]ice_check_for_pending_update[(]pf[,][ ]component[,][ ]extack[)][;][\n][\t]if[ ][(]err[)][\n][\t][\t]return[ ]err[;][\n][\n][\t]err[ ]=[ ]request_firmware[(][&]fw[,][ ]path[,][ ]dev[)]' drivers/net/ethernet/intel/ice/ice_devlink.c
+    blobname 'atmel[/]wilc1000_wifi_firmware-\([0-9]\+\.bin\)\?' drivers/net/wireless/microchip/wilc1000/netdev.c
+    # We massage the file with undefine_macro before clean_blob.
+    blobname '[/][*][(]DEBLOBBED[)][*][/]["][ ][#]api[ ]["]\.bin' drivers/net/wireless/microchip/wilc1000/netdev.c
+    defsnc '[\t]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8125a_[12]\[\][ ]=' drivers/net/ethernet/realtek/r8169_main.c
+
+    # New in 5.9 final.
+    blobname 'gsl1680-mpman-converter9.fw' drivers/platform/x86/touchscreen_dmi.c
+    defsc 'static[ ]struct[ ]font_data[ ]fontdata_ter16x32[ ]=' lib/fonts/font_ter16x32.c
+
+    # New in 5.9.2 and 5.8.17.
+    accept '[\t][\t]\.driver_data[ ]=[ ]["]sof-[^" ;]*\.tplg["]' sound/soc/sof/sof-pci-dev.c
+
+    # New in 5.9.7 and 5.4.76.
+    defsc 'static[ ]const[ ]struct[ ]font_data[ ]fontdata_ter16x32[ ]=' lib/fonts/font_ter16x32.c
+
+    # New in 5.9.9.
+    defsnc 'static[ ]const[ ]struct[ ]msm_gpio_wakeirq_map[ ]sm8250_pdc_map\[\][ ]=' drivers/pinctrl/qcom/pinctrl-sm8250.c
+
+    # New in 5.10-rc.
+    defsc '\([/][*]\)\?static[ ]unsigned[ ]int[ ]\(No\)\?DbiPrbs7\[\][ ]=' drivers/gpu/drm/amd/pm/inc/smu_11_0_cdr_table.h
+    defsnc 'static[ ]const[ ]struct[ ]phy_settings[ ]vc5_hdmi_phy_settings\[\][ ]=' drivers/gpu/drm/vc4/vc4_hdmi_phy.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ad9434_scale_table\[\]\[2\][ ]=' drivers/iio/adc/ad9467.c
+    defsc 'static[ ]const[ ]struct[ ]reg_default[ ]lp50\(24\|36\)_reg_defs\[\][ ]=' drivers/leds/leds-lp50xx.c
+    defsc 'static[ ]const[ ]struct[ ]SMap[I2 ]\?[ ]m_\(RF_Cal\|\(Main\|Cal\)_PLL\|GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb-frontends/tda18271c2dd_maps.h
+    defsnc 'static[ ]const[ ]struct[ ]ov8856_reg[ ]mode_\(3264x2448\|1632x1224\)_regs\[\][ ]=' drivers/media/i2c/ov8856.c
+    defsc 'static[ ]const[ ]u32[ ]CRC_LUT\[256\][ ]=' drivers/media/test-drivers/vidtv/vidtv_psi.c
+    defsc 'static[ ]const[ ]u8[ ]reverse\[256\][ ]=' drivers/media/test-drivers/vidtv/vidtv_s302m.c
+    defsnc 'static[ ]const[ ]u8[ ]r8a779\(6\(5\|_es13\)\|90\)_calib_table\[2\]\[SDHI_CALIB_TABLE_MAX\][ ]=' drivers/mmc/host/renesas_sdhi_core.c
+    defsnc 'static[ ]const[ ]u16[ ]mcp251xfd_crc16_table\[\][ ]=' drivers/net/can/spi/mcp251xfd/mcp251xfd-crc16.c
+    defsnc 'static[ ]const[ ]u32[ ]ice_ipv[46]_\(ofos\|il\)_no_l4\[\][ ]=' drivers/net/ethernet/intel/ice/ice_flow.c
+    defsc 'static[ ]const[ ]struct[ ]ath10k_mem_section[ ]qca6174_hw30_sdio_register_sections\[\][ ]=' drivers/net/wireless/ath/ath10k/coredump.c
+    accept 'const[ ]struct[ ]firmware[ ][*]ath11k_core_firmware_request[(]' drivers/net/wireless/ath/ath11k/'core\.[ch]'
+    accept '[\t]*\(bd->fw\|fw_entry\|fw\)[ ]=[ ]ath11k_core_firmware_request[(]' drivers/net/wireless/ath/ath11k/qmi.c
+    blobname '\(amss\|m3\)\.bin' drivers/net/wireless/ath/ath11k/hw.h
+    blobname 'gsl1680-irbis-tw118\.fw' drivers/net/wireless/intel/iwlwifi/fw/pnvm.c
+    blobname 'gsl3680-predia-basic\.fw' drivers/net/wireless/intel/iwlwifi/fw/pnvm.c
+    accept '[\t]s->data_sz[ ][=][ ][0-9]*[;][\n][\t]s->data[ ]=[ ][(]void[ ][*][)]["]\([\\]\([0-7][0-7]*\|x[0-9a-f][0-9a-f]\|[\n]\)\)*["][;]' kernel/bpf/preload/iterators/iterators.skel.h
+    accept '[ ][*][ ]@file_offset:[ ]file[ ]offset[ ]to[ ]request[ ]when[ ]calling[ ]request_firmware_into_buf' lib/test_firmware.c
+    accept '[ ][*][ ]@partial:[ ]partial[ ]read[ ]opt[ ]when[ ]calling[ ]request_firmware_into_buf' lib/test_firmware.c
+    accept '[\t]*req->rc[ ]=[ ]request_\(partial_\|\)firmware_into_buf[\n][\t]*[(][&]req->fw[,][\n][\t]*[ ]req->name' lib/test_firmware.c
+    blobname 'qcom[/]sc7180-trogdor[/]modem[/]\(mba\|qdsp6sw\)\.mbn' arch/arm64/boot/dts/qcom/sc7180-trogdor-lte-sku.dtsi
+    blobname 'qcom[/]sc7180-trogdor[/]modem-nolte[/]\(mba\|qdsp6sw\)\.mbn' arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
+    blobname 'qcom[/]sdm845[/][ac]dsp\.mdt' arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts
+    blobname 'qcom[/]sdm845[/]mba\.mbn' arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts
+    blobname 'qcom[/]sdm845[/]modem\.mdt' arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts
+    accept '[ ][*][ ]request_partial_firmware_into_buf[(][)][ ]-[ ]load' drivers/base/firmware_loader/main.c
+    accept '[ ][*][ ]This[ ]function[ ]works[ ]pretty[ ]much[ ]like[ ]request_firmware_into_buf[ ]except' drivers/base/firmware_loader/main.c
+    accept 'request_partial_firmware_into_buf[(]const[ ]struct[ ]firmware' drivers/base/firmware_loader/main.c
+    accept 'EXPORT_SYMBOL[(]request_partial_firmware_into_buf[)]' drivers/base/firmware_loader/main.c
+    accept '\(static[ ]inline[ ]\)\?int[ ]request_partial_firmware_into_buf\([(]const[ ]struct[ ]firmware\|[\n]\)' include/linux/firmware.h
+    accept '[\t]retval0[ ]=[ ]report_missing_free_firmware[^\n]*[\n][\t]retval[ ]=[ ]request_partial_firmware_into_buf[(][&]xfw[,][ ]NONFREE_FIRMWARE' include/linux/firmware.h
+    accept '[\t]if[ ][(]is_nonfree_firmware[^\n]*[\n][\t][\t]return[ ]reject_partial_firmware_into_buf[^\n]*[\n][\t]else[\n][\t][\t]return[ ]request_partial_firmware_into_buf[(]firmware_p[,][ ]name[,]' include/linux/firmware.h
+    accept 'test_request_partial_firmware_into_buf\(_nofile\)\?\([(][)]\|[ ][0-9]\)' tools/testing/selftests/firmware/fw_filesystem.sh
+    accept '[\t]echo[ ]-n[ ]["]Test[ ]request_partial_firmware_into_buf[(][)]' tools/testing/selftests/firmware/fw_filesystem.sh
+    blobname 'amdgpu[/]green_sardine_vcn\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+    blobname 'amdgpu[/]green_sardine_dmcub\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_dm.c
+    blobname 'cadence[/]mhdp8546\.bin' drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h
+    blobname 'i915[/]rkl_dmc_ver2_02\.bin' drivers/gpu/drm/i915/display/intel_csr.c
+    blobname 'i915[/]tgl_dmc_ver2_08\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname 'mrvl[/]prestera[/]mvsw_prestera_fw-v%u\.%u\.img' drivers/net/ethernet/marvell/prestera/prestera_pci.c
+    # The firmware file name is supplied by the user.
+    accept '[\t]err[ ]=[ ]request_firmware_direct[(][&]fw[,][ ]params->file_name' drivers/net/ethernet/huawei/hinic/hinic_devlink.c
+    accept '[\t]err[ ]=[ ]request_firmware[(][&]fw[,][ ]params->file_name[,][ ]dev[)]' drivers/net/ethernet/intel/ice/ice_devlink.c
+    accept '[\t]err[ ]=[ ]request_firmware_direct[(][&]fw[,][ ]params->file_name' drivers/net/ethernet/mellanox/mlx5/core/devlink.c
+    accept '[\t]err[ ]=[ ]request_firmware[(][&]fw[,][ ]fw_name[,][ ]ionic->dev[)]' drivers/net/ethernet/pensando/ionic/ionic_fw.c
+    accept '[\t]err[ ]=[ ]request_firmware_direct[(][&]firmware[,][ ]params->file_name' drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+    blobname 'intel[/]ibt-%u-%u-%u\.sfi' drivers/bluetooth/hci_intel.c
+    blobname '[^ ]*[:][/][/][^ ]*linux-can[/]can-firmware' drivers/net/can/softing/Kconfig
+    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][  ][ ][ ]http[^\n]*[/]linux-can[/][\n][^-]*firmware[ ]version[^\n]*' drivers/net/can/softing/Kconfig
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ca0113_mmio_init_\(address\|data\)_ae5\[\][ ]=' sound/pci/hda/patch_ca0132.c
+    blobname 'qcom[/]LENOVO[/]81F1[/]qcdsp\(1v\)\?28998.mbn' arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
+    blobname 'qcom[/]sdm845[/]a630_zap\.mbn' arch/arm64/boot/dts/qcom/'sdm845-\(db845c\|mtp\|xiaomi-beryllium\)\.dts'
+    blobname 'qcom[/]LENOVO[/]81JL[/]qc\([ac]dsp\|dsp\(1v\)\?2\)850\.mbn' arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
+    blobname 'qcom[/]LENOVO[/]81JL[/]qcdxkmsuc850\.mbn' 'Documentation/devicetree/bindings/display/msm/gpu.txt\|arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts'
+    blobname 'qcom[/]sm8250[/]\([ac]dsp\|slpi\).mbn' arch/arm64/boot/dts/qcom/sm8250-mtp.dts
+
     ;;
 
   */*freedo*.patch | */*logo*.patch)
@@ -5915,6 +6115,7 @@ set_except () {
   # We leave out the initial and final letters of request_firmware so
   # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
   blobna 'equest_firmwar'
+  blobna 'equest_partial_firmwar'
   blobna 'equest_ihex_firmwar'
   blobna 'irmware_reques' # catch _nowarn; also caches _cache, but that's ok.
   # Catch request_firmare misdeblobbed by the above.
@@ -5925,10 +6126,10 @@ set_except () {
   blobna 'DEFAULT_FIRMWARE'
   blobna '\([.]\|->\)firmware[         \n]*=[^=]'
   blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(\(fw\|bin\)[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\|dlmem\|cld\|tftf\|out\|nffw\|mdt\|mfa2\?\|ri\|tplg\|itb\|cyacd\)[\\]\?["]'
+  blobname '[.]\(\(fw\|bin\)[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\|dlmem\|cld\|tftf\|out\|nffw\|mdt\|mfa2\?\|ri\|tplg\|itb\|cyacd\|mbn\|tlv\|sfi\)[\\]\?["]'
   # WIP ends with [\\]\?[][}{)(><,;:.!?% \t\n"`\'"'"']'
   # Catch misdeblobbed fw extension.
-  blobname '["][^" \t\n]*[/][*][(]DEBLOBBED[)][*][/][^"\\]'
+  blobname '["]\([^" \t\n/]*[/][/]*\)*[*][(]DEBLOBBED[)][*][/][^"\\]'
   # Ideally we'd whitelist URLs that don't recommend non-Free
   # Software, but there are just too many URLs in Linux, and most are
   # fine, so we just blacklist when we find undesirable URLs.
@@ -5975,7 +6176,7 @@ asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
 
 # Regular expression that matches a braced initializer containing at
 # least one blob.
-initblob="[^\\n=]*=\\([        \\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([        \\n\\\\]*\\|$comment\\)[;]\\?"
+initblob="[^\\n=]*=\\([        \\n\\\\]\\|$comment\\)*[{]\\([^;/]\\|[/][^/*]\\|$comment\\)*$blobseq\\([^;/]\\|[/][^/*]\\|$comment\\)*[}]\\?\\([        \\n\\\\]*\\|$comment\\)[;]\\?"
 
 # Regular expression that matches a C (possibly multi-line) #define
 # that contains a blob.
@@ -5983,7 +6184,7 @@ defineblob='[     ]*#[    ]*define[       ][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\
 
 # Regular expression that matches an assembly label followed by a blob
 # without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/   ]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
+asmblob="[a-zA-Z_.][^\\n:;#/   ]*:\\([^:{}/]\\|[/][^/*]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
 
 # Set up the sed script that will go through the (processed) input,
 # looking for sequences of blobs and printing whatever was requested.
@@ -7402,6 +7603,7 @@ BAD regular expression:
     cat >> $tarwrap <<EOF
 #! /bin/sh
 echo='$echo' &&
+if test "$DEBUG_VERBOSE_TARX_DEBLOB_CHECK" = yes; then \$echo "\$1" >&2; fi &&
 \$echo ";/*begin \$1*/;" &&
 cat &&
 echo &&