]> git.sur5r.net Git - u-boot/blobdiff - cmd/bootefi.c
sunxi: R40: add gigabit ethernet clocks
[u-boot] / cmd / bootefi.c
index 707d159baca8c6e565fb8199486b921bed6d26f3..cd755b6bf44441a9d25ff0356a9d10066f9e4c56 100644 (file)
@@ -61,6 +61,11 @@ efi_status_t efi_init_obj_list(void)
        if (ret != EFI_SUCCESS)
                goto out;
 #endif
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+       ret = efi_acpi_register();
+       if (ret != EFI_SUCCESS)
+               goto out;
+#endif
 #ifdef CONFIG_GENERATE_SMBIOS_TABLE
        ret = efi_smbios_register();
        if (ret != EFI_SUCCESS)
@@ -263,6 +268,7 @@ static efi_status_t do_bootefi_exec(void *efi,
 {
        struct efi_loaded_image loaded_image_info = {};
        struct efi_object loaded_image_info_obj = {};
+       struct efi_object mem_obj = {};
        struct efi_device_path *memdp = NULL;
        efi_status_t ret;
 
@@ -279,6 +285,12 @@ static efi_status_t do_bootefi_exec(void *efi,
                /* actual addresses filled in after efi_load_pe() */
                memdp = efi_dp_from_mem(0, 0, 0);
                device_path = image_path = memdp;
+               efi_add_handle(&mem_obj);
+
+               ret = efi_add_protocol(mem_obj.handle, &efi_guid_device_path,
+                                      device_path);
+               if (ret != EFI_SUCCESS)
+                       goto exit;
        } else {
                assert(device_path && image_path);
        }
@@ -343,6 +355,8 @@ static efi_status_t do_bootefi_exec(void *efi,
 exit:
        /* image has returned, loaded-image obj goes *poof*: */
        list_del(&loaded_image_info_obj.link);
+       if (mem_obj.handle)
+               list_del(&mem_obj.link);
 
        return ret;
 }