efi_loader: specify UEFI spec revision
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 28 Jun 2018 10:45:27 +0000 (12:45 +0200)
committerAlexander Graf <agraf@suse.de>
Wed, 25 Jul 2018 12:59:44 +0000 (14:59 +0200)
Both in the boot and the runtime services tables we have to specify the
UEFI spec revision. The same value is already used for the system
table. So let's use a common constant.

In the boot services table we have to provide the header signature.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/efi_api.h
lib/efi_loader/efi_boottime.c
lib/efi_loader/efi_runtime.c

index 53798d5..696cb26 100644 (file)
@@ -21,6 +21,9 @@
 #include <asm/setjmp.h>
 #endif
 
+/* UEFI spec version 2.7 */
+#define EFI_SPECIFICATION_VERSION (2 << 16 | 70)
+
 /* Types and defines for EFI CreateEvent */
 enum efi_timer_delay {
        EFI_TIMER_STOP = 0,
@@ -46,6 +49,7 @@ typedef uint16_t *efi_string_t;
 struct efi_event;
 
 /* EFI Boot Services table */
+#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
 struct efi_boot_services {
        struct efi_table_hdr hdr;
        efi_status_t (EFIAPI *raise_tpl)(efi_uintn_t new_tpl);
@@ -186,7 +190,6 @@ enum efi_reset_type {
 
 /* EFI Runtime Services table */
 #define EFI_RUNTIME_SERVICES_SIGNATURE 0x5652453544e5552ULL
-#define EFI_RUNTIME_SERVICES_REVISION  0x00010000
 
 #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET     0x00010000
 #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE    0x00020000
index 1869856..9a0c323 100644 (file)
@@ -3058,6 +3058,8 @@ out:
 
 static const struct efi_boot_services efi_boot_services = {
        .hdr = {
+               .signature = EFI_BOOT_SERVICES_SIGNATURE,
+               .revision = EFI_SPECIFICATION_VERSION,
                .headersize = sizeof(struct efi_table_hdr),
        },
        .raise_tpl = efi_raise_tpl,
@@ -3113,7 +3115,7 @@ static uint16_t __efi_runtime_data firmware_vendor[] = L"Das U-Boot";
 struct efi_system_table __efi_runtime_data systab = {
        .hdr = {
                .signature = EFI_SYSTEM_TABLE_SIGNATURE,
-               .revision = 2 << 16 | 70, /* 2.7 */
+               .revision = EFI_SPECIFICATION_VERSION,
                .headersize = sizeof(struct efi_table_hdr),
        },
        .fw_vendor = (long)firmware_vendor,
index dd3ff8a..cfa60b8 100644 (file)
@@ -459,7 +459,7 @@ efi_status_t __efi_runtime EFIAPI efi_query_variable_info(
 struct efi_runtime_services __efi_runtime_data efi_runtime_services = {
        .hdr = {
                .signature = EFI_RUNTIME_SERVICES_SIGNATURE,
-               .revision = EFI_RUNTIME_SERVICES_REVISION,
+               .revision = EFI_SPECIFICATION_VERSION,
                .headersize = sizeof(struct efi_table_hdr),
        },
        .get_time = &efi_get_time_boottime,