From 91b08bb00fb9b7e1de223709f4564b8fcedc711b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 2 Jul 2019 13:01:23 +0200 Subject: [PATCH] boot,shared: share the definitions of EFI_LOADER_FEATURE macros This means the the code needs to be kept compatible in the shared header, but I think that still nicer than having two places to declare the same things. I added src/boot to -I, so that efi/foo.h needs to be used. This reduces the potential for accidentally including the wrong header. --- meson.build | 1 + src/boot/efi/boot.c | 11 ++++++----- src/boot/efi/loader-features.h | 13 +++++++++++++ src/shared/efivars.h | 7 +------ 4 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 src/boot/efi/loader-features.h diff --git a/meson.build b/meson.build index 3a936947bb..4d40451fa6 100644 --- a/meson.build +++ b/meson.build @@ -1368,6 +1368,7 @@ config_h = configure_file( meson_apply_m4 = find_program('tools/meson-apply-m4.sh') includes = include_directories('src/basic', + 'src/boot', 'src/shared', 'src/systemd', 'src/journal', diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 57c423bfb6..f542f45ca0 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -9,6 +9,7 @@ #include "disk.h" #include "graphics.h" #include "linux.h" +#include "loader-features.h" #include "measure.h" #include "pe.h" #include "shim.h" @@ -2277,11 +2278,11 @@ static VOID config_write_entries_to_variable(Config *config) { EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { static const UINT64 loader_features = - (1ULL << 0) | /* I honour the LoaderConfigTimeout variable */ - (1ULL << 1) | /* I honour the LoaderConfigTimeoutOneShot variable */ - (1ULL << 2) | /* I honour the LoaderEntryDefault variable */ - (1ULL << 3) | /* I honour the LoaderEntryOneShot variable */ - (1ULL << 4) | /* I support boot counting */ + EFI_LOADER_FEATURE_CONFIG_TIMEOUT | + EFI_LOADER_FEATURE_CONFIG_TIMEOUT_ONE_SHOT | + EFI_LOADER_FEATURE_ENTRY_DEFAULT | + EFI_LOADER_FEATURE_ENTRY_ONESHOT | + EFI_LOADER_FEATURE_BOOT_COUNTING | 0; _cleanup_freepool_ CHAR16 *infostr = NULL, *typestr = NULL; diff --git a/src/boot/efi/loader-features.h b/src/boot/efi/loader-features.h new file mode 100644 index 0000000000..40095e28ec --- /dev/null +++ b/src/boot/efi/loader-features.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +#pragma once + +#ifndef UINT64_C +# define UINT64_C(c) (c ## ULL) +#endif + +#define EFI_LOADER_FEATURE_CONFIG_TIMEOUT (UINT64_C(1) << 0) +#define EFI_LOADER_FEATURE_CONFIG_TIMEOUT_ONE_SHOT (UINT64_C(1) << 1) +#define EFI_LOADER_FEATURE_ENTRY_DEFAULT (UINT64_C(1) << 2) +#define EFI_LOADER_FEATURE_ENTRY_ONESHOT (UINT64_C(1) << 3) +#define EFI_LOADER_FEATURE_BOOT_COUNTING (UINT64_C(1) << 4) +#define EFI_LOADER_FEATURE_XBOOTLDR (UINT64_C(1) << 5) diff --git a/src/shared/efivars.h b/src/shared/efivars.h index 1346da9323..fad129794d 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -10,6 +10,7 @@ #include "sd-id128.h" +#include "efi/loader-features.h" #include "time-util.h" #define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) @@ -18,12 +19,6 @@ #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002 #define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004 -#define EFI_LOADER_FEATURE_CONFIG_TIMEOUT (UINT64_C(1) << 0) -#define EFI_LOADER_FEATURE_CONFIG_TIMEOUT_ONE_SHOT (UINT64_C(1) << 1) -#define EFI_LOADER_FEATURE_ENTRY_DEFAULT (UINT64_C(1) << 2) -#define EFI_LOADER_FEATURE_ENTRY_ONESHOT (UINT64_C(1) << 3) -#define EFI_LOADER_FEATURE_BOOT_COUNTING (UINT64_C(1) << 4) - #if ENABLE_EFI bool is_efi_boot(void);