diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 9526f6c60d72d1d193b50caf80496238042af34b..d20775eccd99c709aab87c20c21afad6f91bcf22 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -215,6 +215,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt)
 	ulong (*entry)(void *image_handle, struct efi_system_table *st)
 		asmlinkage;
 	ulong fdt_pages, fdt_size, fdt_start, fdt_end;
+	const efi_guid_t fdt_guid = EFI_FDT_GUID;
 	bootm_headers_t img = { 0 };
 
 	/*
@@ -233,9 +234,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt)
 		}
 
 		/* Link to it in the efi tables */
-		systab.tables[0].guid = EFI_FDT_GUID;
-		systab.tables[0].table = fdt;
-		systab.nr_tables = 1;
+		efi_install_configuration_table(&fdt_guid, fdt);
 
 		/* And reserve the space in the memory map */
 		fdt_start = ((ulong)fdt) & ~EFI_PAGE_MASK;
@@ -248,7 +247,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt)
 				   EFI_BOOT_SERVICES_DATA, true);
 	} else {
 		printf("WARNING: Invalid device tree, expect boot to fail\n");
-		systab.nr_tables = 0;
+		efi_install_configuration_table(&fdt_guid, NULL);
 	}
 
 	/* Load the EFI payload */