American Megatrends, Inc.

SmbiosCore

Copyright

Release Notes

© American Megatrends, Inc.


Copyright

American Megatrends, Inc.
5555 Oakbrook Parkway
Suite 200
Norcross, GA 30093 (USA)

Copyright (c) 1999-2016 American Megatrends, Inc. All Rights Reserved.

This publication contains proprietary information, which is protected by copyright. No part of this publication may be reproduced, transcribed, stored in a retrieval system, translated into any language or computer language, or transmitted in any form whatsoever without the prior written consent of the publisher, American Megatrends, Inc.

American Megatrends, Inc. retains the right to update, change, modify this publication at any time, without notice.

For Additional Information

Call American Megatrends BIOS Sales Department at 1-800-828-9264 for additional information.

Limitations of Liability

In no event shall American Megatrends be held liable for any loss, expenses, or damages of any kind whatsoever, whether direct, indirect, incidental, or consequential, arising from the design or use of this product or the support materials provided with the product.

Limited Warranty

No warranties are made, either expressed or implied, with regard to the contents of this work, its merchantability, or fitness for a particular use. American Megatrends assumes no responsibility for errors and omissions or for the uses made of the material contained herein or reader decisions based on such use.

Trademark and Copyright Acknowledgments

All product names used in this publication are for identification purposes only and are trademarks of their respective Companies.


Release Notes - NDA Required

Component Information:
Component Title: SMBIOS - Core Source
Component Reference Name: SMBIOSCore
Component Type: eModule
Release Date: 2016-04-29
Source Control Label: 4.6.5.5_SMBIOS_40
Source Control Location: SS: ALASKA;$ /Alaska/SOURCE/Modules/SMBIOS
Dependencies
Dependent Component Title: SMBIOS - Board
Dependent Component Reference Name: SMBIOSBoard
Dependent Source Control Label: 4.6.5.5_SMBIOSBOARD_40
Dependent Source Control Location: SS: ALASKA;$ /Alaska/BIN/Modules/SMBIOS

Dependent Component Title: SMIFlash
Dependent Component Reference Name: SMIFlash
Dependent Source Control Label: 4.6.3.6_SMIFLASH_30 or later
Dependent Source Control Location: SS:Alaska ;$/Alaska/SOURCE//Modules/SMIFlash;

Dependent Component Title: Flash - Source
Dependent Component Reference Name: FLASH_COMBINED_SOURCE
Dependent Source Control Label: 4.6.3_Flash_Combined_2_36
Dependent Source Control Location: SS:Alaska; $/Alaska/SOURCE/Flash_Combined_2/Core

Non-Compiled BIN and LIB File(s) within this Component:
N0NE

Component Description:
The purpose of System Management BIOS (SMBIOS) is to generate and report system configuration data in the SMBIOS Structure Table. Smbios Core component provides various protocols / functions to manipulate the SMBIOS structures, and runtime support for AMI Edit Utility and Smbios Bios PnP functions 50h, 51h, and 52h.
Filename | Description
Main Component | Core\em\Smbios
*.cif *.sdl *.mak *.dxs | Standard CIF, SDL, MAK, and DXS files
Smbios.c | Provides Smbios Protocols, functions to dynamically update some Smbios structures during Bios Post
SmbiosDMIEdit ModulePart Core\EM\SMBIOS\SmbiosDMIEditSupport
Provides runtime support for AMI Edit Utility and Smbios Bios PnP functions 50h, 51h, and 52h
*.cif *.mak *.sdl *.dxs | Standard CIF MAK SDL DXS files
SmbiosDMIEdit.* | Contains driver entry initialization and SMI handler codes
SmbiosDMIEditFunc.* | Contains supporting codes for SmbiosDMIEdit.c
SmbiosNvramFunc.c | Contains codes to preserve DMIEdit data in flash during flash update
SmbiosGetFlashData ModulePart Core\EM\SMBIOS\SmbiosGetFlashData
Provides DMI flash data related codes for SmbiosDMIEdit. Applicable only when DMIEdit data is located in BootBlock
*.cif *.mak *.sdl *.dxs | Standard CIF MAK SDL DXS files
SmbiosGetFlashData.c | Contains DMI flash data related codes for SmbiosDMIEdit
SmbiosFlashData ModulePart Core\EM\SMBIOS\SmbiosFlashData
Reserves data area in flash part for DMIEdit data. Applicable only when DMIEdit data is located in BootBlock
*.cif *.mak | Standard CIF MAK files
SmbiosFlashData.sdl | Contains FLASHDATA_SIZE token to specify the size of the data area set aside in the flash part to hold DMIEdit data
SmbiosFlashData.asm | Reserves data area in the flash part to hold DMIEdit data
SmbiosPeim ModulePart Core\EM\SMBIOS\SmbiosPeim
Contains code to update SMBIOS Type 1 structure "Wake-up Type" data field on S3 resume
*.cif *.mak *.sdl *.dxs | Standard CIF MAK SDL and DXS files
SmbiosPei.c | Contains code to update SMBIOS Type 1 structure "Wake-up Type" data field on S3 resume
AMI Build Tools:
4.5.5_TOOLS_41, WINDDK: 7600.16385.1

New features added in this label:
  • None

    • General Bug Fixes and EIP Addressed in this Label:
  • EIP231162
    • Improvement:
    Merge Aptio V Smbios -09 changes for Aptio 4 4.6.5.5_SMBIOS_40 release

  • EIP262865
    • Improvement:
    DmiEdit needs changes as smiflash protocol is being changed to deny calls with Smm buffer

    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP231162
    •
    Smbios.c, SmbiosDmiEdit.c, SmbiosDmiEditFunc.c

  • EIP262865
    •
    SmbiosDMIEdit.mak, SmbiosDMIEdit.h, SmbiosDmiEdit.c, SmbiosDMIEditFunc.c

    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
    • Type 0 (Bios Information) - Bios Version (offset 0x05)
    • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
    • Type 1 (System Information) - Manufacturer (offset 0x04)
    • Type 1 (System Information) - Product Name (offset 0x05)
    • Type 1 (System Information) - Version (offset 0x06)
    • Type 1 (System Information) - Serial Number (offset 0x07)
    • Type 1 (System Information) - UUID (offset 0x08)
    • Type 1 (System Information) - SKU Number (offset 0x19)
    • Type 1 (System Information) - Family (offset 0x1A)
    • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
    • Type 2 (Base Board Information) - Product (offset 0x05)
    • Type 2 (Base Board Information) - Version (offset 0x06)
    • Type 2 (Base Board Information) - Serial Number (offset 0x07)
    • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
    • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
    • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
    • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
    • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
    • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
    • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
    • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
    • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
    • Type 4 (Processor Information) - Serial Number (offset 0x20)
    • Type 4 (Processor Information) - Asset Tag (offset 0x21)
    • Type 4 (Processor Information) - Part Number (offset 0x22)
    • Type 11 (OEM Strings)
    • Type 12 (System Configuration Options)
    • Type 22 (Portable Battery) - All data fields
    • Type 39 (System Power Supply) - All data fields

    Unit Testing:
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot

    • Validation Testing:
    Available upon request

    Release History:

    4.6.5.5_SMBIOS_39
    New features added in this label:
  • None

    • General Bug Fixes and EIP Addressed in this Label:
  • EIP193846
    • ISSUE:
    Generic changes for EIP187631: Problems with SMBIOS PnP function 52h - Set SMBIOS structure
    FIX:
    Excecute function isWriteOnce only if input control is set

  • EIP205509
    • Improvement:
    Merge Aptio V Smbios EIP193807, 193858, 196901 changes into Aptio 4 Smbios

    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP193846
    •
    SmbiosDMIEditFunc.c

  • EIP205509
    •
    SmbiosDmiEdit.sdl, SmbiosDmiEdit.c, SmbiosNvramFunc.c, SmbiosGetFlashData.c

    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
    • Type 0 (Bios Information) - Bios Version (offset 0x05)
    • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
    • Type 1 (System Information) - Manufacturer (offset 0x04)
    • Type 1 (System Information) - Product Name (offset 0x05)
    • Type 1 (System Information) - Version (offset 0x06)
    • Type 1 (System Information) - Serial Number (offset 0x07)
    • Type 1 (System Information) - UUID (offset 0x08)
    • Type 1 (System Information) - SKU Number (offset 0x19)
    • Type 1 (System Information) - Family (offset 0x1A)
    • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
    • Type 2 (Base Board Information) - Product (offset 0x05)
    • Type 2 (Base Board Information) - Version (offset 0x06)
    • Type 2 (Base Board Information) - Serial Number (offset 0x07)
    • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
    • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
    • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
    • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
    • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
    • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
    • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
    • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
    • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
    • Type 4 (Processor Information) - Serial Number (offset 0x20)
    • Type 4 (Processor Information) - Asset Tag (offset 0x21)
    • Type 4 (Processor Information) - Part Number (offset 0x22)
    • Type 11 (OEM Strings)
    • Type 12 (System Configuration Options)
    • Type 22 (Portable Battery) - All data fields
    • Type 39 (System Power Supply) - All data fields

    Unit Testing:
    Available upon request

    Validation Testing:
    Available upon request

    4.6.5.5_SMBIOS_38
    New features added in this label:
  • Type 0 (Vendor) DMIEdit support.
    • General Bug Fixes and EIP Addressed in this Label:
  • EIP103526
    • Improvement:
    We should update Wake-up Type in SMBIOS type 1 dynamically

  • EIP171151
    • ISSUE:
    Smbios Type 12 - Changes beyond string #8 were not persistent across the reboot
    FIX:
    Create and use array of test flags for specified number of Type 12 structure

  • EIP180676
    • ISSUE:
    UUID Updated by 3rd party DMI/SMBIOS tools is not working
    FIX:
    Modified code to handle all update types (1, 2, or 4 bytes) as 16 bytes

  • EIP177887
    • ISSUE:
    Build error if token "SYS_CHASSIS_INFO" set to "0"
    FIX:
    Added preprocessor checks
    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP103526
    •
    SMBIOSCore.cif, Smbios.c, new SmbiosPeim module part

  • EIP171151
    •
    Smbios.c, Smbios.h

  • EIP180676
    •
    SmbiosDMIEditFunc.c

  • EIP177887
    •
    Smbios.c, SmbiosDMIEditFunc.c
    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
    • Type 0 (Bios Information) - Bios Version (offset 0x05)
    • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
    • Type 1 (System Information) - Manufacturer (offset 0x04)
    • Type 1 (System Information) - Product Name (offset 0x05)
    • Type 1 (System Information) - Version (offset 0x06)
    • Type 1 (System Information) - Serial Number (offset 0x07)
    • Type 1 (System Information) - UUID (offset 0x08)
    • Type 1 (System Information) - SKU Number (offset 0x19)
    • Type 1 (System Information) - Family (offset 0x1A)
    • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
    • Type 2 (Base Board Information) - Product (offset 0x05)
    • Type 2 (Base Board Information) - Version (offset 0x06)
    • Type 2 (Base Board Information) - Serial Number (offset 0x07)
    • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
    • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
    • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
    • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
    • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
    • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
    • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
    • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
    • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
    • Type 4 (Processor Information) - Serial Number (offset 0x20)
    • Type 4 (Processor Information) - Asset Tag (offset 0x21)
    • Type 4 (Processor Information) - Part Number (offset 0x22)
    • Type 11 (OEM Strings)
    • Type 12 (System Configuration Options)
    • Type 22 (Portable Battery) - All data fields
    • Type 39 (System Power Supply) - All data fields
    Unit Testing:
    Available upon request
    Validation Testing:
    Available upon request

    4.6.5.4_SMBIOS_37
    New features added in this label:
  • Type 0 (Vendor) DMIEdit support.

    • General Bug Fixes and EIP Addressed in this Label:
  • EIP152598
    • ISSUE:
    SMBIOS UUID can't be updated by DMIEdit tool
    FIX:
    Set Update flag when changing UUID field

  • EIP151804
    • IMPROVEMENT:
    4.6.5.1_SMBIOSBOARD_35 removed SYS_CHASSIS_TYPE token caused existing projects failed to clone it

    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP152598
    •
    Smbios.c

  • EIP151804
    •
    SmbiosStaticData.sdl

    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
    • Type 0 (Bios Information) - Bios Version (offset 0x05)
    • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
    • Type 1 (System Information) - Manufacturer (offset 0x04)
    • Type 1 (System Information) - Product Name (offset 0x05)
    • Type 1 (System Information) - Version (offset 0x06)
    • Type 1 (System Information) - Serial Number (offset 0x07)
    • Type 1 (System Information) - UUID (offset 0x08)
    • Type 1 (System Information) - SKU Number (offset 0x19)
    • Type 1 (System Information) - Family (offset 0x1A)
    • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
    • Type 2 (Base Board Information) - Product (offset 0x05)
    • Type 2 (Base Board Information) - Version (offset 0x06)
    • Type 2 (Base Board Information) - Serial Number (offset 0x07)
    • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
    • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
    • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
    • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
    • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
    • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
    • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
    • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
    • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
    • Type 4 (Processor Information) - Serial Number (offset 0x20)
    • Type 4 (Processor Information) - Asset Tag (offset 0x21)
    • Type 4 (Processor Information) - Part Number (offset 0x22)
    • Type 11 (OEM Strings)
    • Type 12 (System Configuration Options)
    • Type 22 (Portable Battery) - All data fields
    • Type 39 (System Power Supply) - All data fields

    Unit Testing:
    Platform: SugarBay and SharkBay

    • Boot to DOS and verify proper structures using any Smbios browser
    • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
    • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
    • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot

    Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results

    4.6.5.1_SMBIOS_36
    New features added in this label:
  • Type 0 (Vendor) DMIEdit support.

    • General Bug Fixes and EIP Addressed in this Label:
  • EIP132364
    • ISSUE:
    DMIEdit fails to update in the following cases:
    1. When current string is NULL
    2. When structure is created by OEM
    3. When structure is created with strings not numbered sequentially
    FIX:
    Code change

  • EIP136093
    • NEW FEATURE:
    Type 0 (Vendor) DMIEdit support

  • EIP129122
    • ISSUE:
    Purchase date is not updated in DMI Data area of NCB
    FIX:
    Clear old data when new data size is smaller than existing one

  • EIP143321
    • IMPROVEMENT:
    Perform "CppCheck" on Smbios module for '4.6.5.1_SMBIOS_36' release

  • EIP143631
    • ISSUE:
    Silent code corruption caused by AddProducerHandle routine
    FIX:
    Changed variable "i" to 16-bit

    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP132364
    •
    Smbios.c, SmbiosDMIEditFunc.c

  • EIP136093
    •
    SmbiosDMIEditFunc.c

  • EIP129122
    •
    SmbiosDMIEditFunc.c

  • EIP143321
    •
    Smbios.c, SmbiosDMIEdit.c, SmbiosDMIEditFunc.c, SmbiosNvramFunc.c

  • EIP143631
    •
    Smbios.c

    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
    • Type 0 (Bios Information) - Bios Version (offset 0x05)
    • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
    • Type 1 (System Information) - Manufacturer (offset 0x04)
    • Type 1 (System Information) - Product Name (offset 0x05)
    • Type 1 (System Information) - Version (offset 0x06)
    • Type 1 (System Information) - Serial Number (offset 0x07)
    • Type 1 (System Information) - UUID (offset 0x08)
    • Type 1 (System Information) - SKU Number (offset 0x19)
    • Type 1 (System Information) - Family (offset 0x1A)
    • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
    • Type 2 (Base Board Information) - Product (offset 0x05)
    • Type 2 (Base Board Information) - Version (offset 0x06)
    • Type 2 (Base Board Information) - Serial Number (offset 0x07)
    • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
    • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
    • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
    • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
    • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
    • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
    • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
    • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
    • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
    • Type 4 (Processor Information) - Serial Number (offset 0x20)
    • Type 4 (Processor Information) - Asset Tag (offset 0x21)
    • Type 4 (Processor Information) - Part Number (offset 0x22)
    • Type 11 (OEM Strings)
    • Type 12 (System Configuration Options)
    • Type 22 (Portable Battery) - All data fields
    • Type 39 (System Power Supply) - All data fields

    Unit Testing:
    Platform: SugarBay and SharkBay

    • Boot to DOS and verify proper structures using any Smbios browser
    • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
    • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
    • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot

    Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results

    4.6.5.1_SMBIOS_35
    New features added in this label:
  • Type 4 (Serial Number, Asset Tag, Part Number) DMIEdit support.
  • SMBIOS 2.8.0 specification support.
  • Multiple instances of SMBIOS Type 3 structure support.

    • General Bug Fixes and EIP Addressed in this Label:
  • EIP118222
    • ISSUE:
    Build error in Core\EM\SMBIOS\SMBios.c (In SMBIOS.c, if all tokens inside of UpdateDynamicStructures() are disabled, the BIOS will not build)
    FIX:
    Initialize "Status" variable on declaration.

  • EIP124483
    • ISSUE:
    After updating to SMBIOS 33, issue found with smbios type 4 & 7 & 10 & 11 & 13 & 14
    FIX:
    Added control token SMBIOS_DYNAMIC_UPDATE_POLICY. Default setting is 0 to do dynamic update at Ready To Boot event for backward compatibility

  • EIP104836
    • NEW FEATURE:
    DMIEdit support edit type 4

  • EIP124635
    • ISSUE:
    When DMIEdit data area in BootBlock is erased with 0x00 value, the system hangs at CP 0x62
    FIX:
    Added code to check if the size is zero then break out of the while loop

  • EIP124735
    • SPEC UPDATE:
    SMBIOS 2.8.0 specification support for Aptio 4

  • EIP125665
    • NEW FEATURE:
    Support multiple instances of SMBIOS Type 3 structure (merge EIP106206 into Aptio 4)

  • EIP125802
    • IMPROVEMENT:
    Privilege escalation into SMM via SMBIOS SMM driver

  • EIP126389
    • ISSUE:
    Unable to edit SMBIOS structure using AmiEdit utility
    FIX:
    Added "$(SMBIOS_DIR)\SmbiosFlashData.ffs" eLink to FT_FV_BB when FtRecovery is present

    Files Changed for General Bug Fixes and EIP Addressed in this Label:
    General Bug Fixes
  • None

    • EIP Addressed
  • EIP118222
    •
    Smbios.c

  • EIP124483
    •
    Smbios.c

  • EIP104836
    •
    Smbios.c, SmbiosDMIEditFunc.c

  • EIP124635
    •
    SmbiosGetFlashData.c

  • EIP124735
    •
    Smbios.c

  • EIP125665
    •
    Smbios.c, SmbiosDMIEditFunc.c

  • EIP125802
    •
    SmbiosDMIEdit.c

    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
  • Type 4 (Processor Information) - Serial Number (offset 0x20)
  • Type 4 (Processor Information) - Asset Tag (offset 0x21)
  • Type 4 (Processor Information) - Part Number (offset 0x22)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 22 (Portable Battery) - All data fields
  • Type 39 (System Power Supply) - All data fields
    •

    Unit Testing:
    Platform: SugarBay and SharkBay
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot

    • Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results
    Quality Assurance Test Results

    4.6.5.1_SMBIOS_34
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • EIP108986 - SMBIOS type 13 structure not present
  • EIP110905 - AMI DMIEDIT_DOS tool issue (Type 11 fails to update)
  • EIP115031 - NVRAM data corruption
    •
    EIP addressed in this label:
  • EIP108986 - SMBIOS type 13 structure not present
  • EIP110905 - AMI DMIEDIT_DOS tool issue (Type 11 fails to update)
  • EIP115031 - NVRAM data corruption
    •
    Files changed:
    [TAG] | EIP108986
