The following changes since commit 569dbb88e80deb68974ef6fdd6a13edb9d686261:
Linux 4.13 (2017-09-03 13:56:17 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/firmware_removal-4.14-rc1
for you to fetch changes up to 5620a0d1aacd554ebebcff373e31107bb1ef7769:
firmware: delete in-kernel firmware (2017-09-14 14:49:41 -0700)
----------------------------------------------------------------
Firmware removal patch for 4.14-rc1
Many many years ago (at the kernel summit in Boston), we all came to the
agreement that the firmware/ tree should be dropped from the kernel, and
everyone use the linux-firmware package instead. For some minor reason,
David Woodhouse didn't send the pull request at that point in time, and
everyone forgot about this.
The topic came up in the hallway track at the Plumbers conference this
week, so here's a single patch that drops the whole firmware tree. The
last firmware update was back in 2013, and all distros have been using
linux-firmware instead since at least that year, if not before. The
only commits to that directory since 2013 was some kbuild fixups for
various build tool issues.
So lets finally drop this, we don't need to lug them around in the
kernel source tree anymore, especially as no one wants or uses them.
This has passed build testing with 0-day, I don't think it made it into
linux-next this week, but I figured it was good to get in before
4.14-rc1 was out.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
----------------------------------------------------------------
Greg Kroah-Hartman (1):
firmware: delete in-kernel firmware
Makefile | 16 +-
firmware/.gitignore | 6 -
firmware/3com/typhoon.bin.ihex | 2819 -----
firmware/Makefile | 238 -
firmware/README.AddingFirmware | 45 -
firmware/WHENCE | 854 --
firmware/acenic/tg1.bin.ihex | 4573 --------
firmware/acenic/tg2.bin.ihex | 4844 --------
firmware/adaptec/starfire_rx.bin.ihex | 53 -
firmware/adaptec/starfire_tx.bin.ihex | 53 -
firmware/advansys/3550.bin.ihex | 317 -
firmware/advansys/38C0800.bin.ihex | 336 -
firmware/advansys/38C1600.bin.ihex | 398 -
firmware/advansys/mcode.bin.ihex | 147 -
firmware/atmsar11.HEX | 204 -
firmware/av7110/Boot.S | 109 -
firmware/av7110/bootcode.bin.ihex | 15 -
firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex | 5818 ----------
firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex | 6512 -----------
firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex | 366 -
firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex | 392 -
firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex | 425 -
firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex | 9484 ----------------
firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex | 13192 ----------------------
firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex | 15473 --------------------------
firmware/cis/.gitignore | 1 -
firmware/cis/3CCFEM556.cis.ihex | 13 -
firmware/cis/3CXEM556.cis.ihex | 13 -
firmware/cis/COMpad2.cis.ihex | 11 -
firmware/cis/COMpad4.cis.ihex | 9 -
firmware/cis/DP83903.cis.ihex | 14 -
firmware/cis/LA-PCM.cis.ihex | 20 -
firmware/cis/MT5634ZLX.cis.ihex | 11 -
firmware/cis/NE2K.cis.ihex | 8 -
firmware/cis/PCMLM28.cis.ihex | 18 -
firmware/cis/PE-200.cis.ihex | 9 -
firmware/cis/PE520.cis.ihex | 9 -
firmware/cis/RS-COM-2P.cis.ihex | 10 -
firmware/cis/SW_555_SER.cis.ihex | 12 -
firmware/cis/SW_7xx_SER.cis.ihex | 13 -
firmware/cis/SW_8xx_SER.cis.ihex | 13 -
firmware/cis/tamarack.cis.ihex | 10 -
firmware/cpia2/stv0672_vp4.bin.ihex | 73 -
firmware/cxgb3/ael2005_opt_edc.bin.ihex | 69 -
firmware/cxgb3/ael2005_twx_edc.bin.ihex | 93 -
firmware/cxgb3/ael2020_twx_edc.bin.ihex | 100 -
firmware/cxgb3/t3b_psram-1.1.0.bin.ihex | 162 -
firmware/cxgb3/t3c_psram-1.1.0.bin.ihex | 162 -
firmware/dsp56k/bootstrap.asm | 98 -
firmware/dsp56k/bootstrap.bin.ihex | 26 -
firmware/e100/d101m_ucode.bin.ihex | 38 -
firmware/e100/d101s_ucode.bin.ihex | 38 -
firmware/e100/d102e_ucode.bin.ihex | 38 -
firmware/edgeport/boot.H16 | 29 -
firmware/edgeport/boot2.H16 | 28 -
firmware/edgeport/down.H16 | 29 -
firmware/edgeport/down2.H16 | 29 -
firmware/edgeport/down3.bin.ihex | 815 --
firmware/emi26/bitstream.HEX | 4391 --------
firmware/emi26/firmware.HEX | 1261 ---
firmware/emi26/loader.HEX | 116 -
firmware/emi62/bitstream.HEX | 6107 ----------
firmware/emi62/loader.HEX | 107 -
firmware/emi62/midi.HEX | 1266 ---
firmware/emi62/spdif.HEX | 1257 ---
firmware/ess/maestro3_assp_kernel.fw.ihex | 120 -
firmware/ess/maestro3_assp_minisrc.fw.ihex | 51 -
firmware/ihex2fw.c | 281 -
firmware/kaweth/new_code.bin.ihex | 206 -
firmware/kaweth/new_code_fix.bin.ihex | 40 -
firmware/kaweth/trigger_code.bin.ihex | 13 -
firmware/kaweth/trigger_code_fix.bin.ihex | 3 -
firmware/keyspan/mpr.HEX | 104 -
firmware/keyspan/usa18x.HEX | 141 -
firmware/keyspan/usa19.HEX | 101 -
firmware/keyspan/usa19qi.HEX | 101 -
firmware/keyspan/usa19qw.HEX | 142 -
firmware/keyspan/usa19w.HEX | 141 -
firmware/keyspan/usa28.HEX | 148 -
firmware/keyspan/usa28x.HEX | 141 -
firmware/keyspan/usa28xa.HEX | 141 -
firmware/keyspan/usa28xb.HEX | 142 -
firmware/keyspan/usa49w.HEX | 145 -
firmware/keyspan/usa49wlc.HEX | 153 -
firmware/keyspan_pda/keyspan_pda.HEX | 83 -
firmware/keyspan_pda/keyspan_pda.S | 1124 --
firmware/keyspan_pda/xircom_pgs.HEX | 87 -
firmware/keyspan_pda/xircom_pgs.S | 1192 --
firmware/korg/k1212.dsp.ihex | 987 --
firmware/matrox/g200_warp.H16 | 28 -
firmware/matrox/g400_warp.H16 | 44 -
firmware/mts_cdma.fw.ihex | 867 --
firmware/mts_edge.fw.ihex | 881 --
firmware/mts_gsm.fw.ihex | 867 --
firmware/myricom/lanai.bin.ihex | 4771 --------
firmware/ositech/Xilinx7OD.bin.ihex | 177 -
firmware/qlogic/1040.bin.ihex | 2111 ----
firmware/qlogic/12160.bin.ihex | 1771 ---
firmware/qlogic/1280.bin.ihex | 2008 ----
firmware/qlogic/isp1000.bin.ihex | 1158 --
firmware/qlogic/sd7220.fw.ihex | 513 -
firmware/r128/r128_cce.bin.ihex | 129 -
firmware/radeon/R100_cp.bin.ihex | 130 -
firmware/radeon/R200_cp.bin.ihex | 130 -
firmware/radeon/R300_cp.bin.ihex | 130 -
firmware/radeon/R420_cp.bin.ihex | 130 -
firmware/radeon/R520_cp.bin.ihex | 130 -
firmware/radeon/R600_me.bin.ihex | 1345 ---
firmware/radeon/R600_pfp.bin.ihex | 145 -
firmware/radeon/RS600_cp.bin.ihex | 130 -
firmware/radeon/RS690_cp.bin.ihex | 130 -
firmware/radeon/RS780_me.bin.ihex | 1345 ---
firmware/radeon/RS780_pfp.bin.ihex | 145 -
firmware/radeon/RV610_me.bin.ihex | 1345 ---
firmware/radeon/RV610_pfp.bin.ihex | 145 -
firmware/radeon/RV620_me.bin.ihex | 1345 ---
firmware/radeon/RV620_pfp.bin.ihex | 145 -
firmware/radeon/RV630_me.bin.ihex | 1345 ---
firmware/radeon/RV630_pfp.bin.ihex | 145 -
firmware/radeon/RV635_me.bin.ihex | 1345 ---
firmware/radeon/RV635_pfp.bin.ihex | 145 -
firmware/radeon/RV670_me.bin.ihex | 1345 ---
firmware/radeon/RV670_pfp.bin.ihex | 145 -
firmware/radeon/RV710_me.bin.ihex | 341 -
firmware/radeon/RV710_pfp.bin.ihex | 213 -
firmware/radeon/RV730_me.bin.ihex | 341 -
firmware/radeon/RV730_pfp.bin.ihex | 213 -
firmware/radeon/RV770_me.bin.ihex | 341 -
firmware/radeon/RV770_pfp.bin.ihex | 213 -
firmware/sb16/alaw_main.csp.ihex | 87 -
firmware/sb16/ima_adpcm_capture.csp.ihex | 121 -
firmware/sb16/ima_adpcm_init.csp.ihex | 70 -
firmware/sb16/ima_adpcm_playback.csp.ihex | 122 -
firmware/sb16/mulaw_main.csp.ihex | 84 -
firmware/sun/cassini.bin.ihex | 143 -
firmware/tehuti/bdx.bin.ihex | 2678 -----
firmware/ti_3410.fw.ihex | 862 --
firmware/ti_5052.fw.ihex | 862 --
firmware/tigon/tg3.bin.ihex | 175 -
firmware/tigon/tg3_tso.bin.ihex | 446 -
firmware/tigon/tg3_tso5.bin.ihex | 252 -
firmware/ttusb-budget/dspbootcode.bin.ihex | 820 --
firmware/vicam/firmware.H16 | 7 -
firmware/whiteheat.HEX | 1097 --
firmware/whiteheat_loader.HEX | 314 -
firmware/whiteheat_loader_debug.HEX | 403 -
firmware/yam/1200.bin.ihex | 342 -
firmware/yam/9600.bin.ihex | 342 -
firmware/yamaha/ds1_ctrl.fw.ihex | 769 --
firmware/yamaha/ds1_dsp.fw.ihex | 9 -
firmware/yamaha/ds1e_ctrl.fw.ihex | 769 --
firmware/yamaha/yss225_registers.bin.ihex | 998 --
scripts/Makefile.fwinst | 70 -
153 files changed, 1 insertion(+), 129170 deletions(-)
delete mode 100644 firmware/.gitignore
delete mode 100644 firmware/3com/typhoon.bin.ihex
delete mode 100644 firmware/Makefile
delete mode 100644 firmware/README.AddingFirmware
delete mode 100644 firmware/WHENCE
delete mode 100644 firmware/acenic/tg1.bin.ihex
delete mode 100644 firmware/acenic/tg2.bin.ihex
delete mode 100644 firmware/adaptec/starfire_rx.bin.ihex
delete mode 100644 firmware/adaptec/starfire_tx.bin.ihex
delete mode 100644 firmware/advansys/3550.bin.ihex
delete mode 100644 firmware/advansys/38C0800.bin.ihex
delete mode 100644 firmware/advansys/38C1600.bin.ihex
delete mode 100644 firmware/advansys/mcode.bin.ihex
delete mode 100644 firmware/atmsar11.HEX
delete mode 100644 firmware/av7110/Boot.S
delete mode 100644 firmware/av7110/bootcode.bin.ihex
delete mode 100644 firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex
delete mode 100644 firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex
delete mode 100644 firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex
delete mode 100644 firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex
delete mode 100644 firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex
delete mode 100644 firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex
delete mode 100644 firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex
delete mode 100644 firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex
delete mode 100644 firmware/cis/.gitignore
delete mode 100644 firmware/cis/3CCFEM556.cis.ihex
delete mode 100644 firmware/cis/3CXEM556.cis.ihex
delete mode 100644 firmware/cis/COMpad2.cis.ihex
delete mode 100644 firmware/cis/COMpad4.cis.ihex
delete mode 100644 firmware/cis/DP83903.cis.ihex
delete mode 100644 firmware/cis/LA-PCM.cis.ihex
delete mode 100644 firmware/cis/MT5634ZLX.cis.ihex
delete mode 100644 firmware/cis/NE2K.cis.ihex
delete mode 100644 firmware/cis/PCMLM28.cis.ihex
delete mode 100644 firmware/cis/PE-200.cis.ihex
delete mode 100644 firmware/cis/PE520.cis.ihex
delete mode 100644 firmware/cis/RS-COM-2P.cis.ihex
delete mode 100644 firmware/cis/SW_555_SER.cis.ihex
delete mode 100644 firmware/cis/SW_7xx_SER.cis.ihex
delete mode 100644 firmware/cis/SW_8xx_SER.cis.ihex
delete mode 100644 firmware/cis/tamarack.cis.ihex
delete mode 100644 firmware/cpia2/stv0672_vp4.bin.ihex
delete mode 100644 firmware/cxgb3/ael2005_opt_edc.bin.ihex
delete mode 100644 firmware/cxgb3/ael2005_twx_edc.bin.ihex
delete mode 100644 firmware/cxgb3/ael2020_twx_edc.bin.ihex
delete mode 100644 firmware/cxgb3/t3b_psram-1.1.0.bin.ihex
delete mode 100644 firmware/cxgb3/t3c_psram-1.1.0.bin.ihex
delete mode 100644 firmware/dsp56k/bootstrap.asm
delete mode 100644 firmware/dsp56k/bootstrap.bin.ihex
delete mode 100644 firmware/e100/d101m_ucode.bin.ihex
delete mode 100644 firmware/e100/d101s_ucode.bin.ihex
delete mode 100644 firmware/e100/d102e_ucode.bin.ihex
delete mode 100644 firmware/edgeport/boot.H16
delete mode 100644 firmware/edgeport/boot2.H16
delete mode 100644 firmware/edgeport/down.H16
delete mode 100644 firmware/edgeport/down2.H16
delete mode 100644 firmware/edgeport/down3.bin.ihex
delete mode 100644 firmware/emi26/bitstream.HEX
delete mode 100644 firmware/emi26/firmware.HEX
delete mode 100644 firmware/emi26/loader.HEX
delete mode 100644 firmware/emi62/bitstream.HEX
delete mode 100644 firmware/emi62/loader.HEX
delete mode 100644 firmware/emi62/midi.HEX
delete mode 100644 firmware/emi62/spdif.HEX
delete mode 100644 firmware/ess/maestro3_assp_kernel.fw.ihex
delete mode 100644 firmware/ess/maestro3_assp_minisrc.fw.ihex
delete mode 100644 firmware/ihex2fw.c
delete mode 100644 firmware/kaweth/new_code.bin.ihex
delete mode 100644 firmware/kaweth/new_code_fix.bin.ihex
delete mode 100644 firmware/kaweth/trigger_code.bin.ihex
delete mode 100644 firmware/kaweth/trigger_code_fix.bin.ihex
delete mode 100644 firmware/keyspan/mpr.HEX
delete mode 100644 firmware/keyspan/usa18x.HEX
delete mode 100644 firmware/keyspan/usa19.HEX
delete mode 100644 firmware/keyspan/usa19qi.HEX
delete mode 100644 firmware/keyspan/usa19qw.HEX
delete mode 100644 firmware/keyspan/usa19w.HEX
delete mode 100644 firmware/keyspan/usa28.HEX
delete mode 100644 firmware/keyspan/usa28x.HEX
delete mode 100644 firmware/keyspan/usa28xa.HEX
delete mode 100644 firmware/keyspan/usa28xb.HEX
delete mode 100644 firmware/keyspan/usa49w.HEX
delete mode 100644 firmware/keyspan/usa49wlc.HEX
delete mode 100644 firmware/keyspan_pda/keyspan_pda.HEX
delete mode 100644 firmware/keyspan_pda/keyspan_pda.S
delete mode 100644 firmware/keyspan_pda/xircom_pgs.HEX
delete mode 100644 firmware/keyspan_pda/xircom_pgs.S
delete mode 100644 firmware/korg/k1212.dsp.ihex
delete mode 100644 firmware/matrox/g200_warp.H16
delete mode 100644 firmware/matrox/g400_warp.H16
delete mode 100644 firmware/mts_cdma.fw.ihex
delete mode 100644 firmware/mts_edge.fw.ihex
delete mode 100644 firmware/mts_gsm.fw.ihex
delete mode 100644 firmware/myricom/lanai.bin.ihex
delete mode 100644 firmware/ositech/Xilinx7OD.bin.ihex
delete mode 100644 firmware/qlogic/1040.bin.ihex
delete mode 100644 firmware/qlogic/12160.bin.ihex
delete mode 100644 firmware/qlogic/1280.bin.ihex
delete mode 100644 firmware/qlogic/isp1000.bin.ihex
delete mode 100644 firmware/qlogic/sd7220.fw.ihex
delete mode 100644 firmware/r128/r128_cce.bin.ihex
delete mode 100644 firmware/radeon/R100_cp.bin.ihex
delete mode 100644 firmware/radeon/R200_cp.bin.ihex
delete mode 100644 firmware/radeon/R300_cp.bin.ihex
delete mode 100644 firmware/radeon/R420_cp.bin.ihex
delete mode 100644 firmware/radeon/R520_cp.bin.ihex
delete mode 100644 firmware/radeon/R600_me.bin.ihex
delete mode 100644 firmware/radeon/R600_pfp.bin.ihex
delete mode 100644 firmware/radeon/RS600_cp.bin.ihex
delete mode 100644 firmware/radeon/RS690_cp.bin.ihex
delete mode 100644 firmware/radeon/RS780_me.bin.ihex
delete mode 100644 firmware/radeon/RS780_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV610_me.bin.ihex
delete mode 100644 firmware/radeon/RV610_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV620_me.bin.ihex
delete mode 100644 firmware/radeon/RV620_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV630_me.bin.ihex
delete mode 100644 firmware/radeon/RV630_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV635_me.bin.ihex
delete mode 100644 firmware/radeon/RV635_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV670_me.bin.ihex
delete mode 100644 firmware/radeon/RV670_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV710_me.bin.ihex
delete mode 100644 firmware/radeon/RV710_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV730_me.bin.ihex
delete mode 100644 firmware/radeon/RV730_pfp.bin.ihex
delete mode 100644 firmware/radeon/RV770_me.bin.ihex
delete mode 100644 firmware/radeon/RV770_pfp.bin.ihex
delete mode 100644 firmware/sb16/alaw_main.csp.ihex
delete mode 100644 firmware/sb16/ima_adpcm_capture.csp.ihex
delete mode 100644 firmware/sb16/ima_adpcm_init.csp.ihex
delete mode 100644 firmware/sb16/ima_adpcm_playback.csp.ihex
delete mode 100644 firmware/sb16/mulaw_main.csp.ihex
delete mode 100644 firmware/sun/cassini.bin.ihex
delete mode 100644 firmware/tehuti/bdx.bin.ihex
delete mode 100644 firmware/ti_3410.fw.ihex
delete mode 100644 firmware/ti_5052.fw.ihex
delete mode 100644 firmware/tigon/tg3.bin.ihex
delete mode 100644 firmware/tigon/tg3_tso.bin.ihex
delete mode 100644 firmware/tigon/tg3_tso5.bin.ihex
delete mode 100644 firmware/ttusb-budget/dspbootcode.bin.ihex
delete mode 100644 firmware/vicam/firmware.H16
delete mode 100644 firmware/whiteheat.HEX
delete mode 100644 firmware/whiteheat_loader.HEX
delete mode 100644 firmware/whiteheat_loader_debug.HEX
delete mode 100644 firmware/yam/1200.bin.ihex
delete mode 100644 firmware/yam/9600.bin.ihex
delete mode 100644 firmware/yamaha/ds1_ctrl.fw.ihex
delete mode 100644 firmware/yamaha/ds1_dsp.fw.ihex
delete mode 100644 firmware/yamaha/ds1e_ctrl.fw.ihex
delete mode 100644 firmware/yamaha/yss225_registers.bin.ihex
delete mode 100644 scripts/Makefile.fwinst
On 2017.09.15 at 11:56 -0700, Greg KH wrote:
> The following changes since commit 569dbb88e80deb68974ef6fdd6a13edb9d686261:
>
> Linux 4.13 (2017-09-03 13:56:17 -0700)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/firmware_removal-4.14-rc1
>
> for you to fetch changes up to 5620a0d1aacd554ebebcff373e31107bb1ef7769:
>
> firmware: delete in-kernel firmware (2017-09-14 14:49:41 -0700)
>
> ----------------------------------------------------------------
> Firmware removal patch for 4.14-rc1
>
> Many many years ago (at the kernel summit in Boston), we all came to the
> agreement that the firmware/ tree should be dropped from the kernel, and
> everyone use the linux-firmware package instead. For some minor reason,
> David Woodhouse didn't send the pull request at that point in time, and
> everyone forgot about this.
>
> The topic came up in the hallway track at the Plumbers conference this
> week, so here's a single patch that drops the whole firmware tree. The
> last firmware update was back in 2013, and all distros have been using
> linux-firmware instead since at least that year, if not before. The
> only commits to that directory since 2013 was some kbuild fixups for
> various build tool issues.
>
> So lets finally drop this, we don't need to lug them around in the
> kernel source tree anymore, especially as no one wants or uses them.
Well, it is one thing to drop the redundant binary blobs. But is another
to break perfectly fine setups that worked for years, e.g.:
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE="amd-ucode/microcode_amd.bin radeon/R600_rlc.bin"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
Please restore the support for built-in firmware.
Thanks.
--
Markus
On 2017.09.16 at 06:51 +0200, Markus Trippelsdorf wrote:
> On 2017.09.15 at 11:56 -0700, Greg KH wrote:
> > The following changes since commit 569dbb88e80deb68974ef6fdd6a13edb9d686261:
> >
> > Linux 4.13 (2017-09-03 13:56:17 -0700)
> >
> > are available in the git repository at:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/firmware_removal-4.14-rc1
> >
> > for you to fetch changes up to 5620a0d1aacd554ebebcff373e31107bb1ef7769:
> >
> > firmware: delete in-kernel firmware (2017-09-14 14:49:41 -0700)
> >
> > ----------------------------------------------------------------
> > Firmware removal patch for 4.14-rc1
> >
> > Many many years ago (at the kernel summit in Boston), we all came to the
> > agreement that the firmware/ tree should be dropped from the kernel, and
> > everyone use the linux-firmware package instead. For some minor reason,
> > David Woodhouse didn't send the pull request at that point in time, and
> > everyone forgot about this.
> >
> > The topic came up in the hallway track at the Plumbers conference this
> > week, so here's a single patch that drops the whole firmware tree. The
> > last firmware update was back in 2013, and all distros have been using
> > linux-firmware instead since at least that year, if not before. The
> > only commits to that directory since 2013 was some kbuild fixups for
> > various build tool issues.
> >
> > So lets finally drop this, we don't need to lug them around in the
> > kernel source tree anymore, especially as no one wants or uses them.
>
> Well, it is one thing to drop the redundant binary blobs. But is another
> to break perfectly fine setups that worked for years, e.g.:
>
> CONFIG_FW_LOADER=y
> CONFIG_FIRMWARE_IN_KERNEL=y
> CONFIG_EXTRA_FIRMWARE="amd-ucode/microcode_amd.bin radeon/R600_rlc.bin"
> CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
>
> Please restore the support for built-in firmware.
The following patch seems to work for me.
Makefile | 2 +-
drivers/base/Kconfig | 5 +----
firmware/.gitignore | 6 +++++
firmware/Makefile | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 71 insertions(+), 5 deletions(-)
create mode 100644 firmware/.gitignore
create mode 100644 firmware/Makefile
diff --git a/Makefile b/Makefile
index 7e2ca4971a39..9f86816c41fd 100644
--- a/Makefile
+++ b/Makefile
@@ -562,7 +562,7 @@ scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \
# Objects we will link into vmlinux / subdirs we need to visit
init-y := init/
-drivers-y := drivers/ sound/
+drivers-y := drivers/ sound/ firmware/
net-y := net/
libs-y := lib/
core-y := usr/
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index f046d21de57d..1a5f6a157a57 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -140,13 +140,10 @@ config EXTRA_FIRMWARE
config EXTRA_FIRMWARE_DIR
string "Firmware blobs root directory"
depends on EXTRA_FIRMWARE != ""
- default "firmware"
+ default "/lib/firmware"
help
This option controls the directory in which the kernel build system
looks for the firmware files listed in the EXTRA_FIRMWARE option.
- The default is firmware/ in the kernel source tree, but by changing
- this option you can point it elsewhere, such as /lib/firmware/ or
- some other directory containing the firmware files.
config FW_LOADER_USER_HELPER
bool
diff --git a/firmware/.gitignore b/firmware/.gitignore
new file mode 100644
index 000000000000..d9c69017bc9a
--- /dev/null
+++ b/firmware/.gitignore
@@ -0,0 +1,6 @@
+*.gen.S
+*.fw
+*.bin
+*.csp
+*.dsp
+ihex2fw
diff --git a/firmware/Makefile b/firmware/Makefile
new file mode 100644
index 000000000000..fa0808853883
--- /dev/null
+++ b/firmware/Makefile
@@ -0,0 +1,63 @@
+#
+# kbuild file for firmware/
+#
+
+# Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
+# leading /, it's relative to $(srctree).
+fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR))
+fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
+
+fw-external-y := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE))
+
+quiet_cmd_fwbin = MK_FW $@
+ cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \
+ FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst \
+ firmware/%.gen.S,%,$@))))"; \
+ ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long); \
+ ASM_ALIGN=$(if $(CONFIG_64BIT),3,2); \
+ PROGBITS=$(if $(CONFIG_ARM),%,@)progbits; \
+ echo "/* Generated by firmware/Makefile */" > $@;\
+ echo " .section .rodata" >>$@;\
+ echo " .p2align $${ASM_ALIGN}" >>$@;\
+ echo "_fw_$${FWSTR}_bin:" >>$@;\
+ echo " .incbin \"$(2)\"" >>$@;\
+ echo "_fw_end:" >>$@;\
+ echo " .section .rodata.str,\"aMS\",$${PROGBITS},1" >>$@;\
+ echo " .p2align $${ASM_ALIGN}" >>$@;\
+ echo "_fw_$${FWSTR}_name:" >>$@;\
+ echo " .string \"$$FWNAME\"" >>$@;\
+ echo " .section .builtin_fw,\"a\",$${PROGBITS}" >>$@;\
+ echo " .p2align $${ASM_ALIGN}" >>$@;\
+ echo " $${ASM_WORD} _fw_$${FWSTR}_name" >>$@;\
+ echo " $${ASM_WORD} _fw_$${FWSTR}_bin" >>$@;\
+ echo " $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin" >>$@;
+
+# One of these files will change, or come into existence, whenever
+# the configuration changes between 32-bit and 64-bit. The .S files
+# need to change when that happens.
+wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
+ include/config/ppc32.h include/config/ppc64.h \
+ include/config/superh32.h include/config/superh64.h \
+ include/config/x86_32.h include/config/x86_64.h \
+ firmware/Makefile)
+
+$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
+ include/config/extra/firmware/dir.h
+ $(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
+
+# The .o files depend on the binaries directly; the .S files don't.
+$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
+
+obj-y += $(patsubst %,%.gen.o, $(fw-external-y))
+
+ifeq ($(KBUILD_SRC),)
+# Makefile.build only creates subdirectories for O= builds, but external
+# firmware might live outside the kernel source tree
+_dummy := $(foreach d,$(addprefix $(obj)/,$(dir $(fw-external-y))), $(shell [ -d $(d) ] || mkdir -p $(d)))
+endif
+
+targets := $(patsubst $(obj)/%,%, \
+ $(shell find $(obj) -name \*.gen.S 2>/dev/null))
+# Without this, built-in.o won't be created when it's empty, and the
+# final vmlinux link will fail.
+obj- := dummy
--
Markus
On Sat, Sep 16, 2017 at 08:25:03AM +0200, Markus Trippelsdorf wrote:
> On 2017.09.16 at 06:51 +0200, Markus Trippelsdorf wrote:
> > On 2017.09.15 at 11:56 -0700, Greg KH wrote:
> > > The following changes since commit 569dbb88e80deb68974ef6fdd6a13edb9d686261:
> > >
> > > Linux 4.13 (2017-09-03 13:56:17 -0700)
> > >
> > > are available in the git repository at:
> > >
> > > git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/firmware_removal-4.14-rc1
> > >
> > > for you to fetch changes up to 5620a0d1aacd554ebebcff373e31107bb1ef7769:
> > >
> > > firmware: delete in-kernel firmware (2017-09-14 14:49:41 -0700)
> > >
> > > ----------------------------------------------------------------
> > > Firmware removal patch for 4.14-rc1
> > >
> > > Many many years ago (at the kernel summit in Boston), we all came to the
> > > agreement that the firmware/ tree should be dropped from the kernel, and
> > > everyone use the linux-firmware package instead. For some minor reason,
> > > David Woodhouse didn't send the pull request at that point in time, and
> > > everyone forgot about this.
> > >
> > > The topic came up in the hallway track at the Plumbers conference this
> > > week, so here's a single patch that drops the whole firmware tree. The
> > > last firmware update was back in 2013, and all distros have been using
> > > linux-firmware instead since at least that year, if not before. The
> > > only commits to that directory since 2013 was some kbuild fixups for
> > > various build tool issues.
> > >
> > > So lets finally drop this, we don't need to lug them around in the
> > > kernel source tree anymore, especially as no one wants or uses them.
> >
> > Well, it is one thing to drop the redundant binary blobs. But is another
> > to break perfectly fine setups that worked for years, e.g.:
> >
> > CONFIG_FW_LOADER=y
> > CONFIG_FIRMWARE_IN_KERNEL=y
> > CONFIG_EXTRA_FIRMWARE="amd-ucode/microcode_amd.bin radeon/R600_rlc.bin"
> > CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
> >
> > Please restore the support for built-in firmware.
How did that break anything? You are still using external firmware,
right?
> The following patch seems to work for me.
>
> Makefile | 2 +-
> drivers/base/Kconfig | 5 +----
> firmware/.gitignore | 6 +++++
> firmware/Makefile | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 71 insertions(+), 5 deletions(-)
> create mode 100644 firmware/.gitignore
> create mode 100644 firmware/Makefile
That just adds an empty Makefile that doesn't actually build anything
into the kernel. What error is this fixing? I did a bunch of build
tests with the patch that I submitted, and nothing failed.
confused,
greg k-h
On 2017.09.16 at 09:55 -0700, Greg KH wrote:
> On Sat, Sep 16, 2017 at 08:25:03AM +0200, Markus Trippelsdorf wrote:
> > On 2017.09.16 at 06:51 +0200, Markus Trippelsdorf wrote:
> > > On 2017.09.15 at 11:56 -0700, Greg KH wrote:
> > > > The following changes since commit 569dbb88e80deb68974ef6fdd6a13edb9d686261:
> > > >
> > > > Linux 4.13 (2017-09-03 13:56:17 -0700)
> > > >
> > > > are available in the git repository at:
> > > >
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/firmware_removal-4.14-rc1
> > > >
> > > > for you to fetch changes up to 5620a0d1aacd554ebebcff373e31107bb1ef7769:
> > > >
> > > > firmware: delete in-kernel firmware (2017-09-14 14:49:41 -0700)
> > > >
> > > > ----------------------------------------------------------------
> > > > Firmware removal patch for 4.14-rc1
> > > >
> > > > Many many years ago (at the kernel summit in Boston), we all came to the
> > > > agreement that the firmware/ tree should be dropped from the kernel, and
> > > > everyone use the linux-firmware package instead. For some minor reason,
> > > > David Woodhouse didn't send the pull request at that point in time, and
> > > > everyone forgot about this.
> > > >
> > > > The topic came up in the hallway track at the Plumbers conference this
> > > > week, so here's a single patch that drops the whole firmware tree. The
> > > > last firmware update was back in 2013, and all distros have been using
> > > > linux-firmware instead since at least that year, if not before. The
> > > > only commits to that directory since 2013 was some kbuild fixups for
> > > > various build tool issues.
> > > >
> > > > So lets finally drop this, we don't need to lug them around in the
> > > > kernel source tree anymore, especially as no one wants or uses them.
> > >
> > > Well, it is one thing to drop the redundant binary blobs. But is another
> > > to break perfectly fine setups that worked for years, e.g.:
> > >
> > > CONFIG_FW_LOADER=y
> > > CONFIG_FIRMWARE_IN_KERNEL=y
> > > CONFIG_EXTRA_FIRMWARE="amd-ucode/microcode_amd.bin radeon/R600_rlc.bin"
> > > CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
> > >
> > > Please restore the support for built-in firmware.
>
> How did that break anything? You are still using external firmware,
> right?
>
> That just adds an empty Makefile that doesn't actually build anything
> into the kernel. What error is this fixing? I did a bunch of build
> tests with the patch that I submitted, and nothing failed.
The external firmware has to be packaged before it can be included into
the kernel. And this is what the Makefile in firmware/ does. It
generates a *.gen.S for every firmware file in the CONFIG_EXTRA_FIRMWARE
list. For example:
markus@x4 linux % cat firmware/amd-ucode/microcode_amd.bin.gen.S
/* Generated by firmware/Makefile */
.section .rodata
.p2align 3
_fw_amd_ucode_microcode_amd_bin_bin:
.incbin "/lib/firmware/amd-ucode/microcode_amd.bin"
_fw_end:
.section .rodata.str,"aMS",@progbits,1
.p2align 3
_fw_amd_ucode_microcode_amd_bin_name:
.string "amd-ucode/microcode_amd.bin"
.section .builtin_fw,"a",@progbits
.p2align 3
.quad _fw_amd_ucode_microcode_amd_bin_name
.quad _fw_amd_ucode_microcode_amd_bin_bin
.quad _fw_end - _fw_amd_ucode_microcode_amd_bin_bin
This is then used to assemble *.bin.gen.o object files and finally
firmware/built-in.o, that includes all firmware blobs.
Without the firmware/Makefile nothing gets build and therefore no
firmware gets included into the kernel. This may lead for example to a
failure to start X11, because the firmware for the graphic card doesn't
get loaded.
--
Markus
On September 16, 2017 10:20:51 AM PDT, Markus Trippelsdorf <[email protected]> wrote:
>On 2017.09.16 at 09:55 -0700, Greg KH wrote:
>> On Sat, Sep 16, 2017 at 08:25:03AM +0200, Markus Trippelsdorf wrote:
>> > On 2017.09.16 at 06:51 +0200, Markus Trippelsdorf wrote:
>> > > On 2017.09.15 at 11:56 -0700, Greg KH wrote:
>> > > > The following changes since commit
>569dbb88e80deb68974ef6fdd6a13edb9d686261:
>> > > >
>> > > > Linux 4.13 (2017-09-03 13:56:17 -0700)
>> > > >
>> > > > are available in the git repository at:
>> > > >
>> > > >
>git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/
>tags/firmware_removal-4.14-rc1
>> > > >
>> > > > for you to fetch changes up to
>5620a0d1aacd554ebebcff373e31107bb1ef7769:
>> > > >
>> > > > firmware: delete in-kernel firmware (2017-09-14 14:49:41
>-0700)
>> > > >
>> > > >
>----------------------------------------------------------------
>> > > > Firmware removal patch for 4.14-rc1
>> > > >
>> > > > Many many years ago (at the kernel summit in Boston), we all
>came to the
>> > > > agreement that the firmware/ tree should be dropped from the
>kernel, and
>> > > > everyone use the linux-firmware package instead. For some
>minor reason,
>> > > > David Woodhouse didn't send the pull request at that point in
>time, and
>> > > > everyone forgot about this.
>> > > >
>> > > > The topic came up in the hallway track at the Plumbers
>conference this
>> > > > week, so here's a single patch that drops the whole firmware
>tree. The
>> > > > last firmware update was back in 2013, and all distros have
>been using
>> > > > linux-firmware instead since at least that year, if not before.
> The
>> > > > only commits to that directory since 2013 was some kbuild
>fixups for
>> > > > various build tool issues.
>> > > >
>> > > > So lets finally drop this, we don't need to lug them around in
>the
>> > > > kernel source tree anymore, especially as no one wants or uses
>them.
>> > >
>> > > Well, it is one thing to drop the redundant binary blobs. But is
>another
>> > > to break perfectly fine setups that worked for years, e.g.:
>> > >
>> > > CONFIG_FW_LOADER=y
>> > > CONFIG_FIRMWARE_IN_KERNEL=y
>> > > CONFIG_EXTRA_FIRMWARE="amd-ucode/microcode_amd.bin
>radeon/R600_rlc.bin"
>> > > CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
>> > >
>> > > Please restore the support for built-in firmware.
>>
>> How did that break anything? You are still using external firmware,
>> right?
>>
>> That just adds an empty Makefile that doesn't actually build anything
>> into the kernel. What error is this fixing? I did a bunch of build
>> tests with the patch that I submitted, and nothing failed.
>
>The external firmware has to be packaged before it can be included into
>the kernel. And this is what the Makefile in firmware/ does. It
>generates a *.gen.S for every firmware file in the
>CONFIG_EXTRA_FIRMWARE
>list. For example:
>
>markus@x4 linux % cat firmware/amd-ucode/microcode_amd.bin.gen.S
>/* Generated by firmware/Makefile */
> .section .rodata
> .p2align 3
>_fw_amd_ucode_microcode_amd_bin_bin:
> .incbin "/lib/firmware/amd-ucode/microcode_amd.bin"
>_fw_end:
> .section .rodata.str,"aMS",@progbits,1
> .p2align 3
>_fw_amd_ucode_microcode_amd_bin_name:
> .string "amd-ucode/microcode_amd.bin"
> .section .builtin_fw,"a",@progbits
> .p2align 3
> .quad _fw_amd_ucode_microcode_amd_bin_name
> .quad _fw_amd_ucode_microcode_amd_bin_bin
> .quad _fw_end - _fw_amd_ucode_microcode_amd_bin_bin
>
>This is then used to assemble *.bin.gen.o object files and finally
>firmware/built-in.o, that includes all firmware blobs.
>
>Without the firmware/Makefile nothing gets build and therefore no
>firmware gets included into the kernel. This may lead for example to a
>failure to start X11, because the firmware for the graphic card doesn't
>get loaded.
Ah doh, you are so right, sorry about that. I'm getting onto a flight right now but will send this on to Linus when I land in the morning.
thanks,
greg k-h
On Sat, Sep 16, 2017 at 10:53 AM, Greg K-H <[email protected]> wrote:
>
> Ah doh, you are so right, sorry about that. I'm getting onto a flight right now but will send this on to Linus when I land in the morning.
I'll take it directly, I'm planning on closing the merge window today anyway.
Linus