linux/drivers/base/firmware_loader
Takashi Iwai 82fd7a8142 firmware: Add support for loading compressed files
This patch adds the support for loading compressed firmware files.
The primary motivation is to reduce the storage size; e.g. currently
the files in /lib/firmware on my machine counts up to 419MB, while
they can be reduced to 130MB by file compression.

The patch introduces a new kconfig option CONFIG_FW_LOADER_COMPRESS.
Even with this option set, the firmware loader still tries to load the
original firmware file as-is at first, but then falls back to the file
with ".xz" extension when it's not found, and the decompressed file
content is returned to the caller of request_firmware().  So, no
change is needed for the rest.

Currently only XZ format is supported.  A caveat is that the kernel XZ
helper code supports only CRC32 (or none) integrity check type, so
you'll have to compress the files via xz -C crc32 option.

Since we can't determine the expanded size immediately from an XZ
file, the patch re-uses the paged buffer that was used for the
user-mode fallback; it puts the decompressed content page, which are
vmapped at the end.  The paged buffer code is conditionally built with
a new Kconfig that is selected automatically.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-18 09:11:22 +02:00
..
builtin drivers: base: firmware_loader: add proper SPDX identifiers on files that did not have them. 2019-04-04 20:03:40 +02:00
fallback_table.c firmware_loader: move CONFIG_FW_LOADER_USER_HELPER switch to Makefile 2019-01-22 10:23:18 +01:00
fallback.c firmware: Factor out the paged buffer handling code 2019-06-18 09:11:21 +02:00
fallback.h firmware: rename fw_sysfs_fallback to firmware_fallback_sysfs() 2018-05-14 16:43:09 +02:00
firmware.h firmware: Add support for loading compressed files 2019-06-18 09:11:22 +02:00
Kconfig firmware: Add support for loading compressed files 2019-06-18 09:11:22 +02:00
main.c firmware: Add support for loading compressed files 2019-06-18 09:11:22 +02:00
Makefile firmware_loader: move firmware/ to drivers/base/firmware_loader/builtin/ 2019-01-22 10:23:18 +01:00