revert the previous changes, to reinstall them as a single commit
[releases.git] / deblob-check
index dc3aa3941bcbe1948f47c3b6fb5bee7e13d0adf4..946a4195882f9de20eec1afc9a849ca9e5e76034 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# deblob-check version 2016-03-03
+# deblob-check version 2016-12-24
 # Inspired in gNewSense's find-firmware script.
 # Written by Alexandre Oliva <lxoliva@fsfla.org>
 
 #    --reverse-patch: Test the removed parts of a patch, rather than
 #              the added ones.
 
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#              work.  This is the default option, if GNU awk is found.
-#              The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#              work.  This is the default option, if GNU awk is not
-#              found.
+#    --use-python: Choose the internal python script for the bulk of
+#              the work.  This is the fastest for cleaning up,
+#              because of the fast startup time of the regular
+#              expression engine.  This option is the default if
+#              python is found.  Set PYTHON to override the python
+#              interpreter.  The internal script works in both Python
+#              2 and 3.
 
-#    --use-python: Choose the internal python script.  This is not
-#              recommended, because the regular expressions we use
-#              invoke exponential behavior in the python engine.
+#    --use-awk: Choose the internal GNU awk script for the bulk of the
+#              work.  This is the recommended option to check entire
+#              tarballs, because its regular expression engine offers
+#              the best speed/memory use.  This is the default option
+#              if python is not found.  Set AWK to specify GNU awk's
+#              name.
 
 #    --use-perl: Choose the internal perl script.  This is not
 #              recommended, because our regular expressions exceed
-#              some limits hard-coded into perl.
+#              some limits hard-coded into perl.  Set PERL to specify
+#              which perl implementation to use.  This is the default
+#              option if neither python nor GNU awk are found, AND if
+#              PERL is set.
+
+#    --use-sed: Choose the internal GNU sed script for the bulk of the
+#              work.  This is the default option, if no other
+#              alternative is found.  Use SED to specify which sed
+#              program to use.
 
 #    --save-script-input: Save the input that would have been fed to
 #              any of the engines above.
 
 #    --gen-flex: Generate a flex input file with all known blob and
-#              false positive patterns.  It would have been a fast
+#              false positive patterns.  It might have been a fast
 #              regular expression processor if only the flex program
 #              completed in reasonable time.
 
