efi: Update some comments related to smbios tables
authorSimon Glass <sjg@chromium.org>
Wed, 16 May 2018 15:42:19 +0000 (09:42 -0600)
committerAlexander Graf <agraf@suse.de>
Sun, 3 Jun 2018 13:27:21 +0000 (15:27 +0200)
Clarify the operation of this code with some additional comments.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/efi_loader.h
include/smbios.h
lib/efi_loader/efi_smbios.c

index 0c286bf6bed72b4d32b5abdaeaee7e38b69a001d..c66252a7dd2accc4be5be86260f38fd49fc02281 100644 (file)
@@ -214,6 +214,13 @@ efi_status_t efi_net_register(void);
 /* Called by bootefi to make the watchdog available */
 efi_status_t efi_watchdog_register(void);
 /* Called by bootefi to make SMBIOS tables available */
+/**
+ * efi_smbios_register() - write out SMBIOS tables
+ *
+ * Called by bootefi to make SMBIOS tables available
+ *
+ * @return 0 if OK, -ENOMEM if no memory is available for the tables
+ */
 efi_status_t efi_smbios_register(void);
 
 struct efi_simple_file_system_protocol *
index 79880ef5b5c8cdb12acad700f245fe458d3d6c1a..97b9ddce23762eaabf18d36ce6241f84955ab4d5 100644 (file)
@@ -231,8 +231,9 @@ typedef int (*smbios_write_type)(ulong *addr, int handle);
  *
  * This writes SMBIOS table at a given address.
  *
- * @addr:      start address to write SMBIOS table
- * @return:    end address of SMBIOS table
+ * @addr:      start address to write SMBIOS table. If this is not
+ *     16-byte-aligned then it will be aligned before the table is written
+ * @return:    end address of SMBIOS table (and start address for next entry)
  */
 ulong write_smbios_table(ulong addr);
 
index 482436e2adb7c6469625238767eeb68176c0d178..7c3fc8af0b250f316ff37557fba4f914de07fb1f 100644 (file)
@@ -29,7 +29,12 @@ efi_status_t efi_smbios_register(void)
        if (ret != EFI_SUCCESS)
                return ret;
 
-       /* Generate SMBIOS tables */
+       /*
+        * Generate SMBIOS tables - we know that efi_allocate_pages() returns
+        * a 4k-aligned address, so it is safe to assume that
+        * write_smbios_table() will write the table at that address.
+        */
+       assert(!(dmi & 0xf));
        write_smbios_table(dmi);
 
        /* And expose them to our EFI payload */