X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=OvmfPkg%2FSmbiosPlatformDxe%2FQemu.c;h=4dae4b0b98f1d37cc3c51da79fa337b325f0b7cb;hb=ac0a286f4d747a4c6c603a7b225917293cbe1e9f;hp=e34658238123d5cd2afa225bd8f2bcab7745138d;hpb=b26f0cf9ee09a180c91a4beeeb1b149e7f92afed;p=mirror_edk2.git diff --git a/OvmfPkg/SmbiosPlatformDxe/Qemu.c b/OvmfPkg/SmbiosPlatformDxe/Qemu.c index e346582381..4dae4b0b98 100644 --- a/OvmfPkg/SmbiosPlatformDxe/Qemu.c +++ b/OvmfPkg/SmbiosPlatformDxe/Qemu.c @@ -6,10 +6,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ +#include // ASSERT_EFI_ERROR() +#include // AllocatePool() +#include // PcdGetBool() +#include // QemuFwCfgFindFile() + #include "SmbiosPlatformDxe.h" -#include -#include -#include /** Locates and extracts the QEMU SMBIOS data if present in fw_cfg @@ -22,17 +24,20 @@ GetQemuSmbiosTables ( VOID ) { - EFI_STATUS Status; - FIRMWARE_CONFIG_ITEM Tables; - UINTN TablesSize; - UINT8 *QemuTables; + EFI_STATUS Status; + FIRMWARE_CONFIG_ITEM Tables; + UINTN TablesSize; + UINT8 *QemuTables; if (!PcdGetBool (PcdQemuSmbiosValidated)) { return NULL; } - Status = QemuFwCfgFindFile ("etc/smbios/smbios-tables", &Tables, - &TablesSize); + Status = QemuFwCfgFindFile ( + "etc/smbios/smbios-tables", + &Tables, + &TablesSize + ); ASSERT_EFI_ERROR (Status); ASSERT (TablesSize > 0); @@ -46,3 +51,36 @@ GetQemuSmbiosTables ( return QemuTables; } + +/** + Installs SMBIOS information for OVMF + + @param ImageHandle Module's image handle + @param SystemTable Pointer of EFI_SYSTEM_TABLE + + @retval EFI_SUCCESS Smbios data successfully installed + @retval Other Smbios data was not installed + +**/ +EFI_STATUS +EFIAPI +SmbiosTablePublishEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + UINT8 *SmbiosTables; + + Status = EFI_NOT_FOUND; + // + // Add QEMU SMBIOS data if found + // + SmbiosTables = GetQemuSmbiosTables (); + if (SmbiosTables != NULL) { + Status = InstallAllStructures (SmbiosTables); + FreePool (SmbiosTables); + } + + return Status; +}