
Hi Simon,
On Tue, 2 Nov 2021 at 23:56, Simon Glass sjg@chromium.org wrote:
Hi Masahisa,
On Tue, 26 Oct 2021 at 02:26, Masahisa Kojima masahisa.kojima@linaro.org wrote:
TCG PC Client Platform Firmware Profile Specification requires to measure the SMBIOS table that contains static configuration information (e.g. Platform Manufacturer Enterprise Number assigned by IANA, platform model number, Vendor and Device IDs for each SMBIOS table).
The device- and environment-dependent information such as serial number is cleared to zero or space character for the measurement.
Existing smbios_string() function returns pointer to the string with const qualifier, but exisintg use case is updating version string and const qualifier must be removed. This commit removes const qualifier from smbios_string() return value and reuses to clear the strings for the measurement.
This commit also fixes the following compiler warning:
lib/smbios-parser.c:59:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] const struct smbios_header *header = (struct smbios_header *)entry->struct_table_address;
Signed-off-by: Masahisa Kojima masahisa.kojima@linaro.org
Changes in v4:
- update commit message
Changes in v3:
- TCG spec says EV_SEPARATOR must be the last, swap the order of measurement
Changes in v2:
- use flexible array for table_entry field
- modify funtion name to find_smbios_table()
- remove unnecessary const qualifier from smbios_string()
- create non-const version of next_header()
include/efi_loader.h | 2 + include/efi_tcg2.h | 15 ++++ include/smbios.h | 17 +++- lib/efi_loader/Kconfig | 1 + lib/efi_loader/efi_boottime.c | 2 + lib/efi_loader/efi_smbios.c | 2 - lib/efi_loader/efi_tcg2.c | 84 +++++++++++++++++++ lib/smbios-parser.c | 152 +++++++++++++++++++++++++++++++--- 8 files changed, 261 insertions(+), 14 deletions(-)
I don't understand what efi_system_table is. Could someone add a comment about that to the code?
efi_system_table is defined in the UEFI Specification.
Also efi_configuration_table is an array of void * to what? Again I don't see any comment in the header file...
It is also defined in the UEFI Specification.
typedef struct{ EFI_GUID VendorGuid; VOID *VendorTable; } EFI_CONFIGURATION_TABLE;
efi_configuration_table will contain the guid and pointer to the industry standard configuration tables such as APCI and SMBIOS.
How does this match up with the SMBIOS table already in U-Boot? Is it a pointer to it?
efi_system_table has array of efi_configuration_table, SMBIOS tables is installed(saving pointer into the array of efi_configuration_table together with guid) by calling efi_install_configuration_table().
Thanks, Masahisa Kojima
Regards, Simon