319 lines
11 KiB
Plaintext
319 lines
11 KiB
Plaintext
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
menu "EFI (Extensible Firmware Interface) Support"
|
||
|
depends on EFI
|
||
|
|
||
|
config EFI_ESRT
|
||
|
bool
|
||
|
depends on EFI
|
||
|
default y
|
||
|
|
||
|
config EFI_VARS_PSTORE
|
||
|
tristate "Register efivars backend for pstore"
|
||
|
depends on PSTORE
|
||
|
select UCS2_STRING
|
||
|
default y
|
||
|
help
|
||
|
Say Y here to enable use efivars as a backend to pstore. This
|
||
|
will allow writing console messages, crash dumps, or anything
|
||
|
else supported by pstore to EFI variables.
|
||
|
|
||
|
config EFI_VARS_PSTORE_DEFAULT_DISABLE
|
||
|
bool "Disable using efivars as a pstore backend by default"
|
||
|
depends on EFI_VARS_PSTORE
|
||
|
default n
|
||
|
help
|
||
|
Saying Y here will disable the use of efivars as a storage
|
||
|
backend for pstore by default. This setting can be overridden
|
||
|
using the efivars module's pstore_disable parameter.
|
||
|
|
||
|
config EFI_SOFT_RESERVE
|
||
|
bool "Reserve EFI Specific Purpose Memory"
|
||
|
depends on EFI && EFI_STUB && ACPI_HMAT
|
||
|
default ACPI_HMAT
|
||
|
help
|
||
|
On systems that have mixed performance classes of memory EFI
|
||
|
may indicate specific purpose memory with an attribute (See
|
||
|
EFI_MEMORY_SP in UEFI 2.8). A memory range tagged with this
|
||
|
attribute may have unique performance characteristics compared
|
||
|
to the system's general purpose "System RAM" pool. On the
|
||
|
expectation that such memory has application specific usage,
|
||
|
and its base EFI memory type is "conventional" answer Y to
|
||
|
arrange for the kernel to reserve it as a "Soft Reserved"
|
||
|
resource, and set aside for direct-access (device-dax) by
|
||
|
default. The memory range can later be optionally assigned to
|
||
|
the page allocator by system administrator policy via the
|
||
|
device-dax kmem facility. Say N to have the kernel treat this
|
||
|
memory as "System RAM" by default.
|
||
|
|
||
|
If unsure, say Y.
|
||
|
|
||
|
config EFI_DXE_MEM_ATTRIBUTES
|
||
|
bool "Adjust memory attributes in EFISTUB"
|
||
|
depends on EFI && EFI_STUB && X86
|
||
|
default y
|
||
|
help
|
||
|
UEFI specification does not guarantee all memory to be
|
||
|
accessible for both write and execute as the kernel expects
|
||
|
it to be.
|
||
|
Use DXE services to check and alter memory protection
|
||
|
attributes during boot via EFISTUB to ensure that memory
|
||
|
ranges used by the kernel are writable and executable.
|
||
|
|
||
|
config EFI_PARAMS_FROM_FDT
|
||
|
bool
|
||
|
help
|
||
|
Select this config option from the architecture Kconfig if
|
||
|
the EFI runtime support gets system table address, memory
|
||
|
map address, and other parameters from the device tree.
|
||
|
|
||
|
config EFI_RUNTIME_WRAPPERS
|
||
|
bool
|
||
|
|
||
|
config EFI_GENERIC_STUB
|
||
|
bool
|
||
|
|
||
|
config EFI_ZBOOT
|
||
|
bool "Enable the generic EFI decompressor"
|
||
|
depends on EFI_GENERIC_STUB && !ARM
|
||
|
select HAVE_KERNEL_GZIP
|
||
|
select HAVE_KERNEL_LZ4
|
||
|
select HAVE_KERNEL_LZMA
|
||
|
select HAVE_KERNEL_LZO
|
||
|
select HAVE_KERNEL_XZ
|
||
|
select HAVE_KERNEL_ZSTD
|
||
|
help
|
||
|
Create the bootable image as an EFI application that carries the
|
||
|
actual kernel image in compressed form, and decompresses it into
|
||
|
memory before executing it via LoadImage/StartImage EFI boot service
|
||
|
calls. For compatibility with non-EFI loaders, the payload can be
|
||
|
decompressed and executed by the loader as well, provided that the
|
||
|
loader implements the decompression algorithm and that non-EFI boot
|
||
|
is supported by the encapsulated image. (The compression algorithm
|
||
|
used is described in the zboot image header)
|
||
|
|
||
|
config EFI_ARMSTUB_DTB_LOADER
|
||
|
bool "Enable the DTB loader"
|
||
|
depends on EFI_GENERIC_STUB && !RISCV && !LOONGARCH
|
||
|
default y
|
||
|
help
|
||
|
Select this config option to add support for the dtb= command
|
||
|
line parameter, allowing a device tree blob to be loaded into
|
||
|
memory from the EFI System Partition by the stub.
|
||
|
|
||
|
If the device tree is provided by the platform or by
|
||
|
the bootloader this option may not be needed.
|
||
|
But, for various development reasons and to maintain existing
|
||
|
functionality for bootloaders that do not have such support
|
||
|
this option is necessary.
|
||
|
|
||
|
config EFI_BOOTLOADER_CONTROL
|
||
|
tristate "EFI Bootloader Control"
|
||
|
select UCS2_STRING
|
||
|
default n
|
||
|
help
|
||
|
This module installs a reboot hook, such that if reboot() is
|
||
|
invoked with a string argument NNN, "NNN" is copied to the
|
||
|
"LoaderEntryOneShot" EFI variable, to be read by the
|
||
|
bootloader. If the string matches one of the boot labels
|
||
|
defined in its configuration, the bootloader will boot once
|
||
|
to that label. The "LoaderEntryRebootReason" EFI variable is
|
||
|
set with the reboot reason: "reboot" or "shutdown". The
|
||
|
bootloader reads this reboot reason and takes particular
|
||
|
action according to its policy.
|
||
|
|
||
|
config EFI_CAPSULE_LOADER
|
||
|
tristate "EFI capsule loader"
|
||
|
depends on EFI
|
||
|
help
|
||
|
This option exposes a loader interface "/dev/efi_capsule_loader" for
|
||
|
users to load EFI capsules. This driver requires working runtime
|
||
|
capsule support in the firmware, which many OEMs do not provide.
|
||
|
|
||
|
Most users should say N.
|
||
|
|
||
|
config EFI_CAPSULE_QUIRK_QUARK_CSH
|
||
|
bool "Add support for Quark capsules with non-standard headers"
|
||
|
depends on X86 && !64BIT
|
||
|
select EFI_CAPSULE_LOADER
|
||
|
default y
|
||
|
help
|
||
|
Add support for processing Quark X1000 EFI capsules, whose header
|
||
|
layout deviates from the layout mandated by the UEFI specification.
|
||
|
|
||
|
config EFI_TEST
|
||
|
tristate "EFI Runtime Service Tests Support"
|
||
|
depends on EFI
|
||
|
default n
|
||
|
help
|
||
|
This driver uses the efi.<service> function pointers directly instead
|
||
|
of going through the efivar API, because it is not trying to test the
|
||
|
kernel subsystem, just for testing the UEFI runtime service
|
||
|
interfaces which are provided by the firmware. This driver is used
|
||
|
by the Firmware Test Suite (FWTS) for testing the UEFI runtime
|
||
|
interfaces readiness of the firmware.
|
||
|
Details for FWTS are available from:
|
||
|
<https://wiki.ubuntu.com/FirmwareTestSuite>
|
||
|
|
||
|
Say Y here to enable the runtime services support via /dev/efi_test.
|
||
|
If unsure, say N.
|
||
|
|
||
|
config EFI_DEV_PATH_PARSER
|
||
|
bool
|
||
|
|
||
|
config APPLE_PROPERTIES
|
||
|
bool "Apple Device Properties"
|
||
|
depends on EFI_STUB && X86
|
||
|
select EFI_DEV_PATH_PARSER
|
||
|
select UCS2_STRING
|
||
|
help
|
||
|
Retrieve properties from EFI on Apple Macs and assign them to
|
||
|
devices, allowing for improved support of Apple hardware.
|
||
|
Properties that would otherwise be missing include the
|
||
|
Thunderbolt Device ROM and GPU configuration data.
|
||
|
|
||
|
If unsure, say Y if you have a Mac. Otherwise N.
|
||
|
|
||
|
config RESET_ATTACK_MITIGATION
|
||
|
bool "Reset memory attack mitigation"
|
||
|
depends on EFI_STUB
|
||
|
help
|
||
|
Request that the firmware clear the contents of RAM after a reboot
|
||
|
using the TCG Platform Reset Attack Mitigation specification. This
|
||
|
protects against an attacker forcibly rebooting the system while it
|
||
|
still contains secrets in RAM, booting another OS and extracting the
|
||
|
secrets. This should only be enabled when userland is configured to
|
||
|
clear the MemoryOverwriteRequest flag on clean shutdown after secrets
|
||
|
have been evicted, since otherwise it will trigger even on clean
|
||
|
reboots.
|
||
|
|
||
|
config EFI_RCI2_TABLE
|
||
|
bool "EFI Runtime Configuration Interface Table Version 2 Support"
|
||
|
depends on X86 || COMPILE_TEST
|
||
|
help
|
||
|
Displays the content of the Runtime Configuration Interface
|
||
|
Table version 2 on Dell EMC PowerEdge systems as a binary
|
||
|
attribute 'rci2' under /sys/firmware/efi/tables directory.
|
||
|
|
||
|
RCI2 table contains BIOS HII in XML format and is used to populate
|
||
|
BIOS setup page in Dell EMC OpenManage Server Administrator tool.
|
||
|
The BIOS setup page contains BIOS tokens which can be configured.
|
||
|
|
||
|
Say Y here for Dell EMC PowerEdge systems.
|
||
|
|
||
|
config EFI_DISABLE_PCI_DMA
|
||
|
bool "Clear Busmaster bit on PCI bridges during ExitBootServices()"
|
||
|
help
|
||
|
Disable the busmaster bit in the control register on all PCI bridges
|
||
|
while calling ExitBootServices() and passing control to the runtime
|
||
|
kernel. System firmware may configure the IOMMU to prevent malicious
|
||
|
PCI devices from being able to attack the OS via DMA. However, since
|
||
|
firmware can't guarantee that the OS is IOMMU-aware, it will tear
|
||
|
down IOMMU configuration when ExitBootServices() is called. This
|
||
|
leaves a window between where a hostile device could still cause
|
||
|
damage before Linux configures the IOMMU again.
|
||
|
|
||
|
If you say Y here, the EFI stub will clear the busmaster bit on all
|
||
|
PCI bridges before ExitBootServices() is called. This will prevent
|
||
|
any malicious PCI devices from being able to perform DMA until the
|
||
|
kernel reenables busmastering after configuring the IOMMU.
|
||
|
|
||
|
This option will cause failures with some poorly behaved hardware
|
||
|
and should not be enabled without testing. The kernel commandline
|
||
|
options "efi=disable_early_pci_dma" or "efi=no_disable_early_pci_dma"
|
||
|
may be used to override this option.
|
||
|
|
||
|
config EFI_EARLYCON
|
||
|
def_bool y
|
||
|
depends on SERIAL_EARLYCON && !ARM
|
||
|
select FONT_SUPPORT
|
||
|
select ARCH_USE_MEMREMAP_PROT
|
||
|
|
||
|
config EFI_CUSTOM_SSDT_OVERLAYS
|
||
|
bool "Load custom ACPI SSDT overlay from an EFI variable"
|
||
|
depends on ACPI
|
||
|
default ACPI_TABLE_UPGRADE
|
||
|
help
|
||
|
Allow loading of an ACPI SSDT overlay from an EFI variable specified
|
||
|
by a kernel command line option.
|
||
|
|
||
|
See Documentation/admin-guide/acpi/ssdt-overlays.rst for more
|
||
|
information.
|
||
|
|
||
|
config EFI_DISABLE_RUNTIME
|
||
|
bool "Disable EFI runtime services support by default"
|
||
|
default y if PREEMPT_RT
|
||
|
help
|
||
|
Allow to disable the EFI runtime services support by default. This can
|
||
|
already be achieved by using the efi=noruntime option, but it could be
|
||
|
useful to have this default without any kernel command line parameter.
|
||
|
|
||
|
The EFI runtime services are disabled by default when PREEMPT_RT is
|
||
|
enabled, because measurements have shown that some EFI functions calls
|
||
|
might take too much time to complete, causing large latencies which is
|
||
|
an issue for Real-Time kernels.
|
||
|
|
||
|
This default can be overridden by using the efi=runtime option.
|
||
|
|
||
|
config EFI_COCO_SECRET
|
||
|
bool "EFI Confidential Computing Secret Area Support"
|
||
|
help
|
||
|
Confidential Computing platforms (such as AMD SEV) allow the
|
||
|
Guest Owner to securely inject secrets during guest VM launch.
|
||
|
The secrets are placed in a designated EFI reserved memory area.
|
||
|
|
||
|
In order to use the secrets in the kernel, the location of the secret
|
||
|
area (as published in the EFI config table) must be kept.
|
||
|
|
||
|
If you say Y here, the address of the EFI secret area will be kept
|
||
|
for usage inside the kernel. This will allow the
|
||
|
virt/coco/efi_secret module to access the secrets, which in turn
|
||
|
allows userspace programs to access the injected secrets.
|
||
|
|
||
|
config UNACCEPTED_MEMORY
|
||
|
bool
|
||
|
depends on EFI_STUB
|
||
|
help
|
||
|
Some Virtual Machine platforms, such as Intel TDX, require
|
||
|
some memory to be "accepted" by the guest before it can be used.
|
||
|
This mechanism helps prevent malicious hosts from making changes
|
||
|
to guest memory.
|
||
|
|
||
|
UEFI specification v2.9 introduced EFI_UNACCEPTED_MEMORY memory type.
|
||
|
|
||
|
This option adds support for unaccepted memory and makes such memory
|
||
|
usable by the kernel.
|
||
|
|
||
|
config EFI_EMBEDDED_FIRMWARE
|
||
|
bool
|
||
|
select CRYPTO_LIB_SHA256
|
||
|
|
||
|
endmenu
|
||
|
|
||
|
config UEFI_CPER
|
||
|
bool
|
||
|
|
||
|
config UEFI_CPER_ARM
|
||
|
bool
|
||
|
depends on UEFI_CPER && ( ARM || ARM64 )
|
||
|
default y
|
||
|
|
||
|
config UEFI_CPER_X86
|
||
|
bool
|
||
|
depends on UEFI_CPER && X86
|
||
|
default y
|
||
|
|
||
|
config TEE_STMM_EFI
|
||
|
tristate "TEE-based EFI runtime variable service driver"
|
||
|
depends on EFI && OPTEE
|
||
|
help
|
||
|
Select this config option if TEE is compiled to include StandAloneMM
|
||
|
as a separate secure partition. It has the ability to check and store
|
||
|
EFI variables on an RPMB or any other non-volatile medium used by
|
||
|
StandAloneMM.
|
||
|
|
||
|
Enabling this will change the EFI runtime services from the firmware
|
||
|
provided functions to TEE calls.
|
||
|
|
||
|
To compile this driver as a module, choose M here: the module
|
||
|
will be called tee_stmm_efi.
|