On Fri, Sep 17, 2021 at 11:22:16AM -0700, Luis R. Rodriguez wrote: > From: Luis Chamberlain <mcgrof@xxxxxxxxxx> > > 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 <bp@xxxxxxx> > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> > --- > .../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 n n is always the default, no need to list it again. > + depends on FW_LOADER=y I don't see what this gets us to add another config option. Are you making things easier later on? Anyway, I took the first 3 patches here, please fix this up and rebase and resend. thanks, greg k-h