efi_loader: description EFI_LOAD_FILE2_PROTOCOL
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 3 Oct 2020 10:44:31 +0000 (12:44 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 6 Oct 2020 05:43:56 +0000 (07:43 +0200)
U-Boot offers a EFI_LOAD_FILE2_PROTOCOL which the Linux EFI stub can use to
load an initial RAM disk. Update the function comments of the
implementation.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
lib/efi_loader/efi_load_initrd.c

index 574a83d..ff69e6e 100644 (file)
@@ -47,9 +47,9 @@ static const struct efi_initrd_dp dp = {
 /**
  * get_file_size() - retrieve the size of initramfs, set efi status on error
  *
- * @dev:                       device to read from. i.e "mmc"
- * @part:                      device partition. i.e "0:1"
- * @file:                      name fo file
+ * @dev:                       device to read from, e.g. "mmc"
+ * @part:                      device partition, e.g. "0:1"
+ * @file:                      name of file
  * @status:                    EFI exit code in case of failure
  *
  * Return:                     size of file
@@ -78,15 +78,16 @@ out:
 }
 
 /**
- * load_file2() - get information about random number generation
+ * efi_load_file2initrd() - load initial RAM disk
+ *
+ * This function implements the LoadFile service of the EFI_LOAD_FILE2_PROTOCOL
+ * in order to load an initial RAM disk requested by the Linux kernel stub.
  *
- * This function implement the LoadFile2() service in order to load an initram
- * disk requested by the Linux kernel stub.
  * See the UEFI spec for details.
  *
- * @this:                      loadfile2 protocol instance
- * @file_path:                 relative path of the file. "" in this case
- * @boot_policy:               must be false for Loadfile2
+ * @this:                      EFI_LOAD_FILE2_PROTOCOL instance
+ * @file_path:                 media device path of the file, "" in this case
+ * @boot_policy:               must be false
  * @buffer_size:               size of allocated buffer
  * @buffer:                    buffer to load the file
  *
@@ -128,7 +129,13 @@ efi_load_file2_initrd(struct efi_load_file_protocol *this,
                goto out;
        }
 
-       /* expect something like 'mmc 0:1 initrd.cpio.gz' */
+       /*
+        * expect a string with three space separated parts:
+        *
+        * * a block device type, e.g. "mmc"
+        * * a device and partition identifier, e.g. "0:1"
+        * * a file path on the block device, e.g. "/boot/initrd.cpio.gz"
+        */
        dev = strsep(&s, " ");
        if (!dev)
                goto out;
@@ -168,23 +175,20 @@ out:
 }
 
 /**
- * efi_initrd_register() - Register a handle and loadfile2 protocol
+ * efi_initrd_register() - create handle for loading initial RAM disk
  *
- * This function creates a new handle and installs a linux specific GUID
- * to handle initram disk loading during boot.
- * See the UEFI spec for details.
+ * This function creates a new handle and installs a Linux specific vendor
+ * device path and an EFI_LOAD_FILE_2_PROTOCOL. Linux uses the device path
+ * to identify the handle and then calls the LoadFile service of the
+ * EFI_LOAD_FILE_2_PROTOCOL to read the initial RAM disk.
  *
- * Return:                     status code
+ * Return:     status code
  */
 efi_status_t efi_initrd_register(void)
 {
        efi_handle_t efi_initrd_handle = NULL;
        efi_status_t ret;
 
-       /*
-        * Set up the handle with the EFI_LOAD_FILE2_PROTOCOL which Linux may
-        * use to load the initial ramdisk.
-        */
        ret = EFI_CALL(efi_install_multiple_protocol_interfaces
                       (&efi_initrd_handle,
                        /* initramfs */