Re: [PATCH 04/14] firmware_loader: add built-in firmware kconfig entry
From: Greg KH <gregkh@linuxfoundation.org>
Date: 2021-10-11 17:46:15
Also in:
linux-fsdevel, lkml
On Mon, Oct 11, 2021 at 10:35:37AM -0700, Luis Chamberlain wrote:
On Tue, Oct 05, 2021 at 04:30:06PM +0200, Greg KH wrote:quoted
On Fri, Sep 17, 2021 at 11:22:16AM -0700, Luis R. Rodriguez wrote:quoted
From: Luis Chamberlain <mcgrof@kernel.org> The built-in firmware is always supported when a user enables FW_LOADER=y today, that is, it is built-in to the kernel. When the firmware loader is built as a module, support for built-in firmware is skipped. This requirement is not really clear to users or even developers. Also, by default the EXTRA_FIRMWARE is always set to an empty string and so by default we really have nothing built-in to that kernel's sections for built-in firmware, so today a all FW_LOADER=y kernels spins their wheels on an empty set of built-in firmware for each firmware request with no true need for it. Add a new kconfig entry to represent built-in firmware support more clearly. This let's knock 3 birds with one stone: o Clarifies that support for built-in firmware requires the firmware loader to be built-in to the kernel o By default we now always skip built-in firmware even if a FW_LOADER=y o This also lets us make it clear that the EXTRA_FIRMWARE_DIR kconfig entry is only used for built-in firmware Reviewed-by: Borislav Petkov <redacted> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> --- .../driver-api/firmware/built-in-fw.rst | 2 ++ Documentation/x86/microcode.rst | 5 ++-- drivers/base/firmware_loader/Kconfig | 25 +++++++++++++------ drivers/base/firmware_loader/Makefile | 3 +-- drivers/base/firmware_loader/main.c | 4 +-- 5 files changed, 26 insertions(+), 13 deletions(-)diff --git a/Documentation/driver-api/firmware/built-in-fw.rst b/Documentation/driver-api/firmware/built-in-fw.rst index bc1c961bace1..9dd2b1df44f0 100644 --- a/Documentation/driver-api/firmware/built-in-fw.rst +++ b/Documentation/driver-api/firmware/built-in-fw.rst@@ -8,6 +8,7 @@ the filesystem. Instead, firmware can be looked for inside the kernel directly. You can enable built-in firmware using the kernel configuration options: + * CONFIG_FW_LOADER_BUILTIN * CONFIG_EXTRA_FIRMWARE * CONFIG_EXTRA_FIRMWARE_DIR@@ -17,6 +18,7 @@ into the kernel with CONFIG_EXTRA_FIRMWARE: * Speed * Firmware is needed for accessing the boot device, and the user doesn't want to stuff the firmware into the boot initramfs. +* Testing built-in firmware Even if you have these needs there are a few reasons why you may not be able to make use of built-in firmware:diff --git a/Documentation/x86/microcode.rst b/Documentation/x86/microcode.rst index a320d37982ed..d199f0b98869 100644 --- a/Documentation/x86/microcode.rst +++ b/Documentation/x86/microcode.rst@@ -114,11 +114,12 @@ Builtin microcode ================= The loader supports also loading of a builtin microcode supplied through -the regular builtin firmware method CONFIG_EXTRA_FIRMWARE. Only 64-bit is -currently supported. +the regular builtin firmware method using CONFIG_FW_LOADER_BUILTIN and +CONFIG_EXTRA_FIRMWARE. Only 64-bit is currently supported. Here's an example:: + CONFIG_FW_LOADER_BUILTIN=y CONFIG_EXTRA_FIRMWARE="intel-ucode/06-3a-09 amd-ucode/microcode_amd_fam15h.bin" CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig index 5b24f3959255..de4fcd9d41f3 100644 --- a/drivers/base/firmware_loader/Kconfig +++ b/drivers/base/firmware_loader/Kconfig@@ -29,8 +29,10 @@ if FW_LOADER config FW_LOADER_PAGED_BUF bool -config EXTRA_FIRMWARE - string "Build named firmware blobs into the kernel binary" +config FW_LOADER_BUILTIN + bool "Enable support for built-in firmware" + default nn is always the default, no need to list it again.Oh, alrighty, I'll remove that line.quoted
quoted
+ depends on FW_LOADER=yI don't see what this gets us to add another config option. Are you making things easier later on?This makes a few things clearer for both developers and users. The code in question is a *feature* *only* when FW_LOADER=y, by adding a new kconfig to represent this and clearly makeing it depend on FW_LOADER=y it let's us: o Clarify that support for built-in firmware requires the firmware loader to be built-in to the kernel
That is good.
o By default we now always skip built-in firmware even if a FW_LOADER=y
I do not understand, why would we ever want to skip built-in firmware?
o This also lets us make it clear that the EXTRA_FIRMWARE_DIR
kconfig entry is only used for built-in firmwareHow was it ever used for anything else? :)
The above is not easily obvious to developers (including myself when I was reviewing this code) or users without this new kconfig entry. Should I re-send by just removing the one line you asked for?
I can not take this as-is, so yes :) thanks, greg k-h