Skip to content

Commit 7205f06

Browse files
ardbiesheuvelbp3tk0v
authored andcommitted
efi/libstub: Add generic support for parsing mem_encrypt=
Parse the mem_encrypt= command line parameter from the EFI stub if CONFIG_ARCH_HAS_MEM_ENCRYPT=y, so that it can be passed to the early boot code by the arch code in the stub. This avoids the need for the core kernel to do any string parsing very early in the boot. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Tested-by: Tom Lendacky <thomas.lendacky@amd.com> Link: https://lore.kernel.org/r/20240227151907.387873-16-ardb+git@google.com
1 parent 8282639 commit 7205f06

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

drivers/firmware/efi/libstub/efi-stub-helper.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ static bool efi_noinitrd;
2424
static bool efi_nosoftreserve;
2525
static bool efi_disable_pci_dma = IS_ENABLED(CONFIG_EFI_DISABLE_PCI_DMA);
2626

27+
int efi_mem_encrypt;
28+
2729
bool __pure __efi_soft_reserve_enabled(void)
2830
{
2931
return !efi_nosoftreserve;
@@ -75,6 +77,12 @@ efi_status_t efi_parse_options(char const *cmdline)
7577
efi_noinitrd = true;
7678
} else if (IS_ENABLED(CONFIG_X86_64) && !strcmp(param, "no5lvl")) {
7779
efi_no5lvl = true;
80+
} else if (IS_ENABLED(CONFIG_ARCH_HAS_MEM_ENCRYPT) &&
81+
!strcmp(param, "mem_encrypt") && val) {
82+
if (parse_option_str(val, "on"))
83+
efi_mem_encrypt = 1;
84+
else if (parse_option_str(val, "off"))
85+
efi_mem_encrypt = -1;
7886
} else if (!strcmp(param, "efi") && val) {
7987
efi_nochunk = parse_option_str(val, "nochunk");
8088
efi_novamap |= parse_option_str(val, "novamap");

drivers/firmware/efi/libstub/efistub.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ extern bool efi_no5lvl;
3737
extern bool efi_nochunk;
3838
extern bool efi_nokaslr;
3939
extern int efi_loglevel;
40+
extern int efi_mem_encrypt;
4041
extern bool efi_novamap;
41-
4242
extern const efi_system_table_t *efi_system_table;
4343

4444
typedef union efi_dxe_services_table efi_dxe_services_table_t;

0 commit comments

Comments
 (0)