/** @file boot information boot time changes. SMBIOS type 32. Based on files under Nt32Pkg/MiscSubClassPlatformDxe/ Copyright (c) 2021, NUVIA Inc. All rights reserved.
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
Copyright (c) 2015, Hisilicon Limited. All rights reserved.
Copyright (c) 2015, Linaro Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include "SmbiosMisc.h" /** This function makes boot time changes to the contents of the MiscBootInformation (Type 32) record. @param RecordData Pointer to SMBIOS table with default values. @param Smbios SMBIOS protocol. @retval EFI_SUCCESS The SMBIOS table was successfully added. @retval EFI_INVALID_PARAMETER Invalid parameter was found. @retval EFI_OUT_OF_RESOURCES Failed to allocate required memory. **/ SMBIOS_MISC_TABLE_FUNCTION(MiscBootInformation) { EFI_STATUS Status; SMBIOS_TABLE_TYPE32 *SmbiosRecord; SMBIOS_TABLE_TYPE32 *InputData; // // First check for invalid parameters. // if (RecordData == NULL) { return EFI_INVALID_PARAMETER; } InputData = (SMBIOS_TABLE_TYPE32 *)RecordData; // // Two zeros following the last string. // SmbiosRecord = AllocateZeroPool (sizeof (SMBIOS_TABLE_TYPE32) + 1 + 1); if (SmbiosRecord == NULL) { return EFI_OUT_OF_RESOURCES; } (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE32)); SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE32); SmbiosRecord->BootStatus = OemGetBootStatus (); // // Now we have got the full smbios record, call smbios protocol to add this record. // Status = SmbiosMiscAddRecord ((UINT8*)SmbiosRecord, NULL); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type32 Table Log Failed! %r \n", __FUNCTION__, __LINE__, Status)); } FreePool (SmbiosRecord); return Status; }