[Category] | Bug Fix
[Severity] | Minor
[Symptom] | SMBIOS type 13 structure not present
[RootCause] | This problem is caused by recent change for EIP98861 (function AddUpdateType13 was moved to UpdateDynamic)
[Solution] | Move AddUpdateType13 function back to SmbiosDynamicUpdate
[Files] | Smbios.c - File version: 139
[TAG] | EIP110905
[Category] | Bug Fix
[Severity] | Minor
[Symptom] | AMI DMIEDIT_DOS tool issue (Type 11 fails to update)
[RootCause] | Problem is caused by recent change for EIP96221 where a line of code was inadvertently left out when function SetType11 was simplified
[Solution] | Corrected missing code
[Files] | SmbiosDMIEditFunc.c - File version: 56
[TAG] | EIP115031
[Category] | Bug Fix
[Symptom] | NVRAM data corruption
[RootCause] | In UpdateSmbiosTable function, FlashDataOffset is incorrectly calculated for certain case
[Solution] | Corrected code
[Files] | SmbiosDMIEditFunc.c - File version: 57
    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 22 (Portable Battery) - All data fields
  • Type 39 (System Power Supply) - All data fields
    •
    Unit Testing:
    Platform: SugarBay
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot
    •
    Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results
    4.6.5.1_SMBIOS_33
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • EIP96221 - Smbios DmiEdit: Nvram variables store axtraneous data for fixed-length structure change
  • EIP96064 - DmiEdit support creates NVRAM variables with names of incorrect length
  • EIP97178 - SMIFlash fails to build when SMBIOS_DMIEDIT_DATA_LOC = 2
  • EIP100134 - SMBIOS type 17 dimm Rank information is not correct
  • EIP101114 - System got an assert and hung after updated Smbios -031 to -032 label
    •
    EIP addressed in this label:
  • EIP96221 - Smbios DmiEdit: Nvram variables store axtraneous data for fixed-length structure change
  • EIP96064 - DmiEdit support creates NVRAM variables with names of incorrect length
  • EIP97178 - SMIFlash fails to build when SMBIOS_DMIEDIT_DATA_LOC = 2
  • EIP99697 - To make a generic fix for the SMBIOS type 19 problem
  • EIP100134 - SMBIOS type 17 dimm Rank information is not correct
  • EIP101114 - System got an assert and hung after updated Smbios -031 to -032 label
    •
    Files changed:
    [TAG] | EIP96221
[Category] | Bug Fix
[Severity] | Minor
[Symptom] | Smbios DmiEdit: Nvram variables store axtraneous data for fixed-length structure change
[RootCause] | Input "DataLength" field is used for data size, but this field is not valid for fixed-size data change
[Solution] | Added code to determine data size based on input command byte
[Files] | SmbiosDMIEditFunc.c - File version: 54
[TAG] | EIP96064
[Category] | Bug Fix
[Severity] | Minor
[Symptom] | SMBIOS: DmiEdit support creates NVRAM variables with names of incorrect length
[RootCause] | Swprintf_s function creates 15 characters variable name with NULL terminator in last byte
[Solution] | Use Swprintf function instead
[Files] | Smbios.c - File version: 135
 | SmbiosDMIEditFunc.c - File version: 55
 | SmbiosNvramFunc.c - File version: 8
[TAG] | EIP99697
[Category] | Improvement
[Description] | To make a generic fix for the SMBIOS type 19 problem (see parent EIP 98861)
[Files] | Smbios.c: File version: 136
[TAG] | EIP100134
[Category] | Bug Fix
[Severity] | Minor
[Symptom] | SMBIOS type 17 dimm Rank information is not correct
[RootCause] | Error in function "DynamicUpdateMemoryData"
[Solution] | For DDR3, ranking information is at SPD byte 7 bits 5-3. Code has been added to properly shift the value being read before it is used
[Files] | Smbios.c - File version: 137
[TAG] | EIP101114
[Category] | Bug Fix
[Severity] | Normal
[Symptom] | System got an assert and hung after updated Smbios -031 to -032 label
[RootCause] | Bug in "SmbiosPiGetNextStructure" function
[Solution] | Revised "SmbiosPiGetNextStructure" function
[Files] | Smbios.c - File version: 138
    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 22 (Portable Battery) - All data fields
  • Type 39 (System Power Supply) - All data fields
    •
    Unit Testing:
    Platform: SugarBay
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot
    •
    Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results
    4.6.5.1_SMBIOS_32
    New features added in this label:
  • Multiple Smbios Type 2 support
  • Flash Memory Type 16 & 17 support
  • Added EFI_SMBIOS_DMIEDIT_PROTOCOL to support new AMI DMIEdit utility that can update Smbios structures without using SMI
  • Multiple Smbios Type 39 support
    •
    General Bug Fixes:
  • EIP76832 - On 4641 Core after Updating to 4.6.3_SMBIOS_31 and adding 4.6.5.1_ForwCompatibility_01 system asserts in Smbios64.Entry()
  • EIP81514 - Wrong handle number assigned to the structure when adding structure with a specific handle number using Smbios "Add" protocol
  • EIP81171 - Smbios->GetNext function fail when type is NULL
  • EIP81469 - SMBIOS protocol didn't compatible with PI1.1
  • EIP84942 - Incorrect "next handle" returned by Smbios->GetNext function
  • EIP86487 - AMIDEDOS update Type 3 Asset Tag failed
  • EIP86776 - Build error if "OEM_STRING_INFO" token is set to "0"
  • EIP81954 - WriteOnceTable is not supported when SMBIOS_DMIEDIT_DATA_LOC is 2
  • EIP89994 - UpdateSmbiosTable function in SmbiosDMIEdit.c seems have problem to handle
  • EIP92073 - "write once" not updating properly for multiple instances of the same structure type using AMI DmiEdit tool
    •
    EIP addressed in this label:
  • EIP63922 - After udpate SMBIOS to v30, system hang at CKP 0xA0 if DEBUG_MODE = 1. Note: Changes made for TMP usage of Smbios.
  • EIP76832 - On 4641 Core after Updating to 4.6.3_SMBIOS_31 and adding 4.6.5.1_ForwCompatibility_01 system asserts in Smbios64.Entry()
  • EIP78619 - Customer and project name in SmbiosDMIEdit.c file
  • EIP78790 - Locating LegacyRegion2 Protocol fails in SMBIOS31 when Bios is Built with PI 1.1 or lesser
  • EIP78264 - SMBOS Type 2 (Spec 2.7.1) - No multiple type 2 support
  • EIP81010 - Smbios type 13 only supports a subset of languages supported by the CORE
  • EIP81514 - Wrong handle number assigned to the structure when adding structure with a specific handle number using Smbios "Add" protocol
  • EIP81171 - Smbios->GetNext function fail when type is NULL
  • EIP81469 - SMBIOS protocol didn't compatible with PI1.1
  • EIP84942 - Incorrect "next handle" returned by Smbios->GetNext function
  • EIP84370 - Flash memory(type 16 and 17) on aptio
  • EIP86487 - AMIDEDOS update Type 3 Asset Tag failed
  • EIP86776 - Build error if "OEM_STRING_INFO" token is set to "0"
  • EIP81954 - WriteOnceTable is not supported when SMBIOS_DMIEDIT_DATA_LOC is 2
  • EIP88664 - Need tool to update smbios information
  • EIP92170 - Adding DmiEdit support for multiple instances of Smbios type 39 structure to match with AMI DmiEdit tool
  • EIP89994 - UpdateSmbiosTable function in SmbiosDMIEdit.c seems have problem to handle
  • EIP92073 - "write once" not updating properly for multiple instances of the same structure type using AMI DmiEdit tool
    •
    Files changed:

        [TAG]		EIP63922
        [Category]		Improvement
        [Description]	After udpate SMBIOS to v30, system hang at CKP 0xA0 if DEBUG_MODE = 1. Note: Changes made for TMP usage of Smbios.
        [Files]		Smbios.c - File version: 134

        [TAG]		EIP76832
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		On 4641 Core after Updating to 4.6.3_SMBIOS_31 and adding 4.6.5.1_ForwCompatibility_01 system asserts in Smbios64.Entry()
        [RootCause]		Problem caused by a redundant FreePool call in UpdateStructuresWithNvramData function
        [Solution]		Removed the redundant FreePool call in UpdateStructuresWithNvramData function
        [Files]		Smbios.c - File version: 121

        [TAG]		EIP78619
        [Category]		Improvement
        [Description]	Customer and project name in SmbiosDMIEdit.c file
        [Files]		SmbiosDMIEdit.c - File version: 20

        [TAG]		EIP78790
        [Category]		Improvement
        [Description]	Locating LegacyRegion2 Protocol fails in SMBIOS31 when Bios is Built with PI 1.1 or lesser
        [Files]		Smbios.c - File version: 122
            Smbios.dxs - File version: 13

        [TAG]		EIP78264
        [Category]		Improvement
        [Description]	SMBOS Type 2 (Spec 2.7.1) - No multiple type 2 support
        [Files]		Smbios.c - File version: 123
            Smbios.h - File version: 22
            Smbdata.mac - File version: 30
            Smbdesc.def - File version: 17
            SmbiosStaticData.sdl - File version: 29

        [TAG]		EIP81010
        [Category]		Improvement
        [Description]	Smbios type 13 only supports a subset of languages supported by the CORE
        [Files]		Smbios.c - File version: 124

        [TAG]		EIP81514
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		Wrong handle number assigned to the structure when adding structure with a specific handle number using Smbios "Add" protocol
        [RootCause]		Handle number is not updated when "Add" protocol is called with a specific handle number.
        [Solution]		Change code to update handle number
        [Files]		Smbios.c - File version: 125

        [TAG]		EIP81171
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		Smbios->GetNext function fail when type is NULL
        [RootCause]		GetNext function does not checked for Type pointer
        [Solution]		Added code to check for Type pointer in GetNext function
        [Files]		Smbios.c - File version: 126

        [TAG]		EIP81469
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		SMBIOS protocl didn't compatible with PI1.1
        [RootCause]		PI1.1 protocol functions incorrectly added after AMI functions of Smbios protocols.
        [Solution]		Moved PI1.1 protocol functions to the top of the protocol.
        [Files]		Smbios.c - File version: 127
            Smbios.h - File version: 23

        [TAG]		EIP84942
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		Incorrect "next handle" returned by Smbios->GetNext function
        [RootCause]		Next handle incorrectly return with next sequential record handle.
        [Solution]		Modified code to return next record handle having the same input type.
        [Files]		Smbios.c - File version: 128

        [TAG]		EIP84370
        [Category]		NEW FEATURE
        [Description]	Flash memory(type 16 and 17) on aptio
        [Files]		Smbdata.mac - File version: 32
            SmbiosStaticData.asm - File version: 10
            SmbiosStaticData.sdl - File version: 31
            Smbios.c - File version: 129
            Smbios.mak - File version: 9
            Smbios.h - File version: 24

        [TAG]		EIP86487
        [Category]		Bug Fix
        [Severity]		Critical
        [Symptom]		AMIDEDOS update Type 3 Asset Tag failed
        [RootCause]		Incorrectly checking for empty string size
        [Solution]		Corrected code
        [Files]		Smbios.c - File version: 130

        [TAG]		EIP86776
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		Build error if "OEM_STRING_INFO" token is set to "0"
        [RootCause]		SMBIOS_OEM_STRINGS_INFO definition is used even when OEM_STRING_INFO is disabled.
        [Solution]		Removed reference to "SMBIOS_OEM_STRINGS_INFO" in "GetStructureLength" function (not really needed).
        [Files]		Smbios.c - File version: 131
            SmbiosDMIEditFunc.c - File version: 49

        [TAG]		EIP81954
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		WriteOnceTable is not supported when SMBIOS_DMIEDIT_DATA_LOC is 2
        [RootCause]		WriteOnce is not properly checked
        [Solution]		Changes added to check for WriteOnce status
        [Files]		SmbiosDmiEdit.c - File version: 21
            SmbiosDMIEditFunc.c - File version: 50

        [TAG]		EIP88664
        [Category]		NEW FEATURE
        [Description]	Need tool to update smbios information
        [Files]		SmbiosDMIEdit.c - File version: 22
            SmbiosDMIEdit.h - File version: 13
            SmbiosDMIEdit.sdl - File version: 7
            SmbiosDMIEditFunc.c - File version: 51

        [TAG]		EIP92170
        [Category]		Improvement
        [Description]	Adding DmiEdit support for multiple instances of Smbios type 39 structure to match with AMI DmiEdit tool
        [Files]		Smbios.h - File version: 25
            Smbios.c - File version: 132 & 133
            SmbiosStaticData.sdl - File version: 32

        [TAG]		EIP92073
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		"write once" not updating properly for multiple instances of the same structure type using AMI DmiEdit tool
        [RootCause]		Write-once implementation only supported single instance of a structure.
        [Solution]		Changes made to support more than one instance of a given structure.
        [Files]		SmbiosDMIEdit.h - File version: 14
            SmbiosDMIEditFunc.c - File version: 52

        [TAG]		EIP89994
        [Category]		Bug Fix
        [Severity]		Important
        [Symptom]		UpdateSmbiosTable function in SmbiosDMIEdit.c seems have problem to handle
        [RootCause]		Data not checked for cross boundary
        [Solution]		Added code to check for cross boundary and update flash block accordingly.
        [Files]		SmbiosDMIEditFunc.c - File version: 53
    Known issues and limitations in this label:
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 22 (Portable Battery) - All data fields
  • Type 39 (System Power Supply) - All data fields
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.5.1_DH55HC_04
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot
    •
    Validation Testing:
    BQA TEST RESULTS
    Quality Assurance Test Results
    Quality Assurance Test Results
    4.6.3_SMBIOS_31
    New features added in this label:
  • Allow SMBIOS Type 22 to be modified using DMIEdit
  • Allow Smbios Type 2 Location field and Type 3 SKU Number field to be updated by dmieditwingui tool
    •
    General Bug Fixes:
  • EIP63920 - uEFI OS can't support DMI edit tool
  • EIP65551 - There is an issue in adding a new table to SMBIOS by using PI 1.1 protocol
  • EIP66223 - Status check is missing from Code that tries to call LoadRealModeFileSection()
    •
    EIP addressed in this label:
  • EIP63920 - uEFI OS can't support DMI edit tool
  • EIP65551 - There is an issue in adding a new table to SMBIOS by using PI 1.1 protocol
  • EIP64029 - Allow SMBIOS Type 22 to be modified using DMIEdit
  • EIP66223 - Status check is missing from Code that tries to call LoadRealModeFileSection()
  • EIP60077 - BSP waits for all Aps forever when SmbiosAddStrucByHandle () function is called from SMM
  • EIP65648 - Update SMBIOS eModules for uEFI 2.3.1 / PI 1.2 compliance
  • EIP68202 - Allow Smbios Type 2 Location field and Type 3 SKU Number field to be updated by dmieditwingui tool
  • EIP71370 - Customer names in source files
  • EIP70095 - Microsoft CSM Opt-Out feature implementation
  • EIP73018 - 'FuncBlock' used on line 561, conditionally not set
  • EIP73039 - Data->StructureData[i] at line 1780, 1809
  • EIP72671 - Smbios Core Source will not be compiled if it is placed above SmbiosBoard component in VEB (comment 29)
  • EIP74579 - Update SMBIOS moudule to let AMDELNX support SMBIOS spec 2.7 (remove the 64 characters string limitation)
    •
    Files changed:

        [TAG]		EIP63920
        [Category]		Bug Fix
        [Severity]		Non-Urgent
        [Symptom]		uEFI OS can't support DMI edit tool
        [RootCause]		UEFI OS runs in virtual memory mode. So call to GetVariale will crash
        [Solution]		Added call to InitSmmHandle so pRS will be properly converted per Runtime Services Table in SMM mode
        [Files]		SmbiosDMIEdit.c - File version: 17

        [TAG]		EIP65551
        [Category]		Bug Fix
        [Severity]		Non-Urgent
        [Symptom]		There is an issue in adding a new table to SMBIOS by using PI 1.1 protocol
        [RootCause]		SmbiosHandle parameter is not updated with assigned handle number
        [Solution]		Update SmbiosHandle parameter with assigned handle number
        [Files]		Smbios.c - File version: 112

        [TAG]		EIP64029
        [Category]		NEW FEATURE
        [Description]	Allow SMBIOS Type 22 to be modified using DMIEdit
        [Files]		Smbios.h - File version: 19
            Smbios.c - File version: 113
            SmbiosDmieditFunc.c - File version: 42

        [TAG]		EIP66223
        [Category]		Bug Fix
        [Severity]		Immediate/Critical
        [Symptom]		Status check is missing from Code that tries to call LoadRealModeFileSection()
        [RootCause]		Status check is missing
        [Solution]		Added code to check for status after call to LoadRealModeFileSection()
        [Files]		Smbios.c - File version: 114

        [TAG]		EIP60077
        [Category]		Improvement
        [Description]	BSP waits for all Aps forever when SmbiosAddStrucByHandle () function is called from SMM
        [Files]		Smbios.c - File version: 115

        [TAG]		EIP65648
        [Category]		Improvement
        [Description]	Update SMBIOS eModules for uEFI 2.3.1 / PI 1.2 compliance
        [Files]		Smbios.c - File version: 116
            Smbios.dxs - File version: 10
            SmbiosDMIEdit.c - File version: 18
            SmbiosDMIEditFunc.c - File version: 43
            SmbiosGetFlashData.c - File version: 9
            SmbiosGetFlashData.dxs - File version: 5

        [TAG]		EIP68202
        [Category]		NEW FEATURE
        [Description]	Allow Smbios Type 2 Location field and Type 3 SKU Number field to be updated by dmieditwingui tool
        [Files]		Smbios.c - File version: 117
            SmbiosDMIEditFunc.c - File version: 44
            Smbdata.mac - File version: 29
            Smbios.h - File version: 20

        [TAG]		EIP71370
        [Category]		Improvement
        [Description]	Customer names in source files
        [Files]		Smbios.c - File version: 118

        [TAG]		EIP70095
        [Category]		Improvement
        [Description]	Microsoft CSM Opt-Out feature implementation
        [Files]		Smbios.dxs - File version: 11

        [TAG]		EIP73018
        [Category]		Improvement
        [Description]	'FuncBlock' used on line 561, conditionally not set
        [Files]		SmbiosDMIEditFunc.c - File version: 46

        [TAG]		EIP73039
        [Category]		Improvement
        [Description]	Data->StructureData[i] at line 1780, 1809
        [Files]		SmbiosDMIEditFunc.c - File version: 47

        [TAG]		EIP72671
        [Category]		Improvement
        [Description]	Smbios Core Source will not be compiled if it is placed above SmbiosBoard component in VEB (comment 29)
        [Files]		SmbiosDMIEditBoard.sdl - File version: 2
            SMBios.sdl - File version: 29

        [TAG]		EIP74579
        [Category]		Improvement
        [Description]	Update SMBIOS moudule to let AMDELNX support SMBIOS spec 2.7 (remove the 64 characters string limitation)
        [Files]		Smbios.h - File version: 21
            SmbiosStaticData.sdl - File version: 28
            Smbios.c - File version: 120
            SMBios.dxs - File version: 12
            SmbiosDMIEdit.sdl - File version: 6
            SmbiosDMIEdit.h - File version: 12
            SmbiosDMIEditFunc.c - File version: 48
            SmbiosNvram.c - File version: 7
            SmbiosFlashData.sdl - File version: 7
    Known issues and limitations in this label:
  • String size is limitted to 64 characters
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 2 (Base Board Information) - Location in Chassis (offset 0x0A)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 3 (System Enclosure or Chassis) - SKU Number (offset 0x15 + n*m)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 22 (Portable Battery) - All data fields
  • Type 39 (System Power Supply) - All data fields
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.5.1_DH55HC_04
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot
  • Run Amidelnx in SUSE 11.4 to make changes to some structures and verify structures updated correctly in the current and in the next boot
  • Run DMIEdit to make changes to some structures and verify structures updated correctly, using any Smbios browser, in UEFI Windows 2008 and in next boot
    •
    4.6.3_SMBIOS_30
    New features added in this label:
  • Dynamically update SMBIOS Type24 (Hardware Security) according to Administrator/User password setup question.
  • Provide generic support in SMBIOS module to include build time EC version
  • SMBIOS 2.7.1 support
  • Allow SMBIOS Type 39 to be modified using DMIEdit
  • Added PRESERVE_LIB into OFBDLISTLIB for SMBIOS private date preservation
    •
    General Bug Fixes:
  • EIP50564 - BIOS can't keep DMI data after flash BIOS with /p /b /n /r parameters
  • EIP52709 - After we update SMBIOS Type11 using SMBCFG.exe in debug mode and then reboot, system will hang up
  • EIP54264 - Data is assumed valid without checking after some GetVariable calls
  • EIP53939 - SMBIOS DMIEdit Driver always assumes FLASH_BLOCK_SIZE = 64KB
  • EIP58832 - [Type 11]Oem String can't be updated from nvram if string number >8
  • EIP58171 - TABLE_INFO structure of SmbiosDMIEdit is not backward compatible for AFU preserve DMI structure feature.
  • EIP57758 - DMIEDIT tool shows error message "Cann't update Smbios Date with PNP function on current system!!" "Error getting DMI data!!(Error code : 12000E)"
  • EIP60846 - [SMBIOS build error after disable "MEMORY_DEVICE_INFO"
  • EIP57961 - Can't run AMIDEDOS.exe to flash UUID & serial number
    •
    EIP addressed in this label:
  • EIP50564 - BIOS can't keep DMI data after flash BIOS with /p /b /n /r parameters
  • EIP52709 - After we update SMBIOS Type11 using SMBCFG.exe in debug mode and then reboot, system will hang up
  • EIP54264 - Data is assumed valid without checking after some GetVariable calls
  • EIP53939 - SMBIOS DMIEdit Driver always assumes FLASH_BLOCK_SIZE = 64KB
  • EIP57586 - Build error in SMBios module when CSM_SUPPORT token turned OFF
  • EIP57144 - Allow SMBIOS Type 39 to be modified using DMIEdit
  • EIP58832 - [Type 11]Oem String can't be updated from nvram if string number >8
  • EIP58171 - TABLE_INFO structure of SmbiosDMIEdit is not backward compatible for AFU preserve DMI structure feature.
  • EIP57758 - DMIEDIT tool shows error message "Cann't update Smbios Date with PNP function on current system!!" "Error getting DMI data!!(Error code : 12000E)"
  • EIP60836 - [SMBIOS] Need adding PRESERVE_LIB into OFBDLISTLIB for SMBIOS private date preservation
  • EIP60846 - [SMBIOS build error after disable "MEMORY_DEVICE_INFO"
  • EIP57961 - Can't run AMIDEDOS.exe to flash UUID & serial number
  • EIP61776 - SMBIOS Type 17 "Type Detail" Registered/Unbuffered, needs to be dynamically updated
    •
    Files changed:

        [TAG]		EIP50564
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		BIOS can't keep DMI data after flash BIOS with /p /b /n /r parameters
        [RootCause]		Side effect of previous changes (NVRAM variable name format has been changed)
        [Solution]		Problem has been fixed with code changes
        [Files]		SmbiosNvramFunc.c - File version: 4

        [TAG]		EIP52709
        [Category]		Bug Fix
        [Severity]		Minor
        [Symptom]		After we update SMBIOS Type11 using SMBCFG.exe in debug mode and then reboot, system will hang up
        [RootCause]		FreePool in UpdateSmbiosTable function is called with a pointer pointing to an allocated memory location
            plus some offset the first time.
        [Solution]		Skip FreePool call in UpdateSmbiosTable function the first time. This memory is freed later in
            SmbiosDriverEntryPoint function.
        [Files]		Smbios.c - File version 103

        [TAG]		EIP54264
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		Data is assumed valid without checking after some GetVariable calls
        [RootCause]		No error checking
        [Solution]		Problem has been fixed with code changes
        [Files]		SmbiosNvramFunc.c - File version: 5
            SmbiosDMIEditFunc.c - File version: 38

        [TAG]		EIP53939
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		SMBIOS DMIEdit Driver always assumes FLASH_BLOCK_SIZE = 64KB
        [RootCause]		Block size was assumed to be 64K
        [Solution]		Problem has been fixed with code changes
        [Files]		SmbiosDMIEdit.c - File version: 16
            SmbiosDMIEditFunc.c - File version: 39

        [TAG]		EIP57586
        [Category]		Improvement
        [Description]	Build error in SMBios module when CSM_SUPPORT token turned OFF
        [Files]		Smbios.c - File version: 104

        [TAG]		EIP57144
        [Category]		NEW FEATURE
        [Description]	Allow SMBIOS Type 39 to be modified using DMIEdit
        [Files]		SmbiosBoard.c - File version: 26
            Smbios.h - File version: 17
            SmbiosDynamicData.h - File version: 29
            Smbios.c - File version: 105
            SmbiosDmieditFunc.c - File version: 40
            SmbiosNvramFunc.c - File version: 6

        [TAG]		EIP58832
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		[Type 11]Oem String can't be updated from nvram if string number >8
        [RootCause]		Size of variable used to test the strings was wrong.
        [Solution]		Corrected the size of the variable.
        [Files]		Smbios.c - File version: 106

        [TAG]		EIP58171
        [Category]		Bug Fix
        [Severity]		Important
        [Symptom]		TABLE_INFO structure of SmbiosDMIEdit is not backward compatible for AFU preserve DMI structure feature.
        [RootCause]		TABLE_INFO structure of SmbiosDMIEdit is not backward compatible.
        [Solution]		New TABLE_INFO structure defined for backward compatibility and support added.
        [Files]		Smbios.c - File version: 107
            SmbiosDMIEdit.h - File version: 11
            SmbiosDMIEditFunc.c - File version: 41
            SmbiosGetFlashData.c - File version: 8

        [TAG]		EIP57758
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		DMIEDIT tool shows error message "Cann't update Smbios Date with PNP function on current system!!"
            "Error getting DMI data!!(Error code : 12000E)"
        [RootCause]		Because Smbios Structure Table Entry Point header is relocated on ReadyToBoot, it could not be found at runtime.
        [Solution]		Allocate runtime memory for Smbios Structure Table Entry Point header on Smbios driver entry point.
        [Files]		Smbios.c - File version: 108
            Smbios.dxs - File version: 9

        [TAG]		EIP60836
        [Category]		NEW FEATURE
        [Description]	[SMBIOS] Need adding PRESERVE_LIB into OFBDLISTLIB for SMBIOS private date preservation
        [Files]		Smbios.sdl - File version: 26
            SmbiosDMIEdit.sdl - File version: 5

        [TAG]		EIP60846
        [Category]		Bug Fix
        [Severity]		Normal
        [Symptom]		SMBIOS build error after disable "MEMORY_DEVICE_INFO"
        [RootCause]		Local variable "SmbDmap" is unreferenced when MEMORY_DEVICE_INFO token is turned off.
        [Solution]		Added conditional compilation check around "SmbDmap" variable.
        [Files]		Smbios.c - File version: 109

        [TAG]		EIP57961
        [Category]		Bug Fix
        [Severity]		Non-Urgent
        [Symptom]		Can't run AMIDEDOS.exe to flash UUID & serial number
        [RootCause]		E000-F000 is locked during E000 memory allocation for Smbios table.
        [Solution]		Unlock E000 prior to allocation and lock it afterward.
        [Files]		Smbios.c - File version: 110

        [TAG]		EIP61776
        [Category]		Improvement
        [Description]	SMBIOS Type 17 "Type Detail" Registered/Unbuffered, needs to be dynamically updated
        [Files]		Smbios.sdl - File version: 28
            SmbiosDynamicData.h - File version: 30
            Smbios.c - File version: 111
    Known issues and limitations in this label:
  • String size is limitted to 64 characters
  • The followings are structure types and offset fields that can be updated by AMI DMIEdit utility or Smbios Bios PnP function 52:
  • Type 0 (Bios Information) - Bios Version (offset 0x05)
  • Type 0 (Bios Information) - Bios Release Date (offset 0x08)
  • Type 1 (System Information) - Manufacturer (offset 0x04)
  • Type 1 (System Information) - Product Name (offset 0x05)
  • Type 1 (System Information) - Version (offset 0x06)
  • Type 1 (System Information) - Serial Number (offset 0x07)
  • Type 1 (System Information) - UUID (offset 0x08)
  • Type 1 (System Information) - SKU Number (offset 0x19)
  • Type 1 (System Information) - Family (offset 0x1A)
  • Type 2 (Base Board Information) - Manufacturer (offset 0x04)
  • Type 2 (Base Board Information) - Product (offset 0x05)
  • Type 2 (Base Board Information) - Version (offset 0x06)
  • Type 2 (Base Board Information) - Serial Number (offset 0x07)
  • Type 2 (Base Board Information) - Asset Tag (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - Manufacturer (offset 0x04)
  • Type 3 (System Enclosure or Chassis) - Type (offset 0x05)
  • Type 3 (System Enclosure or Chassis) - Version (offset 0x06)
  • Type 3 (System Enclosure or Chassis) - Serial Number (offset 0x07)
  • Type 3 (System Enclosure or Chassis) - Asset Tag Number (offset 0x08)
  • Type 3 (System Enclosure or Chassis) - OEM-defined (offset 0x0D)
  • Type 11 (OEM Strings)
  • Type 12 (System Configuration Options)
  • Type 39 (System Power Supply) - Power Unit Group (offset 0x04)
  • Type 39 (System Power Supply) - Location (offset 0x05)
  • Type 39 (System Power Supply) - Device Name (offset 0x06)
  • Type 39 (System Power Supply) - Manufacturer (offset 0x07)
  • Type 39 (System Power Supply) - Serial Number (offset 0x08)
  • Type 39 (System Power Supply) - Asset Tag Number (offset 0x09)
  • Type 39 (System Power Supply) - Model Part Number (offset 0x0A)
  • Type 39 (System Power Supply) - Revision Level (offset 0x0B)
  • Type 39 (System Power Supply) - Max Power Capacity (offset 0x0C)
  • Type 39 (System Power Supply) - Power Supply Characteristics (offset 0x0E)
  • Type 39 (System Power Supply) - Input Voltage Probe Handle (offset 0x10)
  • Type 39 (System Power Supply) - Cooling Device Handle (offset 0x12)
  • Type 39 (System Power Supply) - Input Current Probe Handle (offset 0x14)
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.4.1_DH55HC_04
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Amideefi to make changes to some structures and verify structures updated correctly, using any Smbios browser, in EFI Shell and in next boot
  • Run Amidewin to make changes to some structures and verify structures updated correctly, using any Smbios browser, in Windows and in next boot
  • Run Smbcfg to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run DMIEdit to make changes to some structures and verify structures updated correctly, using any Smbios browser, in UEFI Windows 2008 and in next boot
    •
    4.6.1_ALPHA_01.29
    New features added in this label:
  • None
    • General Bug Fixes:
  • EIP42938 - The SMBIOS string field cannot be successfully updated if it was programmed to Null by the 3-party SMBIOS tool
  • EIP47697 - SMBIOS Type 0 BIOS version string update does not retain over Reboot
  • EIP48415 - Logic Operator Error in Smbios.c
  • EIP44236 - SMBIOS type 4 Processor Version is incorrect
  • EIP49728 - SMBIOS Type 10 Data incorrect
    •
    EIP addressed in this label:
  • EIP41560 - DMIEDIT modified values are not preserved in reboot
  • EIP42938 - The SMBIOS string field cannot be successfully updated if it was programmed to Null by the 3-party SMBIOS tool
  • EIP46936 - Generic Smbios module should have the support to disable SMBIOS memory update
  • EIP47697 - SMBIOS Type 0 BIOS version string update does not retain over Reboot
  • EIP46175 - Redesign SMBIOS to avoid redundant SPD reading
  • EIP48415 - Logic Operator Error in Smbios.c
  • EIP44236 - SMBIOS type 4 Processor Version is incorrect
  • EIP48952 - Customer Request for SMBIOS Type 16 MemoryErrorCorrection field to be filled out
  • EIP49728 - SMBIOS Type 10 Data incorrect
    •
    Files changed:

        [TAG]		EIP41560
        [Category]		Improvement
        [Description]	DMIEDIT modified values are not preserved in reboot
        [Files]		Smbios.c - File version: 92
            Smbios.sdl - File version: 23
            SmbiosBoard.c - File version: 21
            SmbiosBoard.mak - File version: 9

        [TAG]		EIP42938
        [Category]		BUG FIX
        [Severity]		Critical
        [Symptom]		The SMBIOS string field cannot be successfully updated if it was programmed to Null by the 3-party SMBIOS tool
        [RootCause]		BIOS did not have support for NULL strings
        [Solution]		Problem has been fixed with code changes
        [Files]		Smbios.c - File version: 93
            SmbiosDMIEditFunc.c - File version: 36
            SmbiosGetFlashData.c - File version: 7
            SmbiosDMIEdit.h - File version: 16
            SmbiosFlashData.sdl - File version: 6

        [TAG]		EIP46936
        [Category]		Improvement
        [Description]	Generic Smbios module should have the support to disable SMBIOS memory update
        [Files]		Smbios.c - File version: 94
            Smbios.sdl - File version: 24
            SmbiosBoard.c - File version: 22
            SmbiosDynamicData.h - File version: 25

        [TAG]		EIP47697
        [Category]		BUG FIX
        [Severity]		Normal
        [Symptom]		SMBIOS Type 0 BIOS version string update does not retain over Reboot
        [RootCause]		Wrong index used for StringSet array.
        [Solution]		Corrected index.
        [Files]		Smbios.c - File version: 95

        [TAG]		EIP46175
        [Category]		Improvement
        [Description]	Redesign SMBIOS to avoid redundant SPD reading
        [Files]		Smbios.c - File version: 98
            SmbiosDynamicData.h - File version: 27

        [TAG]		EIP48415
        [Category]		BUG FIX
        [Severity]		Normal
        [Symptom]		Logic Operator Error in Smbios.c
        [RootCause]		Wrong operator used.
        [Solution]		Change "Bitwise AND" operator to "Logical AND".
        [Files]		Smbios.c - File version: 97

        [TAG]		EIP44236
        [Category]		BUG FIX
        [Severity]		Normal
        [Symptom]		SMBIOS type 4 Processor Version is incorrect
        [RootCause]		Type 4 Version string is not resized as updated.
        [Solution]		Added code to replace the Version strings as updated. Same also applied to Manufacturer string.
        [Files]		Smbios.c - File version: 99
            SmbiosBoard.c - File version: 23

        [TAG]		EIP48952
        [Category]		Improvement
        [Description]	Customer Request for SMBIOS Type 16 MemoryErrorCorrection field to be filled out
        [Files]		Smbios.c - File version: 100
            SmbiosDynamicData.h - File version: 28

        [TAG]		EIP49728
        [Category]		BUG FIX
        [Severity]		Normal
        [Symptom]		SMBIOS Type 10 Data incorrect
        [RootCause]		Macro to create Type 10 structure is incorrect.
        [Solution]		Modified macro to create one Type 10 Entry containing the number of ONBOARD_DEVICES.
        [Files]		Smbdata.mac - File version: 25
            Smbios.c - File version: 101
    Known issues and limitations in this label:
  • Same as 4.6.1_ALPHA_01.28 label
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.4.1_DH55HC_04
  • Boot to DOS and verify proper structures using any Smbios browser
  • Run Amidedos to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
  • Run Smbcfg to make changes to some structures and verify structures updated correctly, using any Smbios browser, in DOS and in next boot
    •
    4.6.1_ALPHA_01.28
    New features added in this label:
  • EIP 43278 - SMBIOS specification version 2.7.0 support
    • General Bug Fixes:
  • EIP42938 - The SMBIOS string field cannot be successfully updated if it was programmed to Null by the 3-party SMBIOS tool
  • EIP47697 - SMBIOS Type 0 BIOS version string update does not retain over Reboot
  • EIP48415 - Logic Operator Error in Smbios.c
  • EIP44236 - SMBIOS type 4 Processor Version is incorrect
  • EIP49728 - SMBIOS Type 10 Data incorrect
    •
    EIP addressed in this label:
  • EIP42457 - SMBIOS data in not legacy boot (when boot to EFI OS)
  • EIP46394 - Incorrect variable size for GetVariable() usage in Smbios module
  • EIP46454 - SMBIOS hangs after copying memory to below 1MB after installing type 4 structure (This only happened with new changes to let CPU module create Type 4 structure instead of the Smbios module)
  • EIP45855 - SMBIOS Type1 will be removed to the latest if it updated
  • EIP43278 - SMBIOS 2.7 requirement
    •
    Files changed:

        [TAG]		EIP42457
        [Category]		Improvement
        [Description]	SMBIOS data in not legacy boot (when boot to EFI OS)
        [Files]		Smbios.c

        [TAG]		EIP46394
        [Category]		BUG FIX
        [Severity]		Important
        [Symptom]		Incorrect variable size for GetVariable() usage in Smbios module
        [RootCause]		GetVariable is called with incorrect "DataSize" type.
        [Solution]		Corrected "DataSize" type in all GetVariable calls.
        [Files]		Smbios.c, SmbiosDMIEditFunc.c, SmbiosNvramFunc.c

        [TAG]		EIP46454
        [Category]		Improvement
        [Description]	SMBIOS hangs after copying memory to below 1MB after installing type 4 structure
            (This only happened with new changes to let CPU module create Type 4 structure instead of the Smbios module).
        [Files]		Smbios.c

        [TAG]		EIP45855
        [Category]		Improvement
        [Description]	[SMBIOS] Type1 will be removed to the latest if it updated.
        [Files]		Smbios.sdl, Smbios.c

        [TAG]		EIP43278
        [Category]		Function Request
        [Severity]		Normal
        [Description]	SMBIOS 2.7 requirement
        [Files]		Smbios.c
    Known issues and limitations in this label:
  • Plug-and-Play functions 50 through 52 are not removed in order to support DMIEdit utility.
  • String size limit of 64 characters will be removed in the next release.
  • New Type 42 - Management Controller Host Interface - can not be statically generated due to its variable size. User needs to create this structure and add it to the Smbios table using the SmbiosAddStructure protocol
  • Ref. EIP42457 - To have SMBIOS Structure Table Entry Point in F000 segment in EFI OS, CSM module label 4.6.3.1_CSM.7.64_73 is required
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.4.1_DH55HC_04
  • Verify proper structures in DOS using any Smbios browser
  • Run DMIEdit (DOS) and verify structures updated properly using any Smbios browser. Reboot to DOS and verify structures remain updated
  • For EIP42457, verify SMBIOS Structure Table Entry Point with "_SM_" signature exists in F000 segment in DOS and in EFI Shell (using ITP)
  • for EIP46454, verify Type 4 and 7 structures are:
  • Created by the Smbios module, when SDL tokens CPU_MODULE_CREATE_SMBIOS_TABLES does not exist and PROCESSOR_INFO = 1
  • Not created, when SDL tokens CPU_MODULE_CREATE_SMBIOS_TABLES = 0 and PROCESSOR_INFO = 0
  • Created by the Smbios module, when SDL tokens CPU_MODULE_CREATE_SMBIOS_TABLES = 0 and PROCESSOR_INFO = 1
  • Created by the CPU module, when SDL tokens CPU_MODULE_CREATE_SMBIOS_TABLES = 1 and PROCESSOR_INFO = 0
  • Created by the CPU module, when SDL tokens CPU_MODULE_CREATE_SMBIOS_TABLES = 1 and PROCESSOR_INFO = 1
    •
    4.6.1_ALPHA_01.27
    New features added in this label:
  • EIP 37736 - Added Smbios PI 1.1 support
  • EIP 37608 - Added some memory manufacturer names to the JEDEC table
    •
    General Bug Fixes:
  • EIP 43695 - Fixed Type 13 string format to comply with Smbios specification
  • EIP 42187 - Changes added to close the Exxxx / F0000 shadow region after being opened for update
  • EIP 40634 - Remove environment variables "MAKEFILE" and "INCLUDE"
  • EIP 40313 - Removed CSM16_LOCATION token reference
  • EIP 39849 - Fixed some DMI utility, which uses PnP function calls, not working issue after type0 structure was updated by SmbiosWriteStructure() protocol
  • EIP 38010 - Added PnP function 52h commands 3 and 4 support
    •
    EIP addressed in this label:
  • EIP42457 - SMBIOS data in not legacy boot (when boot to EFI OS)
  • EIP46394 - Incorrect variable size for GetVariable() usage in Smbios module
  • EIP46454 - SMBIOS hangs after copying memory to below 1MB after installing type 4 structure (This only happened with new changes to let CPU module create Type 4 structure instead of the Smbios module)
  • EIP45855 - SMBIOS Type1 will be removed to the latest if it updated
  • EIP43278 - SMBIOS 2.7 requirement
    •
    Files changed:
  • Core\EM\SMBIOS\Smbios.c - (EIP 43695)(EIP 42187)(EIP 40313)(EIP 39849)(EIP 38010)(EIP 37736)(EIP 37608)
  • Core\EM\SMBIOS\Smbios.mak - (EIP 40634)
  • Core\EM\SMBIOS\SmbiosGetFlashData.mak - (EIP 40634)
  • Core\EM\SMBIOS\SmbiosDMIEdit.c - (EIP 38010)
  • Core\EM\SMBIOS\SmbiosDMIEditFunc.c - (EIP 38010)
  • Core\EM\SMBIOS\SmbiosDMIEdit.h - (EIP 38010)
  • Core\EM\SMBIOS\SmbiosDMIEdit.dxs - (EIP 38010)
    •
    Unit Testing:
    Platform: Piketon DH55HC - Project label: Internal_Only_4.6.4.1_DH55HC_04
  • Verify proper structures in DOS using any Smbios browser
  • Verify Smbios Type 0 structure can be updated using DMI.EXE utility
  • Verify Smbios Type 11 structure can be updated using DMIRW.EXE utility
    •
    4.6.1_ALPHA_01.26
    New features added in this label:
  • EIP 34939 - Changes made to dynamically create type 13 structure (BIOS Language Information) based on SUPPORTED_LANGUAGES token if enabled.
    •
    General Bug Fixes:
  • EIP 34502 - Corrected the issues listed in the Coverity Code and security analysis report
  • EIP 34379
  • Corrected a potential buffer overflow problem in UpdateStructuresWithNvramData function
  • Corrected a potential use of uninitialzied pointer in DynamicUpdateCpuData function
    •
  • Making sure the checksum is not calculated, else, the system hangs on reset after flash. FFS_CHECKSUM=0.
  • EIP 35486 - Corrected Type1 UUID update problem with customer utility (update by dword instead of block command)
  • EIP 34631 - Added conditional compile switch for Type 2, 3, 11, 12
  • EIP 37608 - Fixed incorrect memory type 17 Manufacturer field issue
    •
    Files changed:
  • Smbios.c, SmbiosFlashData.mak, SmbiosDMIEditFunc.c, SmbiosDMIEdit.mak
    •
    4.6.1_ALPHA_01.25
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • Hanging problem when UpdateSmbiosTable function is called to add a structure but it is found to be invalid. In this case, memory has not been allocated, but at the end of the function memory deallocation is called.
  • EIP 30837 - DMIEdit data not updated after being updated 5-6 times (when NVRAM is used to store DMIEdit data)
    •
    Files changed:
  • Smbios.c, SmbiosDMIEditFunc.c, SmbiosNvramFunc.c
    •
    4.6.1_ALPHA_01.24
    New features added in this label:
  • EIP 24878 - Added DMIEDIT support for Type 0 and Type 12 structures
    •
    General Bug Fixes:
  • EIP 25149 - Corrected build error when CSM support is not present
  • Fixed a duplicate handle problem in case a structure with handle = LastHandle was added by SmbiosAddStrucByHandle, and then another structure was added with SmbiosAddStructure.
  • EIP 23633 - Fixed the problem of missing the last character in the Manufacturer and Version strings of SMBIOS CPU Type 4
    •
    Files changed:
  • Smbios.c, SmbiosDMIEdit.h, SmbiosDMIEditFunc.c
    •
    4.6.1_ALPHA_01.23.2
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • EIP 23633 - Fixed the problem of missing the last character in the Manufacturer and Version strings of SMBIOS CPU Type 4.
    •
    Files changed:
  • Smbios.c
    •
    Unit Testing:
  • Boot to OS and use any SMBIOS browser to verify CPU Type 4data.
    •
    4.6.1_ALPHA_01.23.1
    EIP 22180 - No actual code change in this label. Only updated AMI / function headers and some code cleanup
    4.6.1_ALPHA_01.23
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • EIP EIP 20293 - Build error using new Fwbuild tool
    •
    Enhancement:
  • EIP EIP 22241 - Improvement of Aptio SMBIOS eModule for type 17
    •
    Files changed:
  • SmbiosFlashData.mak, Smbios.c, SmbiosDMIEditFunc.c
    •
    Unit Testing:
  • Boot to OS and use any SMBIOS browser to verify memory type 17 data.
    •
    4.6.1_ALPHA_01.22
    New features added in this label:
  • None
    •
    General Bug Fixes:
  • EIP 19115 - Changes made to return the SMBIOS table size in dmiStorageSize for SMBIOS PnP function 50h
    •
    Files changed:
  • SmbiosDMIEditFunc.c
    •
    Unit Testing:
  • SMBIOS PnP function 50h check - Run "Smbios2 /i" and verify "Storage Size" value is not 0.
  • SMBIOS PnP function 51h check - Run "Smbios2 /g 1" and check for correct data in structure.
  • SMBIOS PnP function 52h check – Run "DmiEdit (v1.10)". Use SMBIOS browser utility to verify the structures get updated correctly.
    •
    4.6.1_ALPHA_01.21
    New features added in this label:
  • EIP 18797, EIP 16965 - New option to save DMIEdit data in NVRAM in addition to FV_BB.
  • New functions to save and restore DMIEdit data (when the data storage is in NVRAM) prior to and after flashing using SMIFlash.
    •
    General Bug Fixes:
  • Fixed the problem updating the existing DMIEdit data when FV_MAIN is used for storage.
    •
    Miscellaneous
  • Removed unneeded functions (not supported by DMIEdit utility)
    •
    Files changed:
  • Smbios.c, SmbiosDMIEdit.sdl, SmbiosDMIEdit.dxs, SmbiosDMIEdit.h, SmbiosDMIEdit.c, SmbiosDMIEditFunc.c, SmbiosGetFlashData.sdl, SmbiosGetFlashData.mak, SmbiosFlashData.sdl, SmbiosDMIEdit.mak, SmbiosNvramFunc.c
    •
    Unit Testing:
    1. Build BIOS with SMBIOS_DMIEDIT_DATA_LOC token set to 0 to select FV_BB as storage location for DMIEdit data.
      1. Run DMIEdit v2.11 to update strings in System, Baseboard, and Chassis structures.
      2. Reboot system and use any SMBIOS browser to verify strings change in System, Baseboard, and Chassis structures.

    2. Set SMBIOS_PRESERVE_NVRAM token to 1 to preserve DMIEdit data in NVRAM
    3. Build BIOS with SMBIOS_DMIEDIT_DATA_LOC token set to 2 to select NVRAM as storage location for DMIEdit data.
      1. Run DMIEdit v2.11 to update strings in System, Baseboard, and Chassis structures.
      2. Reboot system and use any SMBIOS browser to verify strings change in System, Baseboard, and Chassis structures.

    4. Flash the BIOS using AFU v2.25 test utilities
    5. Restart system and verify strings in System, Baseboard, and Chassis structures remain unchanged as in step 3a and 3b above.
    4.6.1_ALPHA_01.20.1
  • Updated CHM file.
  • Checked in missing SmbiosDMIEditBoard.c32 and SmbiosDMIEditBoard.c64 files, and updated SmbiosDMIEditBoard.cif file.
    •
    4.6.1_ALPHA_01.20
  • Changes added for x32 and x64 binary support.
  • EIP 18370 - Fixed the hanging problem when only SMBIOS binary component is present
    •
    4.6.1_ALPHA_01.19.3
  • Fixed a bug calculating the number of rank for the attribute field for memory structure type 17.
  • Added code to fill in the Total Width and Data Width fields from SPD data for memory structure type 17.
    •
    4.6.1_ALPHA_01.19.2
  • Corrected build error when NUMBER_OF_BLOCKS is a large number.
  • Added GetFreeHandle, AddStructureByHandle, ReadStructureByType protocols.
  • Added a call to the OEM porting hook OemUpdate. OEM can make changes to the SMBIOS table in this hook.
    •
    4.6.1_ALPHA_01.19.1
  • Correct problem of Additional Info structure not updated when PORTABLE_BATTERY_INFO is enabled.
    •
    4.6.1_ALPHA_01.19
  • Added support for SMBIOS specification version 2.5 and 2.6.
  • Added dynamic table sizing.
  • Integrated code to update memory type 17 strings with SPD data.
    •
    4.6.1_ALPHA_01.18
  • Added Auto option for placing the SMBIOS table.
  • Corrected a build error in x64 bit mode.
    •
    4.6.1_ALPHA_01.17
  • Made changes to either put the SMBIOS table at E000 segment or above 1MB (selectable via SMBIOS_TABLE_E000 token)
  • Renamed shadow enable / disable functions.
    •
    4.6.1_ALPHA_01.16
  • Output SmbiosFlashData_SUPPORT token to header file. It is now used in Smbios.c
    •
    4.6.1_ALPHA_01.15
  • Corrected build error when either SmbiosDMIEdit_SUPPORT or SmbiosFlashData_SUPPORT SDL tokens is disabled.
  • Removed SmbiosDMIEdit.src file.
    •
    4.6.1_ALPHA_01.14
  • Corrected a build issue in 64 bit mode.
  • Fixed getting SMBIOS structure type 127 problem.
    •
    4.6.1_ALPHA_01.13
  • Fixed a problem updating battery data when BIOS is built with multiple battery structures but some of them are invalid during POST.
  • Rearranged the code flow in DynamicUpdateMemoryData.
  • In DynamicUpdateCpuData, use gSmbiosBoardProtocol->NumberOfCPU instead of NO_OF_PROCESSOR_SOCKETS to represent the number of processors in the system in case when project only has SMBIOS binary component.
  • Moved the "#if PORTABLE_BATTERY_INFO" to only enclose the DynamicUpdateBatteryData function.
  • In DynamicUpdateBatteryData, use gSmbiosBoardProtocol->NumberOfBatteries instead of NO_OF_PORTABLE_BATTERY to represent the number of batteries in the system in case when project only has SMBIOS binary component.
    •
    4.6.1_ALPHA_01.12
  • Changes made to support SMBIOS type 17 with multiple memory arrays.
    •
    4.6.1_ALPHA_01.11
  • Added support for 16-bit PnP SMBIOS function calls.
    •
    4.6.1_ALPHA_01.10
  • Synchronized with SMBIOS Core Source 4.6.1_ALPHA_01.10 label.
  • Fixed the hanging issue when BIOS is built with SMBIOS binary only and PORTABLE_BATTERY_INFO is set to OFF.
  • Fixed code to abort updating CPU related data if getting CPU data variable resulted in error.
  • Corrected build error when Type 18 is enabled.
  • Added conditional IF statement for DynamicUpdateOnboardDevData function to fix the build error in case ONBOARD_DEVICE_INFO is set to OFF.
  • Restore the UpdateEPSHeader call in the Addstructure and DeleteStructureByHandle functions.
  • Changes added to dynamically update Voltage field in Processor Information structure type 4.
  • Added code to dynamically update Portable Battery Data structure type 22.
  • Fixed a hanging problem with DMIEdit running on server2003 64bit SP2 - EIP 10754
  • Changes added to allow "Asset Tag" in Type 2 structure to be updated per EIP 11283.
  • SmiGpnv module part has been removed (moved to ErrorLogging module)
    •
    4.6.1_ALPHA_01.06
  • Changes added to dynamically update the Processor Information Type 4 Voltage field.
  • Added dynamic data update support for Portable Battery Data structure 22.
  • Added SmbiosUpdateHeader protocol.
    •
    4.6.1_ALPHA_01.05
  • SmiGpnv removed
  • Added changes to set memory type and speed to unknown for unoccupied memory slot.
  • Added support for GPNV PnP functions: 55h, 56h, 57h. The main procedures are in SMIGPNV module
    •
    4.6.1_ALPHA_01.04
  • Added value 13h in SmbiosStaticData.sdl to indicate DDR2 for MEMORY_DEVICE_TYPE token.
    •
    4.6.1_ALPHA_01.03
  • Fix for x64 build.
    •
    4.6.1_ALPHA_01.02
  • Support for PnP functions 50,51,..54 added.
    •
    4.6.1_ALPHA_01.01
    4.5.3_ALPHA_02.10
  • Changes to support dynamic updating of CPU structures
    •
    4.5.3_ALPHA_02.09
  • Fixed long strings (64 characters) problem after being updated with DMIEdit and system restarted.
    •
    4.5.3_ALPHA_02.08
  • Updated to coding standard.
    •
    4.5.3_ALPHA_02.07
  • Added template (sample code) to support AMD platform.
  • Code cleanup and format to coding standard.
  • Synchronize label with SMBIOS source.
    •
    4.4.00_ALPHA_02.01
  • The code has been updated to reflect the changes from Aptio 4.0 to Aptio 4.5.
    •
    4.00.01_SMBIOS_ALPHA_01.10
  • Set L3 Cache Handle reference in Type 4 Structure to 0xFFFF if its size is zero.
    •
    4.00.01_SMBIOS_ALPHA_01.09
  • Updated to SMBIOS Core label ALPHA_01.09
    •
    4.00.01_SMBIOS_ALPHA_01.04
  • Set SmbiosFlashData compression to off.
  • Rebuilt to work with CORE 4.00.01 and SMM 4.00.01_SMM_08.
    •
    1.00.18_SMBIOS_03
  • Changes made to support AMIBCP.
    •
    1.00.18_SMBIOS_02
  • Moved the KBC_SUPPORT to the Core and used the New Label.
    •
    ALPHA_01.09
  • Update to SMBIOS Core ALPHA_01.05.
    •
    ALPHA_01.08
  • Use with SMBIOS Core ALPHA_01.04
    •
    ALPHA_01.07
  • Updated to SMBIOS Core ALPHA_01.04
    •
    ALPHA_01.06
  • Updated to SMBIOS Core ALPHA_01.03.
    •
    ALPHA_01.05
    ALPHA_01.04
  • Removed SMBiosStaticData_SUPPORT token since static data is always needed for SMBIOS to work.
  • Add SMBIOS_SUPPORT token to TargetH.
  • Updated the BIOS_LANGUAGE_FORMAT to use Long Strings.
  • Added Processor Manufacturer and Processor Version fields.
  • Removed BIOS_DATE token. BIOS release date will be automatically filled in using system date at build time.
  • Added changes to automatically fill in BIOS release date using system date at build time.
    •
    ALPHA_01.03
  • Updated Type 0 structure to use CORE major and minor version from Core.sdl tokens.
    •
    ALPHA_01.02
  • Made SMBIOS variables static so that it can be shared in different files.
    •
    ALPHA_01.01
  • Corrected hanging problem as BIOS Version was changed starting from label "ALPHA-1.00.12".
    •
    ALPHA_01.00
  • Tested on NAPA with memory/system slots dynamic data ported (CPU not ported). DmiEdit EFI version not working.
    •

    © American Megatrends Inc.


Function by File Name

AMIBIOS Function Reference

By File Name

The following is a list of the source files.
For a list in alphabetical order, see In Alphabetical Order.

  • SMBios.c
  • SmbiosDMIEdit.c
  • SmbiosDMIEdit.h
  • SmbiosDMIEditFunc.c
  • SmbiosGetFlashData.c
  • SmbiosNvramFunc.c
  • SmbiosPei.c
  • SmbiosPeim.mak
Built on 18:05:24 04/22/16


SMBios.c

The following functions are used in the file: SMBios.c.

Function | Description
AddNullTerminator | Add NULL terminator to the end of the structure
AddProducerHandle | Add/Register the ProducerHandle associated with SmbiosHandle to the ProducerHandleTable
AddStringNumber | Add new string number for a structure "Type" at "Offset". Return the string index, assuming all strings exist in the structure according to the Smbios specification
AddStructure | SMBIOS protocol - Add new structure
AddStructureByHandle | SMBIOS protocol - Add new structure with a specific handle - structure will not be added if another structure with this handle already existed.
AddUpdateType13 | Add or update BIOS Language Information structure type 13
CheckForType4AndUpdate | Check input Buffer for Type 4 (CPU structure) and update it with DMIEdit data if exist
CheckForValidStructure | Checks for structure validity
DeleteString | Delete string at Offset
DeleteStringNumber | Zero out the string number in StructPtr
DeleteStructureByHandle | SMBIOS protocol - Searches and deletes structure by handle
DynamicBaseBoardData | Updates base board structure (Type 2) in input Buffer with dynamically detected data.
DynamicUpdateAdditionalInfoData | Updates Additional Information structures (Type 40) in input Buffer - Referenced Handle field.
DynamicUpdateBatteryData | Updates Portable Battery structures (Type 22) in input Buffer with dynamically detected data.
DynamicUpdateChassisData | Updates Chassis structure (Type 3) in input Buffer with dynamically detected data.
DynamicUpdateCpuData | Updates CPU structures (Type 4 & 7) in input Buffer with dynamically detected data.
DynamicUpdateFlashMemoryData | Updates Flash Memory related structures (Type 16-20) with dynamically detected data.
DynamicUpdateMemoryData | Updates Memory related structures (Type 16-20) in input Buffer with dynamically detected data.
DynamicUpdateOnboardDevData | Updates On Board Devices Information structure (Type 10) in input Buffer with dynamically detected data.
DynamicUpdateOnboardDevExt | Updates On Board Devices Extended Information structure (Type 41) in input Buffer with dynamically detected data.
DynamicUpdateSlotsData | Updates System Slot structure (Type 9) in input Buffer with dynamically detected data.
DynamicUpdateStructures | Updates CPU, System Slot, On Board Devices, Memory structures input Buffer with dynamically detected data.
FilterCharacter | If input character is in the range of 0x20 to 0x7e (readable character), returns the input character value unchanged. Otherwise returns single space character.
FindCsm16Table | Searches for CSM16 Table in F000 segment
FindLargestStrNumber | Return the largest string number in a structure
FindString | Returns pointer to the string number in structure BufferPtr
FindStructureHandle | Find structure handle starting from memory location pointed by Buffer
FindStructureType | Find structure type starting from memory location pointed by Buffer
GetFreeHandle | SMBIOS protocol - Searches available handle of Smbios Data Table
GetInstanceByTypeHandle | Returns the instance of the input structure type and its handle
GetLargestStructureSize | Returns the largest structure size
GetMemoryType | Detect memory device type from SPD data. Only DDR2 and DDR3 are supported
GetNumberOfStructures | Returns the number of structures starting from Buffer til (and including) type 127 structure.
GetProducerHandle |
GetRemainingStructuresSize | Return the size from the Pointer Buffer to the last structure 127.
GetScratchBufferPtr | SMBIOS protocol - Returns the pointer to the Scratch buffer equal the SMBIOS data structure in size.
GetSmbiosTableEntryPoint | SMBIOS protocol - Returns the pointer to the SmbiosTableEntryPoint
GetStrIndex | Return the string index, assuming all strings exist and they sequentially numbered according to Smbios specification for the input type structure
GetStringOffset | Returns the string offset for StringNumber from BufferStart
GetStrNumber | Return the string number for a structure "Type" at "Offset"
GetStructureLength | Returns the length of the structure pointed by BufferStart in bytes
GetTotalStructureSize | Returns the total structure size
GetType22StringIndex | Returns the string index for Type 22 structure from a given Offset.
GetType39StringIndex | Returns the string index for Type 39 structure from a given Offset.
GetTypeTable | Return pointer to the input type string table
InitializeProducerHandleTable | Initialize the ProducerHandleTable
Install16bitPnPSmbiosFunctions | SMBIOS 16-bit PnP runtime functions installation.
LoadRealModeFileSection | Locates the input specified Guid file in the Firmware Volumn and loads it into the input Buffer
ReadStructureByHandle | SMBIOS protocol - Searches for a structure with input handle, and return a copy of this structure in BufferPtr if found.
ReadStructureByType | SMBIOS protocol - Searches for the (n)th structure of input Type and return a copy of this structure in BufferPtr if found.
RemoveProducerHandle | Remove the "SmbiosHandle" entry from the ProducerHandleTable
ReplaceString | Replace the #StringNum in the input buffer *DestStructPtr with StringData
SmbiosCheckSum | Returns the checksum of "length" bytes starting from the "*ChecksumSrc"
SmbiosDriverEntryPoint | SMBIOS driver entry point
SmbiosDynamicUpdate | Update Processor Information, System Slots, and On-Board Devices Information structures.
SmbiosE000Alloc | Allocate memory for SMBIOS table in low memory
SmbiosPiAddStructure | Add an Smbios record
SmbiosPiGetNextStructure | Allow the caller to discover all or some of the SMBIOS records
SmbiosPiRemoveStructure | Remove an SMBIOS record
SmbiosPiUpdateString | Update the string associated with an existing SMBIOS record
UpdateDynamicStructures | Update structures dynamically
UpdateEPSHeader | Updates the SMBIOS Entry Point Header
UpdateManufacturer | Update Type 17 Manufacturer field for the input memory slot with data obtained from the SPD.
UpdatePartNumber | Update Type 17 Part Number field for the input memory slot with data obtained from the SPD.
UpdateSerialNumber | Update Type 17 Serial Number field for the input memory slot with data obtained from the SPD.
UpdateSmbiosTable | Update the SMBIOS Table
UpdateSmbiosTableHeader | SMBIOS protocol - Updates the SMBIOS Table Header
UpdateStrings | Copy strings from NvramData to StructPtr
UpdateStructuresWithNvramData | Updates structures in input Buffer with DMI Data in NVRAM
UpdateStructuresWithNvramType0 | Copy Type 0 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType1 | Copy Type 1 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType11 | Copy Type 11 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType12 | Copy Type 12 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType2 | Copy Type 2 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType22 | Copy Type 22 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType3 | Copy Type 3 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType39 | Copy Type 39 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType4 | Copy Type 4 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateType127Handle | Updates Structure Type 127 handle and sets global variable LastHandle to the last structure handle.
WriteStructureByHandle | SMBIOS protocol - Overwrite an existing structure by handle


AddNullTerminator in the SMBios.c

Function : AddNullTerminator

File: SMBios.c
Description:
Add NULL terminator to the end of the structure
Input:
IN UINT8   *StructPtr
IN UINT8   *StrTablePtr
Output:
None
Modified:
Notes:

Referrals:


AddProducerHandle in the SMBios.c

Function : AddProducerHandle

File: SMBios.c
Description:
Add/Register the ProducerHandle associated with SmbiosHandle
to the ProducerHandleTable
Input:
IN EFI_SMBIOS_HANDLE    SmbiosHandle
IN EFI_HANDLE           ProducerHandle
Output:
Modified:
Notes:

Referrals:


AddStringNumber in the SMBios.c

Function : AddStringNumber

File: SMBios.c
Description:
Add new string number for a structure "Type" at "Offset".
Return the string index, assuming all strings exist in the
structure according to the Smbios specification
Input:
IN UINT8    Pointer to SmbiosTable or Structure
IN UINT8    Type
IN UINT8    Offset
Output:
String index (0-based)
(0xff if not found)
Modified:
Notes:

Referrals:


AddStructure in the SMBios.c

Function : AddStructure

File: SMBios.c
Description:
SMBIOS protocol - Add new structure
Input:
IN UINT8   *Buffer
IN UINT16  Size
Output:
EFI_STATUS
Buffer->Handle = Assigned handle number
Modified:
Notes:

Referrals:


AddStructureByHandle in the SMBios.c

Function : AddStructureByHandle

File: SMBios.c
Description:
SMBIOS protocol - Add new structure with a specific handle -
structure will not be added if another structure with this
handle already existed.
Input:
IN UINT16  Handle
IN UINT8   *Buffer
IN UINT16  Size
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


AddUpdateType13 in the SMBios.c

Function : AddUpdateType13

File: SMBios.c
Description:
Add or update BIOS Language Information structure type 13
Input:
None
Output:
None
Modified:
Notes:

Referrals:


CheckForType4AndUpdate in the SMBios.c

Function : CheckForType4AndUpdate

File: SMBios.c
Description:
Check input Buffer for Type 4 (CPU structure) and update it
with DMIEdit data if exist
Input:
IN UINT8   **Buffer
IN UINT16  *Size
Output:
Updated Buffer and Size
Modified:
Notes:

Referrals:


CheckForValidStructure in the SMBios.c

Function : CheckForValidStructure

File: SMBios.c
Description:
Checks for structure validity
Input:
IN UINT8   *Buffer
IN UINT16  Size
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DeleteString in the SMBios.c

Function : DeleteString

File: SMBios.c
Description:
Delete string at Offset
Input:
IN  UINT8   *StructPtr
IN UINT8    Offset
Output:
None
Modified:
Notes:

Referrals:


DeleteStringNumber in the SMBios.c

Function : DeleteStringNumber

File: SMBios.c
Description:
Zero out the string number in StructPtr
Input:
IN  UINT8   *StructurePtr
IN UINT8    StrNumber
Output:
None
Modified:
Notes:

Referrals:


DeleteStructureByHandle in the SMBios.c

Function : DeleteStructureByHandle

File: SMBios.c
Description:
SMBIOS protocol - Searches and deletes structure by handle
Input:
IN UINT16  Handle
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicBaseBoardData in the SMBios.c

Function : DynamicBaseBoardData

File: SMBios.c
Description:
Updates base board structure (Type 2) in input Buffer with
dynamically detected data.
Input:
UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateAdditionalInfoData in the SMBios.c

Function : DynamicUpdateAdditionalInfoData

File: SMBios.c
Description:
Updates Additional Information structures (Type 40) in
input Buffer - Referenced Handle field.
Input:
IN UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateBatteryData in the SMBios.c

Function : DynamicUpdateBatteryData

File: SMBios.c
Description:
Updates Portable Battery structures (Type 22) in
input Buffer with dynamically detected data.
Input:
IN UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateChassisData in the SMBios.c

Function : DynamicUpdateChassisData

File: SMBios.c
Description:
Updates Chassis structure (Type 3) in input Buffer with
dynamically detected data.
Input:
UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateCpuData in the SMBios.c

Function : DynamicUpdateCpuData

File: SMBios.c
Description:
Updates CPU structures (Type 4 & 7) in input Buffer with
dynamically detected data.
Input:
IN UINT8    *Buffer
Output:
EFI_STATUS
Modified:
Notes:
If SMBIOS_CPU_INFO_PROTOCOL is not found, this function tries to
use the "CPU_DATA" variable (backward compatibility). Otherwise
CPU dynamic information is not available.
Referrals:


DynamicUpdateFlashMemoryData in the SMBios.c

Function : DynamicUpdateFlashMemoryData

File: SMBios.c
Description:
Updates Flash Memory related structures (Type 16-20)
with dynamically detected data.
Input:
None
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateMemoryData in the SMBios.c

Function : DynamicUpdateMemoryData

File: SMBios.c
Description:
Updates Memory related structures (Type 16-20) in
input Buffer with dynamically detected data.
Input:
IN UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateOnboardDevData in the SMBios.c

Function : DynamicUpdateOnboardDevData

File: SMBios.c
Description:
Updates On Board Devices Information structure (Type 10) in
input Buffer with dynamically detected data.
Input:
IN UINT8    *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateOnboardDevExt in the SMBios.c

Function : DynamicUpdateOnboardDevExt

File: SMBios.c
Description:
Updates On Board Devices Extended Information structure (Type 41)
in input Buffer with dynamically detected data.
Input:
IN UINT8       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateSlotsData in the SMBios.c

Function : DynamicUpdateSlotsData

File: SMBios.c
Description:
Updates System Slot structure (Type 9) in input Buffer with
dynamically detected data.
Input:
IN UINT8    *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


DynamicUpdateStructures in the SMBios.c

Function : DynamicUpdateStructures

File: SMBios.c
Description:
Updates CPU, System Slot, On Board Devices, Memory structures
input Buffer with dynamically detected data.
Input:
IN UINT8                       *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


FilterCharacter in the SMBios.c

Function : FilterCharacter

File: SMBios.c
Description:
If input character is in the range of 0x20 to 0x7e (readable
character), returns the input character value unchanged.
Otherwise returns single space character.
Input:
IN CHAR8    _char
Output:
CHAR8
Modified:
Notes:

Referrals:


FindCsm16Table in the SMBios.c

Function : FindCsm16Table

File: SMBios.c
Description:
Searches for CSM16 Table in F000 segment
Input:
IN OUT  EFI_COMPATIBILITY16_TABLE   **Csm16Table
Output:
EFI_COMPATIBILITY16_TABLE** Csm16Table
        EFI_STATUS
Modified:
Notes:

Referrals:


FindLargestStrNumber in the SMBios.c

Function : FindLargestStrNumber

File: SMBios.c
Description:
Return the largest string number in a structure
Input:
IN UINT8    *StructPtr
IN UINT8    *StrTablePtr
Output:
String number (1-based)
(or 0 if not found)
Modified:
Notes:

Referrals:


FindString in the SMBios.c

Function : FindString

File: SMBios.c
Description:
Returns pointer to the string number in structure BufferPtr
Input:
IN OUT  UINT8    **BufferPtr
IN      UINT8    StringNumber
Output:
UINT8   *BufferPtr = Pointer to the #StringNumber string
Modified:
Notes:

Referrals:


FindStructureHandle in the SMBios.c

Function : FindStructureHandle

File: SMBios.c
Description:
Find structure handle starting from memory location pointed
by Buffer
Input:
IN OUT  UINT8   **Buffer
IN      UINT16  Handle
Output:
BOOLEAN
   TRUE -  Structure found
   FALSE - Structure not found

If SearchType is found:
 UINT8   **Buffer - Points to the structure that was found
Modified:
Notes:

Referrals:


FindStructureType in the SMBios.c

Function : FindStructureType

File: SMBios.c
Description:
Find structure type starting from memory location pointed by
Buffer
Input:
IN OUT  UINT8   **Buffer
IN OUT  UINT8   **StructureFoundPtr
IN      UINT8   SearchType
IN      UINT8   Instance
Output:
BOOLEAN
   TRUE  - Structure found
   FALSE - Structure not found

If SearchType is found:
 UINT8   **Buffer - Points to the next structure
 UINT8   **StructureFoundPtr - Points to the structure
                               that was found
If SearchType is not found:
 UINT8   **Buffer - No change
 UINT8   **StructureFoundPtr = NULL
Modified:
Notes:

Referrals:


GetFreeHandle in the SMBios.c

Function : GetFreeHandle

File: SMBios.c
Description:
SMBIOS protocol - Searches available handle
                 of Smbios Data Table
Input:
None
Output:
UINT16 - Handle or -1(if not found)
Modified:
Notes:

Referrals:


GetInstanceByTypeHandle in the SMBios.c

Function : GetInstanceByTypeHandle

File: SMBios.c
Description:
Returns the instance of the input structure type and its handle
Input:
IN UINT8    Type
IN UINT16   Handle
Output:
Instance number (1-based) if found, or 0 if not found
Modified:
Notes:

Referrals:


GetLargestStructureSize in the SMBios.c

Function : GetLargestStructureSize

File: SMBios.c
Description:
Returns the largest structure size
Input:
IN UINT8   *Buffer
Output:
UINT16 - Largest structure size
Modified:
Notes:

Referrals:


GetMemoryType in the SMBios.c

Function : GetMemoryType

File: SMBios.c
Description:
Detect memory device type from SPD data.
Only DDR2 and DDR3 are supported
Input:
IN EFI_SMBUS_DEVICE_ADDRESS SpdSmBusAddr
Output:
UINT8
   0 -> Memory type not supported
   1 -> DDR2
   2 -> DDR3
Modified:
MemType = memory type (Global variable)
Notes:

Referrals:


GetNumberOfStructures in the SMBios.c

Function : GetNumberOfStructures

File: SMBios.c
Description:
Returns the number of structures starting from Buffer til
(and including) type 127 structure.
Input:
IN UINT8   *Buffer
Output:
UINT16 - Number of structures
Modified:
Notes:

Referrals:


GetProducerHandle in the SMBios.c

Function : GetProducerHandle

File: SMBios.c
Description:
Input:
IN EFI_SMBIOS_HANDLE    SmbiosHandle
IN OUT EFI_HANDLE       *ProducerHandle
Output:
ProducerHandle
Modified:
Notes:

Referrals:


GetRemainingStructuresSize in the SMBios.c

Function : GetRemainingStructuresSize

File: SMBios.c
Description:
Return the size from the Pointer Buffer to the last
structure 127.
Input:
IN UINT8    *Buffer
Output:
Size of remaining structure
Modified:
Notes:

Referrals:


GetScratchBufferPtr in the SMBios.c

Function : GetScratchBufferPtr

File: SMBios.c
Description:
SMBIOS protocol - Returns the pointer to the Scratch buffer
equal the SMBIOS data structure in size.
Input:
None
Output:
VOID* - Pointer to the Scratch buffer
Modified:
Notes:

Referrals:


GetSmbiosTableEntryPoint in the SMBios.c

Function : GetSmbiosTableEntryPoint

File: SMBios.c
Description:
SMBIOS protocol - Returns the pointer to the SmbiosTableEntryPoint
Input:
None
Output:
VOID* - Pointer to the SmbiosTableEntryPoint
Modified:
Notes:

Referrals:


GetStrIndex in the SMBios.c

Function : GetStrIndex

File: SMBios.c
Description:
Return the string index, assuming all strings exist and they
sequentially numbered according to Smbios specification for
the input type structure
Input:
IN  UINT8       Structure Type
IN  UINT8       Offset,
IN  UINT8       Instance        // 1- based
Output:
String index (0-based)
(or 0xff if not found)
Modified:
Notes:

Referrals:


GetStringOffset in the SMBios.c

Function : GetStringOffset

File: SMBios.c
Description:
Returns the string offset for StringNumber from BufferStart
Input:
IN  UINT8   *BufferStart
IN  UINT8   StringNumber
Output:
UINT16 - Offset from BufferStart
Modified:
Notes:

Referrals:


GetStrNumber in the SMBios.c

Function : GetStrNumber

File: SMBios.c
Description:
Return the string number for a structure "Type" at "Offset"
Input:
IN UINT8    Pointer to SmbiosTable or Structure
IN UINT8    Type
IN UINT8    Offset
Output:
String number (1-based)
(or 0xff if not found)
Modified:
Notes:

Referrals:


GetStructureLength in the SMBios.c

Function : GetStructureLength

File: SMBios.c
Description:
Returns the length of the structure pointed by BufferStart
in bytes
Input:
IN UINT8 *BufferStart
Output:
UINT16 - Structure Size
Modified:
Notes:

Referrals:


GetTotalStructureSize in the SMBios.c

Function : GetTotalStructureSize

File: SMBios.c
Description:
Returns the total structure size
Input:
IN UINT8   *Buffer
Output:
UINT16 - Total structure size
Modified:
Notes:

Referrals:


GetType22StringIndex in the SMBios.c

Function : GetType22StringIndex

File: SMBios.c
Description:
Returns the string index for Type 22 structure from a given
Offset.
Input:
IN UINT8   Offset
Output:
UINT8 - Type 22 Structure String index
Modified:
Notes:

Referrals:


GetType39StringIndex in the SMBios.c

Function : GetType39StringIndex

File: SMBios.c
Description:
Returns the string index for Type 39 structure from a given
Offset.
Input:
IN UINT8   Offset
Output:
UINT8 - Type 39 Structure String index
Modified:
Notes:

Referrals:


GetTypeTable in the SMBios.c

Function : GetTypeTable

File: SMBios.c
Description:
Return pointer to the input type string table
Input:
IN UINT8      Structure Type
Output:
Pointer to the input type string table
(or NULL if not found)
Modified:
Notes:

Referrals:


InitializeProducerHandleTable in the SMBios.c

Function : InitializeProducerHandleTable

File: SMBios.c
Description:
Initialize the ProducerHandleTable
Input:
IN EFI_HANDLE   ProducerHandle
Output:
None
Modified:
Notes:

Referrals:


Install16bitPnPSmbiosFunctions in the SMBios.c

Function : Install16bitPnPSmbiosFunctions

File: SMBios.c
Description:
SMBIOS 16-bit PnP runtime functions installation.
Input:
None
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


LoadRealModeFileSection in the SMBios.c

Function : LoadRealModeFileSection

File: SMBios.c
Description:
Locates the input specified Guid file in the Firmware Volumn
and loads it into the input Buffer
Input:
IN      EFI_GUID *Guid -    File GUID to read
IN      EFI_SECTION_TYPE    SectionType
IN OUT  VOID                **Buffer
IN OUT  UINTN               *BufferSize
Output:
EFI_STATUS
VOID  **Buffer - Contains the content of the Guid file
UINTN *BufferSize - Size of the output buffer
Modified:
Notes:

Referrals:


ReadStructureByHandle in the SMBios.c

Function : ReadStructureByHandle

File: SMBios.c
Description:
SMBIOS protocol - Searches for a structure with input handle,
and return a copy of this structure in BufferPtr if found.
Input:
IN      UINT16      Handle
IN OUT  UINT8       **BufferPtr
IN OUT  UINT16      *BufferSize
Output:
EFI_STATUS
Modified:
Notes:
Memory will be allocated for the returning structure if
structure with input handle is found. Caller is responsible
for freeing this memory when done with it.
Referrals:


ReadStructureByType in the SMBios.c

Function : ReadStructureByType

File: SMBios.c
Description:
SMBIOS protocol - Searches for the (n)th structure of input
Type and return a copy of this structure in BufferPtr if found.
Input:
IN      UINT8       Type
IN      UINT8       Instance
IN OUT  UINT8       **BufferPtr
IN OUT  UINT16      *BufferSize
Output:
EFI_STATUS
Modified:
Notes:
Memory will be allocated for the returning structure if
structure with input handle is found. Caller is responsible
for freeing this memory when done with it.
Referrals:


RemoveProducerHandle in the SMBios.c

Function : RemoveProducerHandle

File: SMBios.c
Description:
Remove the "SmbiosHandle" entry from the ProducerHandleTable
Input:
IN EFI_SMBIOS_HANDLE    SmbiosHandle
Output:
None
Modified:
Notes:

Referrals:


ReplaceString in the SMBios.c

Function : ReplaceString

File: SMBios.c
Description:
Replace the #StringNum in the input buffer *DestStructPtr
with StringData
Input:
IN UINT8       *DestStructPtr  Pointer to structure to be updated
IN UINT8       StringNum       String number (1 based)
IN UINT8       *StringData     String with NULL terminated character
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmbiosCheckSum in the SMBios.c

Function : SmbiosCheckSum

File: SMBios.c
Description:
Returns the checksum of "length" bytes starting from the
"*ChecksumSrc"
Input:
IN UINT8 *ChecksumSrc
IN UINT8 length
Output:
UINT8 - Checksum value
Modified:
Notes:

Referrals:


SmbiosDriverEntryPoint in the SMBios.c

Function : SmbiosDriverEntryPoint

File: SMBios.c
Description:
SMBIOS driver entry point
Input:
IN EFI_HANDLE           ImageHandle,
IN EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmbiosDynamicUpdate in the SMBios.c

Function : SmbiosDynamicUpdate

File: SMBios.c
Description:
Update Processor Information, System Slots, and On-Board
Devices Information structures.
Input:
IN EFI_EVENT   Event
IN VOID        *Context
Output:
None
Modified:
Notes:

Referrals:


SmbiosE000Alloc in the SMBios.c

Function : SmbiosE000Alloc

File: SMBios.c
Description:
Allocate memory for SMBIOS table in low memory
Input:
IN OUT  UINT8    **TablePtr
IN      UINT16   Size
Output:
EFI_STATUS
If success, TablePtr points to allocated memory in
E000 segment.
Modified:
Notes:

Referrals:


SmbiosPiAddStructure in the SMBios.c

Function : SmbiosPiAddStructure

File: SMBios.c
Description:
Add an Smbios record
Input:
IN CONST EFI_SMBIOS_PROTOCOL    *This,
IN EFI_HANDLE                   ProducerHandle, OPTIONAL
IN OUT EFI_SMBIOS_HANDLE        *SmbiosHandle,
IN EFI_SMBIOS_TABLE_HEADER      *Record
Output:
SmbiosHandle
Modified:
Notes:

Referrals:


SmbiosPiGetNextStructure in the SMBios.c

Function : SmbiosPiGetNextStructure

File: SMBios.c
Description:
Allow the caller to discover all or some of the SMBIOS records
Input:
IN  CONST EFI_SMBIOS_PROTOCOL   *This,
IN  OUT EFI_SMBIOS_HANDLE       *SmbiosHandle
IN  EFI_SMBIOS_TYPE             *Type, OPTIONAL
OUT EFI_SMBIOS_TABLE_HEADER     **Record,
OUT EFI_HANDLE                  *ProducerHandle OPTIONAL
Output:
Modified:
Notes:
Implementation:
SmbiosHandle = 0xfffe,  Type = NULL ==> Record = 1st record in table,
                           SmbiosHandle = handle of record being returned
SmbiosHandle != 0xfffe, Type = NULL ==> If record of SmbiosHandle is not found, return EFI_NOT_FOUND, SmbiosHandle = 0xfffe
                           else Record = next record after record of SmbiosHandle,
                                SmbiosHandle = handle of record being returned
SmbiosHandle = 0xfffe,  Type <> 0   ==> If record of input "Type" is not found, return EFI_NOT_FOUND, SmbiosHandle = 0xfffe
                           else Record = 1st record of type "*Type",
                                SmbiosHandle = handle of record being returned
SmbiosHandle != 0xfffe, Type <> 0   ==> If record of SmbiosHandle is not found, or found but no record of type "*Type" after
                                record of SmbiosHandle can be found, return EFI_NOT_FOUND, SmbiosHandle = 0xfffe
                           else Record = next record after record of SmbiosHandle,
                                SmbiosHandle = handle of record being returned
Referrals:


SmbiosPiRemoveStructure in the SMBios.c

Function : SmbiosPiRemoveStructure

File: SMBios.c
Description:
Remove an SMBIOS record
Input:
IN CONST EFI_SMBIOS_PROTOCOL    *This,
IN EFI_SMBIOS_HANDLE            SmbiosHandle
Output:
Modified:
Notes:

Referrals:


SmbiosPiUpdateString in the SMBios.c

Function : SmbiosPiUpdateString

File: SMBios.c
Description:
Update the string associated with an existing SMBIOS record
Input:
IN CONST EFI_SMBIOS_PROTOCOL    *This,
IN EFI_SMBIOS_HANDLE            *SmbiosHandle,
IN UINTN                        *StringNumber,
IN CHAR8                        *String
Output:
Modified:
Notes:

Referrals:


UpdateDynamicStructures in the SMBios.c

Function : UpdateDynamicStructures

File: SMBios.c
Description:
Update structures dynamically
Input:
None
Output:
None
Modified:
Notes:

Referrals:


UpdateEPSHeader in the SMBios.c

Function : UpdateEPSHeader

File: SMBios.c
Description:
Updates the SMBIOS Entry Point Header
Input:
IN SMBIOS_TABLE_ENTRY_POINT  *pSmbiosTableEntryPoint
Output:
None
Modified:
Notes:

Referrals:


UpdateManufacturer in the SMBios.c

Function : UpdateManufacturer

File: SMBios.c
Description:
Update Type 17 Manufacturer field for the input memory slot
with data obtained from the SPD.
Input:
IN UINT8                        *structBuffer
IN EFI_SMBUS_DEVICE_ADDRESS     SpdSmBusAddr
Output:
EFI_STATUS
Modified:
Type 17 Manufacturer field
Notes:

Referrals:


UpdatePartNumber in the SMBios.c

Function : UpdatePartNumber

File: SMBios.c
Description:
Update Type 17 Part Number field for the input memory slot
with data obtained from the SPD.
Input:
IN UINT8                        *StructBuffer
IN EFI_SMBUS_DEVICE_ADDRESS     SpdSmBusAddr
Output:
EFI_STATUS
Modified:
Type 17 Part Number field
Notes:

Referrals:


UpdateSerialNumber in the SMBios.c

Function : UpdateSerialNumber

File: SMBios.c
Description:
Update Type 17 Serial Number field for the input memory slot
with data obtained from the SPD.
Input:
IN UINT8                        *StructureBuffer
IN EFI_SMBUS_DEVICE_ADDRESS     SpdSmBusAddr
Output:
EFI_STATUS
Modified:
Type 17 Serial Number field
Notes:

Referrals:


UpdateSmbiosTable in the SMBios.c

Function : UpdateSmbiosTable

File: SMBios.c
Description:
Update the SMBIOS Table
Input:
IN SMBIOS_OPERATION    Operation
IN UINT8               *StructurePtr
                         - Adding operation: N/A
                         - Delete operation: Pointer to
                           structure to be deleted
IN UINT8               *Buffer
                         - Adding operation: Pointer to buffer
                           to be added
                         - Delete operation: N/A
IN UINT16              Size
                         - Adding operation: Size of buffer
                           to be added
                         - Delete operation: N/A
IN UINT16              Handle
                         - Adding operation:
                           = 0xFFFF to assign next handle number
                           = Other value to assign a specific
                               handle number
                         - Delete operation: N/A
Output:
EFI_STATUS
Modified:
Notes:
Dynamic table sizing can only be done when SMBIOS table is at
high memory. At E000, table can be expanded up to the padding size.
This limitation is due to CSM can only allocate memory, but it does
not have memory deallocation feature.
Referrals:


UpdateSmbiosTableHeader in the SMBios.c

Function : UpdateSmbiosTableHeader

File: SMBios.c
Description:
SMBIOS protocol - Updates the SMBIOS Table Header
Input:
None
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


UpdateStrings in the SMBios.c

Function : UpdateStrings

File: SMBios.c
Description:
Copy strings from NvramData to StructPtr
Input:
IN      SMBIOS_NVRAM_TYPE       *NvramData,
IN OUT  UINT8                   *StructPtr
        IN      UINT8					StrTableInstance    // 1-based
Output:
Updated strings in StructPtr
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramData in the SMBios.c

Function : UpdateStructuresWithNvramData

File: SMBios.c
Description:
Updates structures in input Buffer with DMI Data in NVRAM
Input:
IN  UINT8   *Buffer
IN  UINT8   BufferSize
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType0 in the SMBios.c

Function : UpdateStructuresWithNvramType0

File: SMBios.c
Description:
Copy Type 0 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE0      *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType1 in the SMBios.c

Function : UpdateStructuresWithNvramType1

File: SMBios.c
Description:
Copy Type 1 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE1      *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType11 in the SMBios.c

Function : UpdateStructuresWithNvramType11

File: SMBios.c
Description:
Copy Type 11 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE11     *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType12 in the SMBios.c

Function : UpdateStructuresWithNvramType12

File: SMBios.c
Description:
Copy Type 12 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE12     *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType2 in the SMBios.c

Function : UpdateStructuresWithNvramType2

File: SMBios.c
Description:
Copy Type 2 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE2      *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType22 in the SMBios.c

Function : UpdateStructuresWithNvramType22

File: SMBios.c
Description:
Copy Type 22 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE22     *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType3 in the SMBios.c

Function : UpdateStructuresWithNvramType3

File: SMBios.c
Description:
Copy Type 3 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE3      *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
IN      UINT8                   StringTableInstance
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType39 in the SMBios.c

Function : UpdateStructuresWithNvramType39

File: SMBios.c
Description:
Copy Type 39 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE39     *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateStructuresWithNvramType4 in the SMBios.c

Function : UpdateStructuresWithNvramType4

File: SMBios.c
Description:
Copy Type 4 strings to TempBuffer. Strings will be copied
from NVRAM if exist, or else from existing strings in ROM image.
SrcBuffer and TempBuffer pointers are updated
Input:
IN      SMBIOS_NVRAM_TYPE4      *NvramData,
IN OUT  UINT8                   *SrcBuffer
IN OUT  UINT8                   *TempBuffer
Output:
Updated SrcBuffer and TempBuffer
Modified:
Notes:

Referrals:


UpdateType127Handle in the SMBios.c

Function : UpdateType127Handle

File: SMBios.c
Description:
Updates Structure Type 127 handle and sets global variable
LastHandle to the last structure handle.
Input:
IN UINT8   *Buffer
Output:
Sets global variable LastHandle
Modified:
Notes:

Referrals:


WriteStructureByHandle in the SMBios.c

Function : WriteStructureByHandle

File: SMBios.c
Description:
SMBIOS protocol - Overwrite an existing structure by handle
Input:
UINT16  Handle
UINT8   *BufferPtr
UINT16  BufferSize
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmbiosDMIEdit.c

The following functions are used in the file: SmbiosDMIEdit.c.

Function | Description
CheckAddress | Check address to avoid TSEG area.
DmiEditNonSmiHandler | Handles the SMI
GetSmbiosTableF000 | Searches 0x0F0000 for the SMBIOS signature and fills in the SmbiosTableEntryPoint once it has been found
InSmmFunction | Initialize pointers and register SW SMI handlers for DMIEdit support.
NotInSmmFunction | Performs non-smi initialization
SmbiosDmiEditSupportInstall | DMIEdit support driver entry point
SmiHandler | Handles the SMI


CheckAddress in the SmbiosDMIEdit.c

Function : CheckAddress

File: SmbiosDMIEdit.c
Description:
Check address to avoid TSEG area.
Input:
Address     - starting address
Function    - DMIEdit function
Output:
EFI_SUCCESS         - Access granted
DMI_BAD_PARAMETER   - Access denied!


DmiEditNonSmiHandler in the SmbiosDMIEdit.c

Function : DmiEditNonSmiHandler

File: SmbiosDMIEdit.c
Description:
Handles the SMI
Input:
IN UINT8    Data
IN UINT64   pCommBuff
Output:
None
Modified:
Notes:

Referrals:


GetSmbiosTableF000 in the SmbiosDMIEdit.c

Function : GetSmbiosTableF000

File: SmbiosDMIEdit.c
Description:
Searches 0x0F0000 for the SMBIOS signature and fills in the
SmbiosTableEntryPoint once it has been found
Input:
None
Output:
None
Modified:
SmbiosTableEntryPoint -is modified if table entry point found
Notes:

Referrals:


InSmmFunction in the SmbiosDMIEdit.c

Function : InSmmFunction

File: SmbiosDMIEdit.c
Description:
Initialize pointers and register SW SMI handlers for
DMIEdit support.
Input:
IN EFI_HANDLE           ImageHandle,
IN EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


NotInSmmFunction in the SmbiosDMIEdit.c

Function : NotInSmmFunction

File: SmbiosDMIEdit.c
Description:
Performs non-smi initialization
Input:
IN EFI_HANDLE           ImageHandle,
IN EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmbiosDmiEditSupportInstall in the SmbiosDMIEdit.c

Function : SmbiosDmiEditSupportInstall

File: SmbiosDMIEdit.c
Description:
DMIEdit support driver entry point
Input:
IN EFI_HANDLE           ImageHandle,
IN EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmiHandler in the SmbiosDMIEdit.c

Function : SmiHandler

File: SmbiosDMIEdit.c
Description:
Handles the SMI
Input:
IN EFI_HANDLE                    DispatchHandle
IN EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
Output:
None
Modified:
Notes:

Referrals:


SmbiosDMIEdit.h

The following data structures are used in the file: SmbiosDMIEdit.h.

Variable | Description
DMI_STRUC | Structure Header
FLASH_DATA_INFO | Flash Data Information
GET_SMBIOS_INFO | Get SMBIOS Information
GET_SMBIOS_STRUCTURE | Get SMBIOS Structure
SET_SMBIOS_STRUCTURE | Set SMBIOS Structure
SET_SMBIOS_STRUCTURE_DATA | Set SMBIOS Structure Data
SMBIOS_TABLE_ENTRY | SMBIOS Entry Point structure
TABLE_INFO | DMI data record
WRITE_ONCE_TABLE | Write Once structure


DMI_STRUC in the SmbiosDMIEdit.h

Variable : DMI_STRUC

File: SmbiosDMIEdit.h
Description:
Structure Header


FLASH_DATA_INFO in the SmbiosDMIEdit.h

Variable : FLASH_DATA_INFO

File: SmbiosDMIEdit.h
Description:
Flash Data Information


GET_SMBIOS_INFO in the SmbiosDMIEdit.h

Variable : GET_SMBIOS_INFO

File: SmbiosDMIEdit.h
Description:
Get SMBIOS Information


GET_SMBIOS_STRUCTURE in the SmbiosDMIEdit.h

Variable : GET_SMBIOS_STRUCTURE

File: SmbiosDMIEdit.h
Description:
Get SMBIOS Structure


SET_SMBIOS_STRUCTURE in the SmbiosDMIEdit.h

Variable : SET_SMBIOS_STRUCTURE

File: SmbiosDMIEdit.h
Description:
Set SMBIOS Structure


SET_SMBIOS_STRUCTURE_DATA in the SmbiosDMIEdit.h

Variable : SET_SMBIOS_STRUCTURE_DATA

File: SmbiosDMIEdit.h
Description:
Set SMBIOS Structure Data


SMBIOS_TABLE_ENTRY in the SmbiosDMIEdit.h

Variable : SMBIOS_TABLE_ENTRY

File: SmbiosDMIEdit.h
Description:
SMBIOS Entry Point structure


TABLE_INFO in the SmbiosDMIEdit.h

Variable : TABLE_INFO

File: SmbiosDMIEdit.h
Description:
DMI data record


WRITE_ONCE_TABLE in the SmbiosDMIEdit.h

Variable : WRITE_ONCE_TABLE

File: SmbiosDMIEdit.h
Description:
Write Once structure


SmbiosDMIEditFunc.c

The following functions are used in the file: SmbiosDMIEditFunc.c.

Function | Description
AddNullTerminator | Add NULL terminator to the end of the structure
AddStringNumber | Add new string number for a structure "Type" at "Offset". Return the string index, assuming all strings exist in the structure according to the Smbios specification
DeleteString | Delete string at Offset
DeleteStringNumber | Zero out the string number in StructPtr
DynamicUpdateType11 | Updates SMBIOS Type 11 Structure in Runtime with DMI data
DynamicUpdateType12 | Updates SMBIOS Type 12 Structure in Runtime with DMI data
FindLargestStrNumber | Return the largest string number in a structure
FindString | Returns pointer to the string number in structure BufferPtr
FindStructureType | Find structure type starting from memory location pointed by Buffer
GetDmiDataSize | Returns the data size for DMI Function 0x52
GetFlashDataInfo | Searches the Flash Data Table for a record of Type and Offset. If found, returns the location found, the data size, and the end of data.
GetInputDataInfo | Fills "TableInfo" with data from DMI Function 0x52
GetInstanceByTypeHandle | Returns the instance of the input structure type and its handle
GetLargestStructureSize | Returns the largest structure size
GetRemainingStructuresSize | Return the size from the Pointer Buffer to the last structure 127.
GetSmbiosInfo | Returns the SMBIOS information
GetSmbiosStructure | Searches the structure table for a record with its handle equal to the input Handle and copies its content into the provided buffer.
GetStringOffset | Returns the string offset for StringNumber from input string buffer BufferStart
GetStringTableIndex | Returns the string array index for a given Offset in structure pointed by input StringTablePtr
GetStrNumber | Return the string number for a structure "Type" at "Offset"
GetStructureByHandle | Searches the structure table for a record with its handle equal to the input Handle. Returns the pointer to the structure if found. Returns NULL if not found
GetStructureByHandleThenUpdateHandle | Searches the structure table for a record with its handle equal to the input Handle. Returns the pointer to the structure if found. Returns NULL if not found
GetStructureLength | Returns the length of the structure pointed by BufferStart in bytes
GetTypeTable | Return pointer to the input type string table
isWriteOnce | Determines if a given structure type and offset can only be written once or multiple times.
PnPFn52AddStructure | PnP function 52 Command 03: Add structure
PnPFn52DeleteStructure | PnP function 52 Command 04: Delete structure
ReplaceString | Replace the #StringNum in the input buffer *DestStructPtr with StringData
SetSmbiosStructure | DMIEdit function to update the structures and saves the DMI data in the Flash Part for subsequent boot.
SetType0 | Updates Flash Data record with input DMI data Updates SMBIOS Type 0 Structure in Runtime with DMI data
SetType1 | Updates Flash Data record with input DMI data Updates SMBIOS Type 1 Structure in Runtime with DMI data
SetType11 | Updates Flash Data record with input DMI data Updates SMBIOS Type 11 Structure in Runtime with DMI data
SetType12 | Updates Flash Data record with input DMI data Updates SMBIOS Type 12 Structure in Runtime with DMI data
SetType2 | Updates Flash Data record with input DMI data Updates SMBIOS Type 2 Structure in Runtime with DMI data
SetType22 | Updates Flash Data record with input DMI data Updates SMBIOS Type 22 Structure in Runtime with DMI data
SetType3 | Updates Flash Data record with input DMI data Updates SMBIOS Type 3 Structure in Runtime with DMI data
SetType39 | Updates Flash Data record with input DMI data Updates SMBIOS Type 39 Structure in Runtime with DMI data
SetType4 | Updates Flash Data record with input DMI data Updates SMBIOS Type 4 Structure in Runtime with DMI data
SmbiosCheckSum | Returns the checksum of "length" bytes starting from the "*ChecksumSrc"
StoreNvramData | Store DMIEdit data into input variable
StrLen | Returns the length of an input string
UpdateHeaderInfo | Updates SMBIOS Entry Point Header
UpdateSmbiosTable | Searches the Flash Data Table for a record of Type and Offset. If found, the existing data will be replaced with the new data, else the data will be added as a new record.
UpdateStrings | Updates strings in SMBIOS Structure with input Handle in Runtime with DMI data
WriteOnceStatusInit | Initialize NVRAM variable holding WriteOnce statuses
WriteToFlash | Write to the flash part starting at "Address" for a length of "Size".

The following tables are used in the file: SmbiosDMIEditFunc.c.

Table | Description
WriteOnceTable | Table indicating which structure and offset can be written only once or multiple times


AddNullTerminator in the SmbiosDMIEditFunc.c

Function : AddNullTerminator

File: SmbiosDMIEditFunc.c
Description:
Add NULL terminator to the end of the structure
Input:
IN UINT8   *StructPtr
IN UINT8   *StrTablePtr
Output:
None
Modified:
Notes:

Referrals:


AddStringNumber in the SmbiosDMIEditFunc.c

Function : AddStringNumber

File: SmbiosDMIEditFunc.c
Description:
Add new string number for a structure "Type" at "Offset".
Return the string index, assuming all strings exist in the
structure according to the Smbios specification
Input:
IN UINT8    Pointer to SmbiosTable or Structure
IN UINT8    Type
IN UINT8    Offset
Output:
String index (0-based)
(0xff if not found)
Modified:
Notes:

Referrals:


DeleteString in the SmbiosDMIEditFunc.c

Function : DeleteString

File: SmbiosDMIEditFunc.c
Description:
Delete string at Offset
Input:
IN  UINT8   *StructPtr
IN UINT8    Offset
Output:
None
Modified:
Notes:

Referrals:


DeleteStringNumber in the SmbiosDMIEditFunc.c

Function : DeleteStringNumber

File: SmbiosDMIEditFunc.c
Description:
Zero out the string number in StructPtr
Input:
IN  UINT8   *StructurePtr
IN UINT8    StrNumber
Output:
None
Modified:
Notes:

Referrals:


DynamicUpdateType11 in the SmbiosDMIEditFunc.c

Function : DynamicUpdateType11

File: SmbiosDMIEditFunc.c
Description:
Updates SMBIOS Type 11 Structure in Runtime with DMI data
Input:
IN UINT16      Handle,
IN

 TABLE_INFO
  TableInfo,
IN UINT8       *Data
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


DynamicUpdateType12 in the SmbiosDMIEditFunc.c

Function : DynamicUpdateType12

File: SmbiosDMIEditFunc.c
Description:
Updates SMBIOS Type 12 Structure in Runtime with DMI data
Input:
IN UINT16      Handle,
IN

 TABLE_INFO
  TableInfo,
IN UINT8       *Data
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


FindLargestStrNumber in the SmbiosDMIEditFunc.c

Function : FindLargestStrNumber

File: SmbiosDMIEditFunc.c
Description:
Return the largest string number in a structure
Input:
IN UINT8    *StructPtr
IN UINT8    *StrTablePtr
Output:
String number (1-based)
(or 0 if not found)
Modified:
Notes:

Referrals:


FindString in the SmbiosDMIEditFunc.c

Function : FindString

File: SmbiosDMIEditFunc.c
Description:
Returns pointer to the string number in structure BufferPtr
Input:
IN OUT  UINT8    **BufferPtr
IN      UINT8    StringNumber
Output:
UINT8   *BufferPtr = Pointer to the #StringNumber string
Modified:
Notes:

Referrals:


FindStructureType in the SmbiosDMIEditFunc.c

Function : FindStructureType

File: SmbiosDMIEditFunc.c
Description:
Find structure type starting from memory location pointed by
Buffer
Input:
IN OUT  UINT8   **Buffer
IN OUT  UINT8   **StructureFoundPtr
IN      UINT8   SearchType
IN      UINT8   Instance
Output:
BOOLEAN
   TRUE  - Structure found
   FALSE - Structure not found

If SearchType is found:
 UINT8   **Buffer - Points to the next structure
 UINT8   **StructureFoundPtr - Points to the structure
                               that was found
If SearchType is not found:
 UINT8   **Buffer - No change
 UINT8   **StructureFoundPtr = NULL
Modified:
Notes:

Referrals:


GetDmiDataSize in the SmbiosDMIEditFunc.c

Function : GetDmiDataSize

File: SmbiosDMIEditFunc.c
Description:
Returns the data size for DMI Function 0x52
Input:
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
Output:
UINT16 - Data Size
Modified:
Notes:

Referrals:


GetFlashDataInfo in the SmbiosDMIEditFunc.c

Function : GetFlashDataInfo

File: SmbiosDMIEditFunc.c
Description:
Searches the Flash Data Table for a record of Type and
Offset. If found, returns the location found, the data size,
and the end of data.
Input:
IN

 TABLE_INFO
   RecordInfo
Output:
FLASH_DATA_INFO
Modified:
Notes:

Referrals:


GetInputDataInfo in the SmbiosDMIEditFunc.c

Function : GetInputDataInfo

File: SmbiosDMIEditFunc.c
Description:
Fills "TableInfo" with data from DMI Function 0x52
Input:
IN      UINT16                      Handle,
IN      SET_SMBIOS_STRUCTURE_DATA   *Data,
IN OUT

 TABLE_INFO
                  *TableInfo
Output:
UINT16 - Data Size
Modified:
Notes:

Referrals:


GetInstanceByTypeHandle in the SmbiosDMIEditFunc.c

Function : GetInstanceByTypeHandle

File: SmbiosDMIEditFunc.c
Description:
Returns the instance of the input structure type and its handle
Input:
IN UINT8    Type
IN UINT16   Handle
Output:
Instance number (1-based) if found, or 0 if not found
Modified:
Notes:

Referrals:


GetLargestStructureSize in the SmbiosDMIEditFunc.c

Function : GetLargestStructureSize

File: SmbiosDMIEditFunc.c
Description:
Returns the largest structure size
Input:
IN UINT8    *Buffer
Output:
UINT16 - Largest structure size
Modified:
Notes:

Referrals:


GetRemainingStructuresSize in the SmbiosDMIEditFunc.c

Function : GetRemainingStructuresSize

File: SmbiosDMIEditFunc.c
Description:
Return the size from the Pointer Buffer to the last
structure 127.
Input:
IN UINT8    *Buffer
Output:
Size of remaining structure
Modified:
Notes:

Referrals:


GetSmbiosInfo in the SmbiosDMIEditFunc.c

Function : GetSmbiosInfo

File: SmbiosDMIEditFunc.c
Description:
Returns the SMBIOS information
Input:
IN OUT  GET_SMBIOS_INFO   *p
Output:
Returns 0
Modified:
Notes:

Referrals:


GetSmbiosStructure in the SmbiosDMIEditFunc.c

Function : GetSmbiosStructure

File: SmbiosDMIEditFunc.c
Description:
Searches the structure table for a record with its handle
equal to the input Handle and copies its content into
the provided buffer.
Input:
IN OUT  GET_SMBIOS_STRUCTURE    *p
Output:
GET_SMBIOS_STRUCTURE* - Input pointer "p" is loaded with
                       structure data.
Modified:
Notes:

Referrals:


GetStringOffset in the SmbiosDMIEditFunc.c

Function : GetStringOffset

File: SmbiosDMIEditFunc.c
Description:
Returns the string offset for StringNumber from input string
buffer BufferStart
Input:
IN  UINT8   *BufferStart
IN  UINT8   StringNumber (1-based)
Output:
UINT16 - Offset from BufferStart
Modified:
Notes:

Referrals:


GetStringTableIndex in the SmbiosDMIEditFunc.c

Function : GetStringTableIndex

File: SmbiosDMIEditFunc.c
Description:
Returns the string array index for a given Offset in
structure pointed by input StringTablePtr
Input:
STRING_TABLE    *StringTablePtr
IN UINT8        Offset
Output:
UINT8 - String array index
Modified:
Notes:

Referrals:


GetStrNumber in the SmbiosDMIEditFunc.c

Function : GetStrNumber

File: SmbiosDMIEditFunc.c
Description:
Return the string number for a structure "Type" at "Offset"
Input:
IN UINT8    Pointer to structure
IN UINT8    Type
IN UINT8    Offset
Output:
String number (1-based)
(or 0xff if not found)
Modified:
Notes:

Referrals:


GetStructureByHandle in the SmbiosDMIEditFunc.c

Function : GetStructureByHandle

File: SmbiosDMIEditFunc.c
Description:
Searches the structure table for a record with its handle
equal to the input Handle.
Returns the pointer to the structure if found.
Returns NULL if not found
Input:
IN UINT16    *Handle
Output:
UINT8* - Pointer to structure found
Modified:
Notes:

Referrals:


GetStructureByHandleThenUpdateHandle in the SmbiosDMIEditFunc.c

Function : GetStructureByHandleThenUpdateHandle

File: SmbiosDMIEditFunc.c
Description:
Searches the structure table for a record with its handle
equal to the input Handle.
Returns the pointer to the structure if found.
Returns NULL if not found
Input:
IN UINT16    *Handle
Output:
UINT8* - Pointer to structure found
Sets Handle to the handle of the next structure
Modified:
Notes:

Referrals:


GetStructureLength in the SmbiosDMIEditFunc.c

Function : GetStructureLength

File: SmbiosDMIEditFunc.c
Description:
Returns the length of the structure pointed by BufferStart
in bytes
Input:
IN UINT8     *BufferStart
Output:
UINT16 - Size of the structure
Modified:
Notes:

Referrals:


GetTypeTable in the SmbiosDMIEditFunc.c

Function : GetTypeTable

File: SmbiosDMIEditFunc.c
Description:
Return pointer to the input type string table
Input:
IN UINT8      Structure Type
Output:
Pointer to the input type string table
(or NULL if not found)
Modified:
Notes:

Referrals:


isWriteOnce in the SmbiosDMIEditFunc.c

Function : isWriteOnce

File: SmbiosDMIEditFunc.c
Description:
Determines if a given structure type and offset can only
be written once or multiple times.
Input:
IN UINT8   Type
IN UINT8   Offset
Output:
BOOLEAN - TRUE/FALSE for Write Once/Multiple
Modified:
Notes:

Referrals:


PnPFn52AddStructure in the SmbiosDMIEditFunc.c

Function : PnPFn52AddStructure

File: SmbiosDMIEditFunc.c
Description:
PnP function 52 Command 03: Add structure
Input:
IN SET_SMBIOS_STRUCTURE_DATA    *dmiDataBuffer
IN BOOLEAN                      Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


PnPFn52DeleteStructure in the SmbiosDMIEditFunc.c

Function : PnPFn52DeleteStructure

File: SmbiosDMIEditFunc.c
Description:
PnP function 52 Command 04: Delete structure
Input:
IN SET_SMBIOS_STRUCTURE_DATA    *dmiDataBuffer
IN BOOLEAN                      Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


ReplaceString in the SmbiosDMIEditFunc.c

Function : ReplaceString

File: SmbiosDMIEditFunc.c
Description:
Replace the #StringNum in the input buffer *DestStructPtr
with StringData
Input:
IN UINT8       *DestStructPtr  Pointer to structure to be updated
IN UINT8       StringNum       String number (1 based)
IN UINT8       *StringData     String with NULL terminated character
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SetSmbiosStructure in the SmbiosDMIEditFunc.c

Function : SetSmbiosStructure

File: SmbiosDMIEditFunc.c
Description:
DMIEdit function to update the structures and saves the
DMI data in the Flash Part for subsequent boot.
Input:
IN SET_SMBIOS_STRUCTURE    *p
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType0 in the SmbiosDMIEditFunc.c

Function : SetType0

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 0 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:
Type 0 Offset 8 (Release Date) is a fixed form string. This
function only checks for proper length. It is up to the DMI
editing utility to check for the proper format.
Referrals:


SetType1 in the SmbiosDMIEditFunc.c

Function : SetType1

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 1 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType11 in the SmbiosDMIEditFunc.c

Function : SetType11

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 11 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType12 in the SmbiosDMIEditFunc.c

Function : SetType12

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 12 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType2 in the SmbiosDMIEditFunc.c

Function : SetType2

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 2 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType22 in the SmbiosDMIEditFunc.c

Function : SetType22

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 22 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType3 in the SmbiosDMIEditFunc.c

Function : SetType3

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 3 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType39 in the SmbiosDMIEditFunc.c

Function : SetType39

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 39 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SetType4 in the SmbiosDMIEditFunc.c

Function : SetType4

File: SmbiosDMIEditFunc.c
Description:
Updates Flash Data record with input DMI data
Updates SMBIOS Type 4 Structure in Runtime with DMI data
Input:
IN UINT16                      Handle,
IN SET_SMBIOS_STRUCTURE_DATA   *Data,
IN BOOLEAN                     Set
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


SmbiosCheckSum in the SmbiosDMIEditFunc.c

Function : SmbiosCheckSum

File: SmbiosDMIEditFunc.c
Description:
Returns the checksum of "length" bytes starting from the
"*ChecksumSrc"
Input:
IN UINT8    *ChecksumSrc
IN UINT8    length
Output:
UINT8 - Checksum value
Modified:
Notes:

Referrals:


StoreNvramData in the SmbiosDMIEditFunc.c

Function : StoreNvramData

File: SmbiosDMIEditFunc.c
Description:
Store DMIEdit data into input variable
Input:
IN  CHAR16  *Var
IN  VOID    *Data
IN  UINTN   DataSize

Global variable "DmiArray", "DmiArraySize",
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


StrLen in the SmbiosDMIEditFunc.c

Function : StrLen

File: SmbiosDMIEditFunc.c
Description:
Returns the length of an input string
Input:
IN CHAR8    *Str
Output:
UINT8 - Length of the string (without zero terminator)
Modified:
Notes:

Referrals:


UpdateHeaderInfo in the SmbiosDMIEditFunc.c

Function : UpdateHeaderInfo

File: SmbiosDMIEditFunc.c
Description:
Updates SMBIOS Entry Point Header
Input:
None
Output:
None
Modified:
Notes:

Referrals:


UpdateSmbiosTable in the SmbiosDMIEditFunc.c

Function : UpdateSmbiosTable

File: SmbiosDMIEditFunc.c
Description:
Searches the Flash Data Table for a record of Type and
Offset. If found, the existing data will be replaced with
the new data, else the data will be added as a new record.
Input:
IN

 TABLE_INFO
  TableInfo,
IN UINT8       *Data
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


UpdateStrings in the SmbiosDMIEditFunc.c

Function : UpdateStrings

File: SmbiosDMIEditFunc.c
Description:
Updates strings in SMBIOS Structure with input Handle
in Runtime with DMI data
Input:
IN UINT16      Handle,
IN

 TABLE_INFO
  TableInfo,
IN UINT8       *Data
Output:
UINT8 - Status
Modified:
Notes:

Referrals:


WriteOnceStatusInit in the SmbiosDMIEditFunc.c

Function : WriteOnceStatusInit

File: SmbiosDMIEditFunc.c
Description:
Initialize NVRAM variable holding WriteOnce statuses
Input:
None
Output:
None
Modified:
Notes:

Referrals:


WriteOnceTable in the SmbiosDMIEditFunc.c

Table : WriteOnceTable

File: SmbiosDMIEditFunc.c
Description:
Table indicating which structure and offset can be written
only once or multiple times
Notes:


WriteToFlash in the SmbiosDMIEditFunc.c

Function : WriteToFlash

File: SmbiosDMIEditFunc.c
Description:
Write to the flash part starting at "Address" for a length
of "Size".
Input:
IN VOID    *Address,
IN VOID    *Data,
IN UINTN   Size
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SmbiosGetFlashData.c

The following functions are used in the file: SmbiosGetFlashData.c.

Function | Description
CompareGuid | Compares two input GUIDs
FindFile | Find file in the FV with the input GUID
FindRawSection | Find the RAW section
GetDataLocation | Find the Flash Data file in the FV.
GetField | Get Flash Data Field
GetFlashTableInfo | Get Flash Data location and size.
SmbiosGetFlashDataInstall | Driver entry point for SmbiosGetFlashData

The following data structures are used in the file: SmbiosGetFlashData.c.

Variable | Description
ROM_INFO | DMI Data Table Header
TABLE_INFO | DMI data record


CompareGuid in the SmbiosGetFlashData.c

Function : CompareGuid

File: SmbiosGetFlashData.c
Description:
Compares two input GUIDs
Input:
IN EFI_GUID *G1
IN EFI_GUID *G2
Output:
INT8 - 0/-1 for Equal/Not Equal
Modified:
Notes:

Referrals:


FindFile in the SmbiosGetFlashData.c

Function : FindFile

File: SmbiosGetFlashData.c
Description:
Find file in the FV with the input GUID
Input:
IN EFI_GUID  *Guid
IN VOID      *File
IN VOID      *EndOfFiles
Output:
VOID* - Pointer to File if found
Modified:
Notes:

Referrals:


FindRawSection in the SmbiosGetFlashData.c

Function : FindRawSection

File: SmbiosGetFlashData.c
Description:
Find the RAW section
Input:
IN VOID  *Section
IN VOID  *End
Output:
VOID* - Pointer to Raw Section if found
Modified:
Notes:

Referrals:


GetDataLocation in the SmbiosGetFlashData.c

Function : GetDataLocation

File: SmbiosGetFlashData.c
Description:
Find the Flash Data file in the FV.
Input:
None
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


GetField in the SmbiosGetFlashData.c

Function : GetField

File: SmbiosGetFlashData.c
Description:
Get Flash Data Field
Input:
IN EFI_SMBIOS_FLASH_DATA_PROTOCOL   *This
IN UINT8                            Table
IN UINT8                            Offset
IN VOID                             **Field
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


GetFlashTableInfo in the SmbiosGetFlashData.c

Function : GetFlashTableInfo

File: SmbiosGetFlashData.c
Description:
Get Flash Data location and size.
Input:
IN      EFI_SMBIOS_FLASH_DATA_PROTOCOL  *This
IN OUT  VOID                            **Location
IN OUT  UINT32                          *Size
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


ROM_INFO in the SmbiosGetFlashData.c

Variable : ROM_INFO

File: SmbiosGetFlashData.c
Description:
DMI Data Table Header


SmbiosGetFlashDataInstall in the SmbiosGetFlashData.c

Function : SmbiosGetFlashDataInstall

File: SmbiosGetFlashData.c
Description:
Driver entry point for SmbiosGetFlashData
Input:
IN EFI_HANDLE           ImageHandle
IN EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


TABLE_INFO in the SmbiosGetFlashData.c

Variable : TABLE_INFO

File: SmbiosGetFlashData.c
Description:
DMI data record


SmbiosNvramFunc.c

The following functions are used in the file: SmbiosNvramFunc.c.

Function | Description
PreserveDmiEditData | Preserve the DMIEdit data by loading its data into memory prior to flashing
RecoveryPreserveDmiEditData | Preserve the DMIEdit data by loading its data into memory prior to flashing (for capsule mode)
RecoveryRestoreDmiEditData | Restore the DMIEdit data in NVRAM with data previously loaded in memory by PreserveDmiEditData (for capsule mode)
RestoreDmiEditData | Restore the DMIEdit data in NVRAM with data previously loaded in memory by PreserveDmiEditData.


PreserveDmiEditData in the SmbiosNvramFunc.c

Function : PreserveDmiEditData

File: SmbiosNvramFunc.c
Description:
Preserve the DMIEdit data by loading its data into memory
prior to flashing
Input:
None
Output:
None
Modified:
Notes:

Referrals:


RecoveryPreserveDmiEditData in the SmbiosNvramFunc.c

Function : RecoveryPreserveDmiEditData

File: SmbiosNvramFunc.c
Description:
Preserve the DMIEdit data by loading its data into memory
prior to flashing (for capsule mode)
Input:
None
Output:
None
Modified:
Notes:

Referrals:


RecoveryRestoreDmiEditData in the SmbiosNvramFunc.c

Function : RecoveryRestoreDmiEditData

File: SmbiosNvramFunc.c
Description:
Restore the DMIEdit data in NVRAM with data previously loaded
in memory by PreserveDmiEditData (for capsule mode)
Input:
None
Output:
None
Modified:
Notes:

Referrals:


RestoreDmiEditData in the SmbiosNvramFunc.c

Function : RestoreDmiEditData

File: SmbiosNvramFunc.c
Description:
Restore the DMIEdit data in NVRAM with data previously loaded
in memory by PreserveDmiEditData.
Input:
None
Output:
None
Modified:
Notes:

Referrals:


SmbiosPei.c

Description:

The following functions are used in the file: SmbiosPei.c.

Function | Description
SmbiosAfterInitMemory |
UpdateSmbiosWakeupType | Detect and update SMBIOS Type 1 structure "Wake-up Type" data field


SmbiosAfterInitMemory in the SmbiosPei.c

Function : SmbiosAfterInitMemory

File: SmbiosPei.c
Description:
Input:
IN EFI_PEI_SERVICES           **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDescriptor,
IN VOID                       *NullPpi
Output:


UpdateSmbiosWakeupType in the SmbiosPei.c

Function : UpdateSmbiosWakeupType

File: SmbiosPei.c
Description:
Detect and update SMBIOS Type 1 structure "Wake-up Type"
data field
Input:
IN EFI_PEI_SERVICES  **PeiServices,
Output:
Updated SMBIOS Type 1 "Wake-up Type"
Notes:


SmbiosPeim.mak

Description:


Functions in Alphabetical Order

In Alphabetical Order

The following topics provide a list in alphabetical order.
For a list by file name, see By File Name.

  • A
  • C
  • D
  • F
  • G
  • I
  • L
  • N
  • P
  • R
  • S
  • T
  • U
  • W


Functions in Alphabetical Order

A

Function | Description
AddNullTerminator | Add NULL terminator to the end of the structure
AddNullTerminator | Add NULL terminator to the end of the structure
AddProducerHandle | Add/Register the ProducerHandle associated with SmbiosHandle to the ProducerHandleTable
AddStringNumber | Add new string number for a structure "Type" at "Offset". Return the string index, assuming all strings exist in the structure according to the Smbios specification
AddStringNumber | Add new string number for a structure "Type" at "Offset". Return the string index, assuming all strings exist in the structure according to the Smbios specification
AddStructure | SMBIOS protocol - Add new structure
AddStructureByHandle | SMBIOS protocol - Add new structure with a specific handle - structure will not be added if another structure with this handle already existed.
AddUpdateType13 | Add or update BIOS Language Information structure type 13


Functions in Alphabetical Order

C

Function | Description
CheckAddress | Check address to avoid TSEG area.
CheckForType4AndUpdate | Check input Buffer for Type 4 (CPU structure) and update it with DMIEdit data if exist
CheckForValidStructure | Checks for structure validity
CompareGuid | Compares two input GUIDs


Functions in Alphabetical Order

D

Function | Description
DeleteString | Delete string at Offset
DeleteString | Delete string at Offset
DeleteStringNumber | Zero out the string number in StructPtr
DeleteStringNumber | Zero out the string number in StructPtr
DeleteStructureByHandle | SMBIOS protocol - Searches and deletes structure by handle
DmiEditNonSmiHandler | Handles the SMI
DynamicBaseBoardData | Updates base board structure (Type 2) in input Buffer with dynamically detected data.
DynamicUpdateAdditionalInfoData | Updates Additional Information structures (Type 40) in input Buffer - Referenced Handle field.
DynamicUpdateBatteryData | Updates Portable Battery structures (Type 22) in input Buffer with dynamically detected data.
DynamicUpdateChassisData | Updates Chassis structure (Type 3) in input Buffer with dynamically detected data.
DynamicUpdateCpuData | Updates CPU structures (Type 4 & 7) in input Buffer with dynamically detected data.
DynamicUpdateFlashMemoryData | Updates Flash Memory related structures (Type 16-20) with dynamically detected data.
DynamicUpdateMemoryData | Updates Memory related structures (Type 16-20) in input Buffer with dynamically detected data.
DynamicUpdateOnboardDevData | Updates On Board Devices Information structure (Type 10) in input Buffer with dynamically detected data.
DynamicUpdateOnboardDevExt | Updates On Board Devices Extended Information structure (Type 41) in input Buffer with dynamically detected data.
DynamicUpdateSlotsData | Updates System Slot structure (Type 9) in input Buffer with dynamically detected data.
DynamicUpdateStructures | Updates CPU, System Slot, On Board Devices, Memory structures input Buffer with dynamically detected data.
DynamicUpdateType11 | Updates SMBIOS Type 11 Structure in Runtime with DMI data
DynamicUpdateType12 | Updates SMBIOS Type 12 Structure in Runtime with DMI data

Data Structure | Description
DMI_STRUC | Structure Header


Functions in Alphabetical Order

F

Function | Description
FilterCharacter | If input character is in the range of 0x20 to 0x7e (readable character), returns the input character value unchanged. Otherwise returns single space character.
FindCsm16Table | Searches for CSM16 Table in F000 segment
FindFile | Find file in the FV with the input GUID
FindLargestStrNumber | Return the largest string number in a structure
FindLargestStrNumber | Return the largest string number in a structure
FindRawSection | Find the RAW section
FindString | Returns pointer to the string number in structure BufferPtr
FindString | Returns pointer to the string number in structure BufferPtr
FindStructureHandle | Find structure handle starting from memory location pointed by Buffer
FindStructureType | Find structure type starting from memory location pointed by Buffer
FindStructureType | Find structure type starting from memory location pointed by Buffer

Data Structure | Description
FLASH_DATA_INFO | Flash Data Information


Functions in Alphabetical Order

G

Function | Description
GetDataLocation | Find the Flash Data file in the FV.
GetDmiDataSize | Returns the data size for DMI Function 0x52
GetField | Get Flash Data Field
GetFlashDataInfo | Searches the Flash Data Table for a record of Type and Offset. If found, returns the location found, the data size, and the end of data.
GetFlashTableInfo | Get Flash Data location and size.
GetFreeHandle | SMBIOS protocol - Searches available handle of Smbios Data Table
GetInputDataInfo | Fills "TableInfo" with data from DMI Function 0x52
GetInstanceByTypeHandle | Returns the instance of the input structure type and its handle
GetInstanceByTypeHandle | Returns the instance of the input structure type and its handle
GetLargestStructureSize | Returns the largest structure size
GetLargestStructureSize | Returns the largest structure size
GetMemoryType | Detect memory device type from SPD data. Only DDR2 and DDR3 are supported
GetNumberOfStructures | Returns the number of structures starting from Buffer til (and including) type 127 structure.
GetProducerHandle |
GetRemainingStructuresSize | Return the size from the Pointer Buffer to the last structure 127.
GetRemainingStructuresSize | Return the size from the Pointer Buffer to the last structure 127.
GetScratchBufferPtr | SMBIOS protocol - Returns the pointer to the Scratch buffer equal the SMBIOS data structure in size.
GetSmbiosInfo | Returns the SMBIOS information
GetSmbiosStructure | Searches the structure table for a record with its handle equal to the input Handle and copies its content into the provided buffer.
GetSmbiosTableEntryPoint | SMBIOS protocol - Returns the pointer to the SmbiosTableEntryPoint
GetSmbiosTableF000 | Searches 0x0F0000 for the SMBIOS signature and fills in the SmbiosTableEntryPoint once it has been found
GetStrIndex | Return the string index, assuming all strings exist and they sequentially numbered according to Smbios specification for the input type structure
GetStringOffset | Returns the string offset for StringNumber from BufferStart
GetStringOffset | Returns the string offset for StringNumber from input string buffer BufferStart
GetStringTableIndex | Returns the string array index for a given Offset in structure pointed by input StringTablePtr
GetStrNumber | Return the string number for a structure "Type" at "Offset"
GetStrNumber | Return the string number for a structure "Type" at "Offset"
GetStructureByHandle | Searches the structure table for a record with its handle equal to the input Handle. Returns the pointer to the structure if found. Returns NULL if not found
GetStructureByHandleThenUpdateHandle | Searches the structure table for a record with its handle equal to the input Handle. Returns the pointer to the structure if found. Returns NULL if not found
GetStructureLength | Returns the length of the structure pointed by BufferStart in bytes
GetStructureLength | Returns the length of the structure pointed by BufferStart in bytes
GetTotalStructureSize | Returns the total structure size
GetType22StringIndex | Returns the string index for Type 22 structure from a given Offset.
GetType39StringIndex | Returns the string index for Type 39 structure from a given Offset.
GetTypeTable | Return pointer to the input type string table
GetTypeTable | Return pointer to the input type string table

Data Structure | Description
GET_SMBIOS_INFO | Get SMBIOS Information
GET_SMBIOS_STRUCTURE | Get SMBIOS Structure


Functions in Alphabetical Order

I

Function | Description
InitializeProducerHandleTable | Initialize the ProducerHandleTable
InSmmFunction | Initialize pointers and register SW SMI handlers for DMIEdit support.
Install16bitPnPSmbiosFunctions | SMBIOS 16-bit PnP runtime functions installation.
isWriteOnce | Determines if a given structure type and offset can only be written once or multiple times.


Functions in Alphabetical Order

L

Function | Description
LoadRealModeFileSection | Locates the input specified Guid file in the Firmware Volumn and loads it into the input Buffer


Functions in Alphabetical Order

N

Function | Description
NotInSmmFunction | Performs non-smi initialization


Functions in Alphabetical Order

P

Function | Description
PnPFn52AddStructure | PnP function 52 Command 03: Add structure
PnPFn52DeleteStructure | PnP function 52 Command 04: Delete structure
PreserveDmiEditData | Preserve the DMIEdit data by loading its data into memory prior to flashing


Functions in Alphabetical Order

R

Function | Description
ReadStructureByHandle | SMBIOS protocol - Searches for a structure with input handle, and return a copy of this structure in BufferPtr if found.
ReadStructureByType | SMBIOS protocol - Searches for the (n)th structure of input Type and return a copy of this structure in BufferPtr if found.
RecoveryPreserveDmiEditData | Preserve the DMIEdit data by loading its data into memory prior to flashing (for capsule mode)
RecoveryRestoreDmiEditData | Restore the DMIEdit data in NVRAM with data previously loaded in memory by PreserveDmiEditData (for capsule mode)
RemoveProducerHandle | Remove the "SmbiosHandle" entry from the ProducerHandleTable
ReplaceString | Replace the #StringNum in the input buffer *DestStructPtr with StringData
ReplaceString | Replace the #StringNum in the input buffer *DestStructPtr with StringData
RestoreDmiEditData | Restore the DMIEdit data in NVRAM with data previously loaded in memory by PreserveDmiEditData.

Data Structure | Description
ROM_INFO | DMI Data Table Header


Functions in Alphabetical Order

S

Function | Description
SetSmbiosStructure | DMIEdit function to update the structures and saves the DMI data in the Flash Part for subsequent boot.
SetType0 | Updates Flash Data record with input DMI data Updates SMBIOS Type 0 Structure in Runtime with DMI data
SetType1 | Updates Flash Data record with input DMI data Updates SMBIOS Type 1 Structure in Runtime with DMI data
SetType11 | Updates Flash Data record with input DMI data Updates SMBIOS Type 11 Structure in Runtime with DMI data
SetType12 | Updates Flash Data record with input DMI data Updates SMBIOS Type 12 Structure in Runtime with DMI data
SetType2 | Updates Flash Data record with input DMI data Updates SMBIOS Type 2 Structure in Runtime with DMI data
SetType22 | Updates Flash Data record with input DMI data Updates SMBIOS Type 22 Structure in Runtime with DMI data
SetType3 | Updates Flash Data record with input DMI data Updates SMBIOS Type 3 Structure in Runtime with DMI data
SetType39 | Updates Flash Data record with input DMI data Updates SMBIOS Type 39 Structure in Runtime with DMI data
SetType4 | Updates Flash Data record with input DMI data Updates SMBIOS Type 4 Structure in Runtime with DMI data
SmbiosAfterInitMemory |
SmbiosCheckSum | Returns the checksum of "length" bytes starting from the "*ChecksumSrc"
SmbiosCheckSum | Returns the checksum of "length" bytes starting from the "*ChecksumSrc"
SmbiosDmiEditSupportInstall | DMIEdit support driver entry point
SmbiosDriverEntryPoint | SMBIOS driver entry point
SmbiosDynamicUpdate | Update Processor Information, System Slots, and On-Board Devices Information structures.
SmbiosE000Alloc | Allocate memory for SMBIOS table in low memory
SmbiosGetFlashDataInstall | Driver entry point for SmbiosGetFlashData
SmbiosPiAddStructure | Add an Smbios record
SmbiosPiGetNextStructure | Allow the caller to discover all or some of the SMBIOS records
SmbiosPiRemoveStructure | Remove an SMBIOS record
SmbiosPiUpdateString | Update the string associated with an existing SMBIOS record
SmiHandler | Handles the SMI
StoreNvramData | Store DMIEdit data into input variable
StrLen | Returns the length of an input string

Data Structure | Description
SET_SMBIOS_STRUCTURE | Set SMBIOS Structure
SET_SMBIOS_STRUCTURE_DATA | Set SMBIOS Structure Data
SMBIOS_TABLE_ENTRY | SMBIOS Entry Point structure


Functions in Alphabetical Order

T

Data Structure | Description
TABLE_INFO | DMI data record
TABLE_INFO | DMI data record


Functions in Alphabetical Order

U

Function | Description
UpdateDynamicStructures | Update structures dynamically
UpdateEPSHeader | Updates the SMBIOS Entry Point Header
UpdateHeaderInfo | Updates SMBIOS Entry Point Header
UpdateManufacturer | Update Type 17 Manufacturer field for the input memory slot with data obtained from the SPD.
UpdatePartNumber | Update Type 17 Part Number field for the input memory slot with data obtained from the SPD.
UpdateSerialNumber | Update Type 17 Serial Number field for the input memory slot with data obtained from the SPD.
UpdateSmbiosTable | Update the SMBIOS Table
UpdateSmbiosTable | Searches the Flash Data Table for a record of Type and Offset. If found, the existing data will be replaced with the new data, else the data will be added as a new record.
UpdateSmbiosTableHeader | SMBIOS protocol - Updates the SMBIOS Table Header
UpdateSmbiosWakeupType | Detect and update SMBIOS Type 1 structure "Wake-up Type" data field
UpdateStrings | Copy strings from NvramData to StructPtr
UpdateStrings | Updates strings in SMBIOS Structure with input Handle in Runtime with DMI data
UpdateStructuresWithNvramData | Updates structures in input Buffer with DMI Data in NVRAM
UpdateStructuresWithNvramType0 | Copy Type 0 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType1 | Copy Type 1 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType11 | Copy Type 11 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType12 | Copy Type 12 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType2 | Copy Type 2 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType22 | Copy Type 22 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType3 | Copy Type 3 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType39 | Copy Type 39 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateStructuresWithNvramType4 | Copy Type 4 strings to TempBuffer. Strings will be copied from NVRAM if exist, or else from existing strings in ROM image. SrcBuffer and TempBuffer pointers are updated
UpdateType127Handle | Updates Structure Type 127 handle and sets global variable LastHandle to the last structure handle.


Functions in Alphabetical Order

W

Function | Description
WriteOnceStatusInit | Initialize NVRAM variable holding WriteOnce statuses
WriteStructureByHandle | SMBIOS protocol - Overwrite an existing structure by handle
WriteToFlash | Write to the flash part starting at "Address" for a length of "Size".

Table | Description
WriteOnceTable | Table indicating which structure and offset can be written only once or multiple times

Data Structure | Description
WRITE_ONCE_TABLE | Write Once structure


General Information