@@ -893,7 +904,7 @@ 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\)[\\]\?["]'
+  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\)[\\]\?["]'
   # Catch misdeblobbed fw extension.
   blobname '["][^" \t\n]*[/][*][(]DEBLOBBED[)][*][/][^"\\]'
   # Ideally we'd whitelist URLs that don't recommend non-Free
@@ -3694,7 +3705,7 @@ set_except () {
     accept '[  ]err[ ]=[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
     defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_\(phy\|radio\)_rev\([34568]\|7_9\|11\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
     defsnc 'static[ ]const[ ]u32[ ]b43_ntab_noisevar_r3\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'iwlwifi-8000-' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname 'iwlwifi-8000C\?-' drivers/net/wireless/intel/iwlwifi/iwl-8000.c
     blobname 'iwl_nvm_8000\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
     defsnc 'static[ ]const[ ]u8[ ]iwl_nvm_channels_family_8000\[\][ ]=' drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
     defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
@@ -3937,7 +3948,7 @@ set_except () {
     accept '[\t]ret[ ]=[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
     accept 'static[ ]int[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firwmare.c
     accept '[\t][\t]retval[ ]=[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firmware.c
-    accept '[\t][\t]wl1271_error[(]["]request_firmware_nowait[ ]failed' drivers/net/wireless/ti/wlcore/main.c
+    accept '[\t][\t]*wl1271_error[(]["]request_firmware_nowait[ ]failed' drivers/net/wireless/ti/wlcore/main.c
     accept '[\t][\t]nfc_err[(][&]drv->pdev->dev[,][ ]["]request_firmware[ ]failed' drivers/nfc/nfcwilink.c
     accept '[\t][\t][\t]["]request_firmware[ ]returned' drivers/nfc/nfcwilink.c
     accept '[\t][\t]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
@@ -4031,7 +4042,7 @@ set_except () {
     blobname 'firmware-4\.bin' drivers/net/wireless/ath/ath10k/hw.h
     blobname 'brcm[/]brcmfmac43340-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
     blobname 'iwlwifi-7260-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname 'iwlwifi-8000' drivers/net/wireless/intel/iwlwifi/iwl-8000.c
     blobname 'iwl_nvm_8000B\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
     blobname 'mrvl[/]sd8801_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
     blobname 'mrvl[/]usb8801_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
@@ -4378,14 +4389,203 @@ set_except () {
     blobname 'goodix_\(%d\|[0-9]*\)_cfg\.bin' drivers/input/touchscreen/goodix.c
     blobname 'adf7242_firmware\.bin' drivers/net/ieee802154/adf7242.c
     blobna '[/][*][ ]get[ ]ADF7242[ ]addon[^*]*\([*]\+[^/*][^*]*\)*[*][*]*[/]' drivers/net/ieee802154/adf7242.c
-    blobname 'iwlwifi-9000-\?' drivers/net/wireless/intel/iwlwifi/iwl-9000.c
     blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/soc/qcom/wcnss_ctrl.c
     blobname 'r8a779x_usb3_v[12]\.dlmem' drivers/usb/host/xhci-rcar.h
     blobname 'moxa[/]moxa-\(%04x\|11[135][01]\|[0-9a-f]*\)\.fw' drivers/usb/serial/mxu11x0.c
     blobname 'intel[/]dsp_fw_release\.bin' sound/soc/intel/skylake/skl.c
     accept '[\t]rc[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ \t]*NULL[,][ ]trigger_async_request_cb[)][;]' lib/test_firmware.c
     blobname 'nvidia[/]gk\(100\|20a\)[/]\(\(fecs\|gpccs\)_\(data\|inst\)\|sw_\(\(bundle\|method\)_init\|\(\|non\)ctx\)\)\.bin' drivers/gpu/drm/nouveau/nouveau_platform.c
-    ;;
+
+    # New in 4.6.
+    blobname 'atmel[/]wilc100[23]_firmware\.bin' drivers/staging/wilc1000/Makefile
+    accept '[\t]*dev->firmware[ ]=[ ]1[;]' drivers/media/platform/coda/coda-common.c
+    blobname 'vpu_fw_imx\(27_TO2\|53\|6[qd]\)\.bin' drivers/media/platform/coda/coda-common.c
+    blobname 'brcmfmac4366c-pcie\.bin' drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg8val[ ]rtl8723b_mac_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg32val[ ]rtl8723b_phy_1t_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg32val[ ]rtl8xxx_agc_8723bu_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_rfregval[ ]rtl8723bu_radioa_1t_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    blobname 'rtlwifi[/]rtl8723bu_\(bt\|nic\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    blobname 'rtlwifi[/]rtl8192eu_nic\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    blobname 'intel[/]dsp_fw_bxtn\.bin' sound/soc/intel/skylake/skl.c
+    accept 'CONFIG_EXTRA_FIRMWARE=["][/][*][(]DEBLOBBED' Documentation/x86/early-microcode.txt
+    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
+    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
+    defsnc 'static[ ]const[ ]struct[ ]afe440x_val_table[ ]afe4403_cap_table\[\][ ]=' drivers/iio/health/afe4403.c
+    defsnc 'static[ ]const[ ]u16[ ]sunxi_nfc_randomizer_\(page\|ecc\(512\|1024\)\)_seeds\[\][ ]=' drivers/mtd/nand/sunxi_nand.c
+    defsnc 'static[ ]const[ ]struct[ ]iro[ ]iro_arr\[44\][ ]=' drivers/net/ethernet/qlogic/qed/qed_hsi.h
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p1_modes_no_xpa_low_power_tx_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    defsnc '[\t]write_reg[(]par[,][ ]MIPI_DCS_WRITE_LUT[,]' drivers/staging/fbtft/fb_hx8353d.c
+    defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]rk3\(\(2[28]\|36\)8\|399\)_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c
+    accept 'echo[ ]["]new-kernel-pkg[ ]--remove[ ][$]KERNELRELEASE[ ]--rminitrd[ ]--initrdfile=[/]boot[/]initramfs-[$]KERNELRELEASE\.img["]' scripts/package/mkspec
+    defsnc '[}][ ]ni_div\[\][ ]=' sound/soc/codecs/max9867.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]max9867_reg\[\][ ]=' sound/soc/codecs/max9867.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]rt5514_i2c_patch\[\][ ]=' sound/soc/codecs/rt5514.c
+    defsnc '__thread[ ]vector[ ]int[ ]varray\[\][ ]=' 'tools/testing/selftests/poewrpc/math/vmx_\(preempt\|signal\)\.c'
+    defsnc 'vector[ ]int[ ]varray\[\][ ]=' tools/testing/selftests/poewrpc/math/vmx_syscall.c
+    blobname '%x-%\.6s-%\.8s-%d%s[^;]*-tplg\.bin' sound/soc/intel/skylake/skl-nhlt.c
+    blobname 'intel[/]ibt-hw-%x\.%x\.bddata' drivers/bluetooth/hci_ag6xx.c
+    blobname 'intel[/]ibt-hw-%x\.%x\.%x-fw-%x\.%x\.%x\.%x\.%x\.pbn' drivers/bluetooth/hci_ag6xx.c
+    blobname 'melfas_mip4\.fw' drivers/input/touchscreen/melfas_mip4.c
+    blobname 'iwlwifi-8000C-' drivers/net/wireless/intel/iwlwifi/iwl-8000.c
+
+    # New in 4.7
+    blobname 'amdgpu[/]polaris1[01]_smc\(_sk\)\?\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+    blobname 'amdgpu[/]polaris1[01]_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'amdgpu[/]polaris1[01]_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+    blobname 'amdgpu[/]polaris1[01]_\(ce\|pfp\|me\|mec\|mec2\|rlc\)\.bin' drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+    blobname 'amdgpu[/]polaris1[01]_mc\.bin' drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+    blobname 'amdgpu[/]polaris1[01]_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v_0.c
+    blobname 'i915[/]skl_guc_ver6\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    accept '[\t]ar->normal_mode_fw\.fw_file\.firmware[ ]=[ ]NULL' drivers/net/wireless/ath/ath10k/core.c
+    blobname 'pre-cal-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
+    accept '[\t]fw_file->firmware[ ]=[ ]ath10k_fetch_fw_file' drivers/net/wireless/ath/ath10k/core.c
+    blobname 'brcmfmac4356-sdio\.bin' drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+    blobname 'iwlwifi-9000\(-pu-a0-\(jf\|lc\)-a0-\|-\|\)' drivers/net/wireless/intel/iwlwifi/iwl-9000.c
+    blobname 'iwlwifi-9260-th-a0-\(jf\|lc\)-a0-' drivers/net/wireless/intel/iwlwifi/iwl-9000.c
+    blobname 'mrvl[/]pcie8897_uapsta_a0\.bin' drivers/net/wireless/marvell/mwifiex/pcie.h
+    blobname 'mrvl[/]pcieuart8997_combo\(_v2\)\?\.bin' drivers/net/wireless/marvell/mwifiex/pcie.h
+    blobname 'mrvl[/]pcieusb8997_combo\(_v2\)\?\.bin' drivers/net/wireless/marvell/mwifiex/pcie.h
+    defsnc 'struct[ ]rtl8xxxu_reg8val[ ]rtl8xxxu_gen1_mac_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+    blobname '%s%pUL%s["][,][\n \t]*["]intel[/]dsp_fw_["][,][ ]uuid_mod[,][ ]["]\.bin' sound/soc/intel/skylake/skl-sst.c
+    accept 'pm8994:[\n\t ,lvs0-9]*' Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt
+    defsnc '[\t]brightness-levels[ ]=[ ]<[0-9 \t\n]*>[;]' 'arch/arm/boot/dts/rk288-veyron-\(jaq\|minnie\).dts'
+    defsc 'static[ ]const[ ]struct[ ]i2s_pll_cfg[ ]i2s_pll_cfg_2[78]m\[\][ ]=' drivers/clk/axs10x/i2s_pll_clock.c
+    defsnc 'static[ ]const[ ]u8[ ]const_tab\[1024\][ ]__aligned[(]1024[)][ ]=' drivers/crypto/qat/qat_common/adf_admin.c
+    defsnc 'static[ ]const[ ]uint32_t[ ]fiji_clock_stretcher_ddt_table\[2\]\[4\]\[4\][ ]=' drivers/gpu/drm/amd/powerplay/hwmgr/fiji_hwmgr.c
+    defsnc 'static[ ]const[ ]uint32_t[ ]polaris10_clock_stretcher_ddt_table\[2\]\[4\]\[4\][ ]=' drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c
+    defsc 'static[ ]const[ ]struct[ ]polaris10_pt_defaults[ ]polaris10_power_tune_data_set_array\[POWERTUNE_DEFAULT_SET_MAX\][ ]=' drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_powertune.c
+    defsnc 'static[ ]const[ ]uint32_t[ ]PP_ClockStretcherDDTTable\[2\]\[4\]\[4\][ ]=' drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c
+    defsc 'static[ ]const[ ]struct[ ]SMU73_Discrete_GraphicsLevel[ ]avfs_graphics_level\[8\][ ]=' drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
+    defsc 'static[ ]const[ ]SMU74_Discrete_GraphicsLevel[ ]avfs_graphics_level_polaris10\[8\][ ]=' drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
+    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_5433_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
+    defsnc 'static[ ]const[ ]struct[ ]dsi_phy_range[ ]dphy_range_info\[\][ ]=' drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
+    defsnc 'static[ ]const[ ]struct[ ]bmi160_odr[ ]bmi160_accel_odr\[\][ ]=' drivers/iio/imu/bmi160/bmi160_core.c
+    defsnc 'reg_initval\[QM1D1C0042_NUM_REG_ROWS\]\[QM1D1C0042_NUM_REGS\][ ]=' drivers/media/tuners/qm1d1c0042.c
+    accept '[\t ]*[*][ ]*24[ ]*16[ ]*8[ ]*0[\n][\t ]*[*][ ]\([ ][0-7]\)*' drivers/net/ethernet/intel/fm10k/fm10k_pf.c
+    accept '[\t]ar->testmode\.utf_mode_fw\.fw_file\.firmware[ ]=[ ]NULL' drivers/net/wireless/ath/ath10k/testmode.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg8val[ ]rtl8192e_mac_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+    defsc 'static[ ]struct[ ]rtl8xxxu_reg32val[ ]rtl8192eu_phy_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg32val[ ]rtl8xxx_agc_8192eu_\(std\|highpa\)_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+    defsc 'static[ ]struct[ ]rtl8xxxu_rfregval[ ]rtl8192eu_radio[ab]_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]byt_score_pins_map\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/intel/pinctrl-baytrail.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]byt_sus_pins_map\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/intel/pinctrl-baytrail.c
+    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]byVT3253InitTab_RFMD\[CB_VT3253_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]byVT3253B0_RFMD\[CB_VT3253B0_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    accept '[\t]*wilc->firmware[ ]=' drivers/staging/wilc1000/linux_wlan.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]max98371_reg\[\][ ]=' sound/soc/codecs/max98371.c
+    blobname 'rtlwifi[/]rtl8192cufw_\(TMSC\|[AB]\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192c.c
+    blobname 'rtlwifi[/]rtl8192eu_nic\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+    blobname 'rtlwifi[/]rtl8723aufw_\([AB]\|B_NoBT\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723a.c
+    blobname 'rtlwifi[/]rtl8723bu_\(bt\|nic\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
+    blobname 'nvidia[/]tegra\(124\|210\)[/]xusb\.bin' drivers/usb/host/xhci-tegra.c
+    accept '[\t]*ath10k_info[(]ar[,][ ]["][/][*][(]DEBLOBBED[)][*][/][ ]didn.t' drivers/net/wireless/ath/ath10k/testmode.c
+    accept 'static[ ]const[ ]struct[ ]tegra_xusb_soc[ ]tegra\(124\|210\)_soc[ ]=[ ][{][\n][\t][.]firmware[ ]=' drivers/usb/host/xhci-tegra.c
+    blobname 'i915[/]kbl_dmc_ver1\.bin' drivers/gpu/drm/i915/intel_csr.c
+
+    # New in 4.8.
+    blobname 'intel[/]dsp_fw_kbl\.bin' sound/soc/intel/skylake/skl.c
+    blobname 'brcmfmac4365c-pcie\.bin' drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+    blobname 'radeon[/]\(%s\|tahiti\|pitcairn\|verde\|oland\|hainan\)_\(pfp\|me\|ce\|mc\|rlc\|smc\|k_smc\)\.bin' drivers/gpu/drm/radeon/si.c
+    blobname 'radeon[/]\(%s\|bonaire\|hawaii\|kaveri\|kabini\|mullins\)_\(pfp\|me\|ce\|mec\|mec2\|mc\|rlc\|sdma\|smc\|k_smc\)\.bin' 'drivers/gpu/drm/radeon/ci\(k\|_dpm\).c'
+    blobname 'i915[/]skl_guc_ver6_1\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    blobname 'i915[/]bxt_guc_ver8_7\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    blobname 'i915[/]kbl_guc_ver9_14\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    blobname 'i915[/]kbl_dmc_ver1_01\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname 'i915[/]skl_dmc_ver1_26\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname 'i915[/]bxt_dmc_ver1_07\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname 'intel[/]ibt-%u-%u\.sfi' drivers/bluetooth/btusb.c
+    accept '[\t]*ranges[ ]=[ ]<[ \t\n0-9xa-f]*>[;]' arch/arm/boot/dts/ep7209.dtsi
+    accept '[\t]*nvidia[,]emc-configuration[ ]=[ ]<[ \t\n0-9xa-f]*>[;]' arch/arm/boot/dts/tegra124-apalis-emc.dtsi
+    accept '[\t]*bool[ ]["]vmlinux\.bin[ ]or[ ]vmlinuz\.bin["]' arch/mips/Kconfig
+    accept 'K256_8:\([\n][     ]*\.octa[       ]*0x[0-9a-f]*\)*' arch/x86/crypto/sha256-mb/sha256_x8_avx2.S
+    accept 'K256:\([\n][       ]*\.int[        ]*0x[0-9a-f,x]*\)*' arch/x86/crypto/sha256-mb/sha256_x8_avx2.S
+    accept 'K512_4:\([\n][     ]*\.octa[       ]*0[x0-9a-f,\\\t\n]*\)*' arch/x86/crypto/sha256-mb/sha256_x8_avx2.S
+    accept '[ ][*][ ]request_firmware_into_buf[ ]-' drivers/base/firmware_class.c
+    accept 'request_firmware_into_buf[(]const[ ]struct[ ]firmware[ ]' drivers/base/firmware_class.c
+    accept 'EXPORT_SYMBOL[(]request_firmware_into_buf[)]' drivers/base/firmware_class.c
+    defsc 'static[ ]const[ ]int[ ]mma8452_hp_filter_cutoff\[4\]\[8\]\[4\]\[2\][ ]=' drivers/iio/accel/mma8452.c
+    defsnc '[\t]static[ ]const[ ]u8[ ]cmd\[7\]\[6\][ ]=' drivers/input/touchscreen/raydium_i2c_ts.c
+    defsnc '[\t]static[ ]const[ ]u8[ ]cmd\[5\]\[11\][ ]=' drivers/input/touchscreen/raydium_i2c_ts.c
+    blobname 'raydium\.fw' drivers/input/touchscreen/raydium_i2c_ts.c
+    blobname '\(silead[/]\)\?%s\.fw' drivers/input/touchscreen/silead.c
+    blobna 'snprintf[(]data->fw_name[,][ ]sizeof[(]data->fw_name[)][,][ \n\t]*["]\(silead[/]\)\?%s["][,][ ]str[)]' drivers/input/touchscreen/silead.c
+    blobname 'vpu_[pd]\.bin' drivers/media/platform/mtk-vpu/mtk_vpu.c
+    accept '[\t]if[ ][(]dir_type[ ]!=[ ]BNX_DIR_TYPE_UPDATE[ ][&][&][\n\t ]*bnxt_dir_type_is_executable[^\n]*[\n][\t]*return[ ]-EINVAL[;][\n][\n]*[\t]rc[ ]=[ ]request_firmware[(][&]' drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+    defsnc 'static[ ]const[ ]struct[ ]iro[ ]iro_arr\[46\][ ]=' drivers/net/ethernet/qlogic/qed/qed_hsi.h
+    blobname 'iwlwifi-Qu-a0-jf-b0-' drivers/net/wireless/intel/iwlwifi/iwl-a000.c
+    blobname 'ks7010sd\.rom' drivers/staging/ks7010/ks7010_sdio.h
+    defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_160MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/intel/iwlwifi/mvm/rs.c
+    defsnc 'static[ ]const[ ]int[ ]adinter_muxvals\[\][ ]=' drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
+    accept '\(static[ ]inline[ ]\)\?int[ ]request_firmware_into_buf[(]const[ ]struct[ ]firmware[ ]' include/linux/firmware.h
+    accept 'static[ ]inline[ ]int[ ]mod_firmware_load[(]const[ ]char[ ][*]fn[,]' sound/oss/sound_firmware.h
+    defsnc 'static[ ]const[ ]struct[ ]pll_macro_entry[ ]pll_predef_mclk\[\][ ]=' sound/soc/bcm/cygnus-ssp.c
+    defsnc 'static[ ]const[ ]struct[ ]_ssp_clk_coeff[ ]ssp_clk_coeff\[\][ ]=' sound/soc/bcm/cygnus-ssp.c
+    defsnc 'static[ ]const[ ]struct[ ]cs35l33_mclk_div[ ]cs35l33_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs35l33.c
+    defsnc 'static[ ]struct[ ]reg_default[ ]max98504_reg_defaults\[\][ ]=' sound/soc/codecs/max98504.c
+    blobname 'rt5514_dsp_fw[12]\.bin' sound/soc/codecs/rt5514.h
+    blobname 'modem\.mdt' drivers/remoteproc/qcom_q6v5_pil.c
+    blobname 'mba\.b00' drivers/remoteproc/qcom_q6v5_pil.c
+
+    # New in 4.9.
+    blobname 'rtl_bt[/]rtl\(8723b\|8821a\|8761a\|8822b\)_\(config\|fw\)\.bin' drivers/bluetooth/btrtl.c
+    blobname 'amdgpu[/]\(topaz\|tonga\)_k_smc\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+    blobname 'i915[/]["][^"]*["]_guc_ver["][^"]*["]_["][^"]*["]\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    blobname 'mrvl[/]pcie\(uart\|usb\)8997_combo_v4\.bin' drivers/net/wireless/marvell/mwifiex/pcie.h
+    blobname 'mrvl[/]pcie8997_wlan_v4\.bin' drivers/net/wireless/marvell/mwifiex/pcie.h
+    blobname 'mrvl[/]usbusb8997_combo_v4\.bin' drivers/net/wireless/marvell/mwifiex/usb.h
+    accept '[ ]*[/]Widths[ ]\[[0-9 ]*\]' Documentation/media/media_api_files/typical_media_device.pdf
+    accept '[ ]*:widths:[0-9 ]*' Documentation/media/uapi/v4l/subdev-formats.rst
+    defsc 'static[ ]const[ ]struct[ ]iceland_pt_defaults[ ]defaults_iceland\(xt\|pro\)\?[ ]=' drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
+    defsc 'static[ ]const[ ]struct[ ]tonga_pt_defaults[ ]tonga_power_tune_data_set_array\[POWERTUNE_DEFAULT_SET_MAX\][ ]=' drivers/gpu/drm/amd/poewrplay/smumgr/tonga_smc.c
+    defsnc 'static[ ]const[ ]uint32_t[ ]tonga_clock_stretcher_ddt_table\[2\]\[4\]\[4\][ ]=' drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
+    defsnc 'static[ ]const[ ]u16[ ]\(forward\|inverse\)_quantization_table\[QUANTIZATION_TABLE_LEN\][ ]=' drivers/media/pci/tw5864/tw5864-video.c
+    defsnc 'static[ ]const[ ]u16[ ]encoder_vlc_lookup_table\[VLC_LOOKUP_TABLE_LEN\][ ]=' drivers/media/pci/tw5864/tw5864-video.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lambda_lookup_table\|intra4x4_lambda3\)\[\][ ]=' drivers/media/pci/tw5864/tw5864-video.c
+    defsnc 'static[ ]const[ ]struct[ ]iro[ ]iro_arr\[47\][ ]=' drivers/net/ethernet/qlogic/qed/qed_hsi.h
+    defsnc 'static[ ]const[ ]u8[ ]netvsc_hash_key\[\][ ]=' drivers/net/hyperv/rndis_filter.c
+    defsc 'static[ ]const[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5660_reg\[\][ ]=' sound/soc/codecs/rt5660.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt566[38]_reg\[\][ ]=' sound/soc/codecs/rt5663.c
+    defsnc '__thread[ ]vector[ ]int[ ]varray\[24\][ ]=' tools/testing/selftests/powerpc/math/vsx_preempt.c
+    defsnc 'vector[ ]int[ ]vms\[\][ ]=' tools/testing/selftests/powerpc/tm/tm-signal-context-chk-vmx.c
+    defsnc 'vector[ ]int[ ]vss\[\][ ]=' tools/testing/selftests/powerpc/tm/tm-signal-context-chk-vsx.c
+    blobname 'imx[/]sdma[/]sdma-imx7d\.bin' arch/arm/boot/dts/imx7s.dtsi
+    blobname 'gsl3675-gt90h\.fw' arch/arm/boot/dts/sun8i-a23-gt90h-v4.dts
+    blobname 'gsl1680-inet86dz\.fw' arch/arm/boot/dts/sun8i-a23-inet86dz.dts
+    blobname 'gsl1680-polaroid-mid2407pxe03\.fw' arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dts
+    blobname 'gsl3670-polaroid-mid2809pxe04\.fw' arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dts
+    blobname 'gsl3675-ga10h\.fw' arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts
+    blobname 'mrvl[/]helper_uart_3000000\.bin' drivers/bluetooth/hci_mrvl.c
+    blobname 'mrvl[/]uart8897_bt\.bin' drivers/bluetooth/hci_mrvl.c
+    accept 'static[ ]int[ ]bnxt_flash_\(firmware\|package\)_from_file[(][ \t\na-z0-9_,*]*[)][\n][{][\n][\t]\([^\n]*[\n]\+[\t]\)*rc[ ]=[ ]request_firmware[(][&]fw' drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+    accept '[\t]*\(rc[ ]=[ ]\)\?wil_request_firmware[(]wil[,][ ]WIL_FW2\?_NAME[,][ ]\(true\|false\)[)][;]' drivers/net/wireless/ath/wil6210/main.c
+    blobname 'mwifiex_mfg\.bin' drivers/net/wireless/marvell/mwifiex/main.c
+    accept '[\t]*mwifiex_dbg[(]adapter[,][ ]ERROR[,][\n][\t ]*["]request_firmware[ ]error' drivers/net/wireless/marvell/mwifiex/main.c
+    blobname 'ti-connectivity[/]wl12[78]x-nvs\.bin' 'drivers/net/wireless/ti/wlcore/\(sdio\|spi\)\.c'
+    blobname 'ti-connectivity[/]wl18xx-conf\.bin' 'drivers/net/wireless/ti/wlcore/\(sdio\|spi\)\.c'
+    blobname 'ziirave_wdt\.fw' drivers/watchdog/wiirave_wdt.c
+    blobna '["]gmp_["]' drivers/staging/greybus/firmware.h
+    blobna '["]FW_NAME_PREFIX["]["]%08x_%08x_%08x_%08x_%s\.tftf["][\n][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/greybus/firmware.h
+    blobname '\(gmp_\)\?%08x_%08x_%08x_%08x_s2l\.tftf' drivers/staging/greybus/bootrom.c
+    blobname '\(gmp_\)\?%08x_%08x_%08x_%08x_\(%s\|[^"]*\)\.tftf' drivers/staging/greybus/fw-download.c
+    # Long-needed b43 cleanup.  These are actually cleaned up with
+    # custom code in deblob-<kver>.  Only ucode5, b0g0initvals5 and
+    # b0g0bsinitvals5 are provided by openfwwf, and only b43 (not
+    # b43legacy) can use the openfwwf files, so anything else in b43
+    # and b43legacy ought to be cleaned up.
+    accept '[\t]*filename[ ]=[ ]["]\(ucode\|b0g0\(bs\)\?initvals\)5["][;]' drivers/net/wireless/broadcom/b43.c
+    blobna '["]\(ucode\|[^ "\n]*initvals\)[0-9][^" .\n]*["]' 'drivers/net/wireless/broadcom/b43\(legacy\)\?\.c'
+    # We want to be more specific than deblob0-<kver> in the pcm
+    # matches, to avoid numerous false positives in sound pcm drivers.
+    blobna '["]pcm[45]["]' 'drivers/net/wireless/broadcom/b43\(legacy\)\?\.c'
+    blobna '[/][*][ ]What[ ]about[ ][^ \n]*initvals22[?][ ][*][/]' drivers/net/wireless/broadcom/b43.c
+   ;;
 
   */*freedo*.patch | */*logo*.patch)
     accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm