Desktop Management BIOS Specification

Similar documents
Desktop Management BIOS Specification

System Management BIOS Reference Specification previously known as

EXTENDED SYSTEM CONFIGURATION DATA SPECIFICATION

System Management BIOS (SMBIOS) Reference Specification

System Management BIOS (SMBIOS) Reference Specification

Intel Storage System JBOD 2000S3 Product Family

BIOS Enhanced Disk Drive Specification. June 24, 1999

Error Correction Control and Parity BIOS Implementation Example

CD-ROM COMPATIBLE TAPE FORMAT FOR INSTALLABLE FILE SYSTEM

Enhanced Serial Peripheral Interface (espi)

Test Plan for MultiRead Devices

DVD :50 PM Page 1 BIOS

NAME biosdecode BIOS information decoder. SYNOPSIS biosdecode [OPTIONS]

System Management BIOS (SMBIOS) Reference Specification

CP/M-86 Compatibility Guide For CP/M-80 Users

21154 PCI-to-PCI Bridge Configuration

Common Flash Interface (CFI) and Command Sets

Application Note Software Device Drivers for the M29Fxx Flash Memory Device

Architecture Specification

Table 1 - GET CONFIGURATION Command Descriptor Block

Block Data is the data transferred to or from the device using SCT Command Transport feature set capabilities.

Quick Guide to Common Flash Interface

16 July r1 SAS-2 Add device slot numbering fields to DISCOVER

Intel Desktop Board D945GSEJT

SFF Committee Specification for. Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) SFF-8035i Revision 2.0

BIOS Update Release Notes

NVDIMM DSM Interface Example

The following modifications have been made to this version of the DSM specification:

White Paper DSP0131. Status: Preliminary Standard. Exposing Alert Standard Format (ASF) through the Desktop Management Interface (DMI)

Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification. Version 0.9 April 1, 2004

04-374r2 SES-2 Define a SAS Expander element 13 January 2005

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

AMIBIOS8 Check Point and Beep Code List

RAID Option ROM. Product Implementation Guide. Version 1.8 Date: 08/19/2009. Copyright 2009, Promise Technology, Inc. All Rights Reserved

BIOS Update Release Notes

[MS-SSP]: Intellectual Property Rights Notice for Open Specifications Documentation

[MS-IISS]: Internet Information Services (IIS) ServiceControl Protocol

APPLICATION NOTE Using the Intel StrataFlash Memory Write Buffer

AN2685 Application note

Intel Desktop Board DH55TC

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

Ρουτίνες Λειτουργίας (DOS function calls)

BIOS Update Release Notes

USB Feature Specification: Shared Endpoints

Enhanced Serial Peripheral Interface (espi) ECN

8 January r3 SAS-2 More counters

Chapter 3: Addressing Modes

Intel X38 Express Chipset

DCMI Data Center Manageability Interface Specification v1.0, Revision 1.0. Addenda, Errata, and Clarifications

Wireless Host Controller Interface Specification for Certified Wireless Universal Serial Bus

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

BIOS Update Release Notes

HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE

Managing Data in an Embedded System Utilizing Flash Memory

Intel X48 Express Chipset Memory Controller Hub (MCH)

04-172r1 SAS-2 More counters 11 September 2005

Open-Channel Solid State Drives Specification

CC411: Introduction To Microprocessors

AMD Extensions to the. Instruction Sets Manual

Application Note C Library Source Code for M29W256 Flash Memory Using the Flash Device Driver Software Interface

GA-G1975X Post Code Definition

x86 assembly CS449 Spring 2016

COPYRIGHT DISCLAIMER TRADEMARK NOTICES PART NUMBER REVISION HISTORY CONTACTING TANDBERG DATA CORPORATION

4 July r1 SAS-2 Enable and disable zoning

The next page shows the questions asked in revision 0 of this proposal and the answers supplied by the May SCSI Working Group meeting.

White Paper Western Digital Comments on Sector Sizes Larger than 512 Bytes

BIOS Update Release Notes

Windows Device Driver and API Reference Manual

Intel Desktop Board DZ68DB

03-388r0 SBC-2 Nonvolatile caches 11 December 2003

Assembly Language Each statement in an assembly language program consists of four parts or fields.

StrongARM** SA-110/21285 Evaluation Board

As of October 1, 1998, our address is:

COMMON-ISDN-API. Version 2.0. Part II. 4 th Edition. Operating Systems

i960 VH Embedded-PCI Processor

Related Documents ses2r00 - SCSI Enclosure Services - 2 revision r0 - SES-2 INVOP for Threshold In page

PCI Express to PCI/PCI-X Bridge Specification Revision 1.0

IS-Dev Kit-8 User Manual

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors)

BIOS Update Release Notes

Intel Integrator Toolkit

Silicon Media Limited. C4 2.5 SATA Solid State Drive Specification (7mm & 9mm height compatible) SMSS325MxxxG-C4-x

AN2663 Application note

[MS-WDSC]: Windows Deployment Services Control Protocol. Intellectual Property Rights Notice for Open Specifications Documentation

BIOS Update Release Notes

Clear CMOS after Hardware Configuration Changes

As of October 1, 1998, our address is:

libquadflash API 1 General Operations

Intel Platform Innovation Framework for EFI Boot Script Specification. Version 0.91 April 1, 2004

PCI Compliance Checklist

AMIBIOS8 Check Point and Beep Code List

EC 333 Microprocessor and Interfacing Techniques (3+1)

Intel Desktop Board DP43TF

BIOS Update Release Notes

1.4 Revision history Revision 0 (July 7, 2008) First revision

2010 Summer Answers [OS I]

6/17/2011. Introduction. Chapter Objectives Upon completion of this chapter, you will be able to:

BIOS Update Release Notes

BIOS Update Release Notes

ACS Proposal - Device Internal Status Log

Transcription:

American Megatrends Inc. Award Software International Inc. Dell Computer Corporation Intel Corporation Phoenix Technologies Ltd. SystemSoft Corporation Desktop Management BIOS Specification Version 2.0 March 6, 1996 This specification has been made available to the public. You are hereby granted the right to use, implement,reproduce and distribute this specification with the forgoing rights, at no charge. This specification is, and shall remain, the property of American Megatrends Inc. ( AMI ), Award Software International Inc. ( Award ), Dell Computer Corporation ( Dell ), Intel Corporation ( Intel ), Phoenix Technologies LTD ("Phoenix") and SystemSoft Corporation ( SystemSoft ). No license under any patents of other intellectual property rights are granted either expressly or impliedly by the publication of this document by AMI, Award, Dell, Intel, Phoenix, and SystemSoft. NEITHER AMI, AWARD, DELL, INTEL, PHOENIX, NOR SYSTEMSOFT MAKE ANY REPRESENTATION OR WARRANTY REGARDING THIS SPECIFICATION OR ANY PRODUCT OR ITEM DEVELOPED BASED ON THIS SPECIFICATION. USE OF THIS SPECIFICATION FOR ANY PURPOSE IS AT THE RISK OF THE PERSON OR ENTITY USING IT. AMI, AWARD, DELL, INTEL, PHOENIX, AND SYSTEMSOFT DISCLAIM ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND FREEDOM FROM INFRINGEMENT. NEITHER AMI, AWARD, DELL, INTEL, PHOENIX, NOR SYSTEMSOFT WILL BE RESPONSIBLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL OR OTHER DAMAGES RELATING TO THE USE OF THIS SPECIFICATION. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, NEITHER AMI, AWARD, DELL, INTEL, PHOENIX, NOR SYSTEMSOFT MAKE ANY WARRANTY OF ANY KIND THAT ANY ITEM DEVELOPED BASED ON THIS SPECIFICATION, OR ANY PORTION OF IT, WILL NOT INFRINGE ANY COPYRIGHT, PATENT, TRADE SECRET OR OTHER INTELLECTUAL PROPERTY RIGHT OF ANY PERSON OR ENTITY IN ANY COUNTRY. Dmibios2 1 of 49 29 July, 1996

Document Information The softcopy version of this specification, in Microsoft Word-for-Windows 6.0 format, is available as DMIB20.DOC via ftp://ftp.ptltd.com/pub/phoenix_docs/dmib20.doc or from the Phoenix Technologies World Wide Web site at http://www.ptltd.com/techs/specs.html. Document Revision History Version 2.0D 09/14/95 Initial Release of DRAFT COPY Version 2.0M 12/12/95 Final draft released, with the following changes: - Specified that dmistoragebase (Function 50h) and NVStorageBase (Function 55h) must be paragraph-aligned. - Added Command value to change a string to function 52h; Command enumeration values modified. - Removed redundant enumerations from Processor Family list - Corrected Memory Subsystem Example - Corrected/clarified Indexed I/O access-methods for event-log; Access Method enumeration values and Access Method Address union modified - Added clarifications to some of the event log types Version 2.00 03/06/96 Final release, with the following changes: - Specified that all structures end with a terminating NULL, even if the formatted portion of the structure contains string-reference fields and all the string fields are set to 0. - Corrected the Memory Subsystem Example, handles are now correctly created with a dw. - Fixed formatting of some bit definition fields and function examples. Table Of Contents 1. OVERVIEW 4 1.1 REFERENCES 4 1.2 ENHANCEMENTS TO THE CURRENT BIOS ARCHITECTURE 4 2. ACCESSING DMI INFORMATION 5 2.1 CALLING CONVENTION 5 2.2 DMI BIOS FUNCTIONS 5 2.3 ERROR RETURN CODES 6 2.4 DMI BIOS STRUCTURE ACCESS INTERFACE 7 2.4.1 FUNCTION 50H GET DMI INFORMATION 7 2.4.2 FUNCTION 51H GET DMI STRUCTURE 8 2.4.3 FUNCTION 52H SET DMI STRUCTURE 9 2.5 STRUCTURE CHANGE NOTIFICATION INTERFACE 12 2.5.1 FUNCTION 53H GET STRUCTURE CHANGE INFORMATION 13 2.6 CONTROL INTERFACE 15 2.6.1 FUNCTION 54H DMI CONTROL 15 Dmibios2 2 of 49 29 July, 1996

2.6.2 DMI_CONTROL_LOGGING CONTROL WORD 16 2.7 GENERAL PURPOSE NONVOLATILE STORAGE INTERFACE 17 2.7.1 FUNCTION 55H GET GENERAL-PURPOSE NONVOLATILE INFORMATION 18 2.7.2 FUNCTION 56H READ GENERAL-PURPOSE NONVOLATILE DATA 19 2.7.3 FUNCTION 57H WRITE GENERAL-PURPOSE NONVOLATILE DATA 20 3. DMI BIOS STRUCTURES 22 3.1 STRUCTURE STANDARDS 22 3.1.1 STRUCTURE HEADER FORMAT 22 3.1.2 TEXT STRINGS 23 3.2 STRUCTURE DEFINITIONS 24 3.2.1 BIOS INFORMATION (TYPE 0) 24 3.2.2 SYSTEM INFORMATION (TYPE 1) 26 3.2.3 BASE BOARD INFORMATION (TYPE 2) 26 3.2.4 SYSTEM ENCLOSURE OR CHASSIS (TYPE 3) 26 3.2.5 PROCESSOR INFORMATION (TYPE 4) 28 3.2.6 MEMORY CONTROLLER INFORMATION (TYPE 5) 31 3.2.7 MEMORY MODULE INFORMATION (TYPE 6) 33 3.2.8 CACHE INFORMATION (TYPE 7) 36 3.2.9 PORT CONNECTOR INFORMATION (TYPE 8) 37 3.2.10 SYSTEM SLOTS (TYPE 9) 40 3.2.11 ON BOARD DEVICES INFORMATION (TYPE 10) 42 3.2.12 OEM STRINGS (TYPE 11) 43 3.2.13 SYSTEM CONFIGURATION OPTIONS (TYPE 12) 43 3.2.14 BIOS LANGUAGE INFORMATION (TYPE 13) 43 3.2.15 GROUP ASSOCIATIONS (TYPE 14) 44 3.2.16 SYSTEM EVENT LOG (TYPE 15) 45 Dmibios2 3 of 49 29 July, 1996

1. Overview Desktop Management Interface (DMI) is a new method of managing computers in an enterprise. The main component of DMI is the Management Information Format Database, or MIF. This database contains all the information about the computing system and its components. Using DMI, a system administrator can obtain the types, capabilities, operational status, installation date, and other information about the system components. The Desktop Management BIOS Specification documents a standard embedded tool-set to assist in the generation of a system MIF database. 1.1 References Desktop Management Interface Specification, Version 1.0, April 29, 1994. DMTF PC Systems Standard MIF Definition, Version 1.3, March 1, 1995. DMTF Server Standard MIF Definition, Draft Version 0.3, March 1, 1995 Plug and Play BIOS Specification, Version 1.0A, May 5, 1994 PCI BIOS Specification, Version 2.1, August 26, 1994 1.2 Enhancements to the current BIOS architecture The DMI specification requires that certain information about the System Board be made available to an applications program. For systems implementing DMI BIOS Extensions, user-defined information will be located in a series of data structures. These data structures are accessed by the method described in Section 2. Vendors may decide to include all or any part of this information in their designs. For a complete solution that is compatible with the Service Layer distributed by the DMTF, vendors must also implement component instrumentation. This instrumentation allows the Service Layer to gain access to the information stored in the BIOS. In addition, a MIF file must be provided that describes that data that is provided by the BIOS and the method of accessing that data. As a minimum, the PC Standard System MIF provided by the DTMF can be used for this purpose. Dmibios2 4 of 49 29 July, 1996

2. Accessing DMI Information 2.1 Calling Convention To prevent the proliferation of interfaces for accessing information embedded in the System BIOS, the Desktop Management BIOS Specification will follow the System Device Node model used by Plug and Play, and use Plug and Play BIOS functions to access DMI information. Plug and Play functions 50h-5Fh have been assigned to the DMI BIOS Interface. Each of the DMI BIOS Plug-and-Play functions is available both in real-mode and 16-bit protected-mode. A function called in 16-bit protected-mode supports both 16-bit and 32-bit stack segments. 2.2 DMI BIOS Functions This table defines the current DMI BIOS Functions. DMI BIOS Function Function Number Description GET_DMI_INFORMATION 50h Returns the Number of Structures, the Size of the Largest Structure, and the DMI BIOS Revision. GET_DMI_STRUCTURE 51h Copies the information for the specified DMI Structure into the buffer specified by the caller. SET_DMI_STRUCTURE 52h Copies the information for the specified DMI structure from the buffer specified by the caller. GET_DMI_STRUCTURE_ 53h Returns the DMI Structure CHANGE_INFO Change Information into a 16- byte buffer specified by the caller. Required/Optional Required Required Optional Required for Dynamic Structurechange Notification Support DMI_CONTROL 54h Controls a system action Optional GET_GPNV_INFORMATION 55h Returns information about the General Purpose Non-Volatile Storage Area Required for GPNV Support READ_GPNV_DATA 56h Reads the entire specified GPNV contents into a buffer specified by the caller. WRITE_GPNV_DATA 57h Copies the contents of the user specified buffer into the GPNV. The function causes the entire specified GPNV to be updated. Reserved for Future Use 58h-5Fh Reserved, will return DMI_FUNCTION_NOT_ SUPPORTED. Required for GPNV Support Required for GPNV Support Reserved Dmibios2 5 of 49 29 July, 1996

2.3 Error Return Codes After the call has been made, the following return codes are available in the AX Register. Return Code Value Description DMI_SUCCESS 00h Function Completed Successfully DMI_UNKNOWN_FUNCTION 81h Unknown, or invalid, function number passed DMI_FUNCTION_NOT_SUPPORTED 82h The function is not supported on this system DMI_INVALID_HANDLE 83h DMI Structure number/handle passed is invalid or out of range. DMI_BAD_PARAMETER 84h The function detected invalid parameter or, in the case of a Set DMI Structure request, detected an invalid value for a to-be-changed structure field. DMI_INVALID_SUBFUNCTION 85h The SubFunction parameter supplied on a DMI Control function is not supported by the system BIOS. DMI_NO_CHANGE 86h There are no changed DMI structures pending notification. DMI_ADD_STRUCTURE_FAILED 87h Returned when there was insufficient storage space to add the desired structure. DMI_READ_ONLY 8Dh A Set DMI Structure request failed because one or more of the to-be-changed structure fields are read-only. DMI_LOCK_NOT_SUPPORTED 90h The GPNV functions do not support locking for the specified GPNV handle. DMI_CURRENTLY_LOCKED 91h The GPNV lock request failed - the GPNV is already locked. DMI_ INVALID_LOCK 92h The caller has failed to present the predefined GPNVLock value which is expected by the BIOS for access of the GPNV area. Dmibios2 6 of 49 29 July, 1996

2.4 DMI BIOS Structure Access Interface 2.4.1 Function 50h Get DMI Information Synopsis: short FAR (*entrypoint)(function, dmibiosrevision, NumStructures, StructureSize, dmistoragebase, dmistoragesize, BiosSelector); short Function; /* PnP BIOS Function 50h */ unsigned char FAR *dmibiosrevision; /* Revision of the DMI BIOS Extensions */ unsigned short FAR *NumStructures; /* Maximum Number of Structures the BIOS will return */ unsigned short FAR *StructureSize; /* Size of largest DMI Structure */ unsigned long FAR *dmistoragebase; /* 32-bit physical base address for memory-mapped */ /* DMI data */ unsigned short FAR *dmistoragesize; /* Size of the memory-mapped DMI data */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for DMI BIOS Support. This function will return the revision of the DMI BIOS Extensions and the maximum number of DMI structures that the system BIOS will return information for in NumStructures. These structures represent the DMI information that is embedded in the System BIOS. In addition to the number of structures, the system BIOS will return the size, in bytes, of the largest DMI structure (and all of its supporting data) in StructureSize. This information can be utilized by the system software to determine the amount of memory required to get all of the DMI structures. Note: The system BIOS may return a value that is larger than the actual largest DMI structure to facilitate hot docking or other dynamic DMI information. The BIOS may also return fewer than NumStructures when the structures are retrieved using Function 51h. If the BIOS does not support DMI capability, DMI_FUNCTION_NOT_SUPPORTED (82h) will be returned. The dmibiosrevision parameter indicates compliance with a revision of this specification. It is a BCD value where the upper nibble indicates the major version and the lower nibble the minor version. For revision 2.0 the returned value will be 20h. dmistoragebase is updated by the BIOS call with the paragraph-aligned, 32-bit absolute physical base address of any memory-mapped DMI structure information. If non-zero, this value allows the caller to construct a 16-bit data segment descriptor with a limit of dmistoragesize and read/write access for subsequent input to functions 51h to 54h. If dmistoragebase is 0, protected-mode mapping is not required the DMI structure information and the dmistoragesize return value has no meaning. The BiosSelector parameter enables the system BIOS, if necessary, to update system variables that are contained in the system BIOS memory space. If this function is called from protected mode, the caller must create a data segment descriptor using the 16-bit Protected Mode data segment base address specified in the Plug and Play Installation Check data structure, a limit of 64KB, and the descriptor must be read/write capable. If this function is called from real mode, BiosSelector should be set to the Real mode 16-bit data segment address as specified in the Plug and Play Installation Check Structure. Refer to section 4.4 of the Plug and Play BIOS Specification revision 1.0a for more information on the Plug and Play Installation Check Structure and the elements that make up the structure. This function is available in real mode and 16-bit protected mode. Dmibios2 7 of 49 29 July, 1996

Returns: If successful - DMI_SUCCESS If an Error (Bit 7 set) or a Warning occurred the Error Code will be returned in AX, the FLAGS and all other registers will be preserved. Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector segment/selector of dmistoragesize ; Pointer to DMIStorageSize offset of dmistoragesize segment/selector of dmistoragebase ; Pointer to DMIStorageBase offset of dmistoragebase segment/selector of StructureSize ; Pointer to StructureSize offset of StructureSize segment/selector of NumStructures ; Pointer to NumStructures offset NumStructures segment/selector of dmibiosrevision ; Pointer to DMIBIOSRevision offset dmibiosrevision GET_DMI_INFORMATION ; Function number, 50h call FAR PTR entrypoint add sp, 24 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error 2.4.2 Function 51h Get DMI Structure Synopsis: short FAR (*entrypoint)(function, Structure, dmistrucbuffer, dmiselector, BiosSelector); short Function; /* PnP BIOS Function 51h */ unsigned short FAR *Structure; /* Structure number/handle to retrieve*/ unsigned char FAR *dmistrucbuffer; /* Pointer to buffer to copy structure data to */ unsigned short dmiselector; /* DMI data read/write selector */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for DMI BIOS Support. This function will copy the information for the specified DMI Structure into the buffer specified by the caller. The Structure argument is a pointer to the unique DMI Structure number (handle). If Structure contains zero, the system BIOS will return the first DMI Structure. The dmistrucbuffer argument contains the pointer to the caller s memory buffer. If the function returns either DMI_SUCCESS or DMI_INVALID_HANDLE, Structure is updated with either the next sequential structure handle or the end-of-list indicator 0FFFFh. The protected-mode read/write selector dmiselector has base equal to dmistoragebase and limit of at least dmistoragesize so long as the dmistoragebase value returned from Function 50h was non-zero. The BiosSelector parameter enables the system BIOS, if necessary, to update system variables that are contained in the system BIOS memory space. If this function is called from protected mode, the caller must create a data segment descriptor using the 16-bit Protected Mode data segment base address specified in the Plug and Play Installation Check data structure, a limit of 64KB, and the descriptor must be read/write capable. If this function is called from real mode, BiosSelector should be set to the Real mode 16-bit data segment address as specified in the Plug and Play Installation Check Structure. Refer to section 4.4 of the Plug and Play BIOS Specification revision 1.0a for more information on the Plug and Play Installation Check Structure and the elements that make up the structure. Dmibios2 8 of 49 29 July, 1996

This function is available in real mode and 16-bit protected mode. Returns: If successful - DMI_SUCCESS If an Error (Bit 7 set) or a Warning occurred, the Error Code will be returned in AX, the FLAGS and all other registers will be preserved Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector dmiselector segment/selector of dmistrucbuffer; Pointer to dmistrucbuffer offset of dmistrucbuffer segment/selector of Structure ; Pointer to Structure offset of Structure GET_ DMI_STRUCTURE ; Function number, 51h call FAR PTR entrypoint add sp, 14 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error 2.4.3 Function 52h Set DMI Structure Synopsis: short FAR (*entrypoint)(function, dmidatabuffer, dmiworkbuffer, Control, dmiselector, BiosSelector) short Function; /* PnP BIOS Function 52h */ unsigned char FAR *dmidatabuffer; /* Pointer to buffer containing new/change data */ unsigned char FAR *dmiworkbuffer; /* Pointer to work buffer area for the BIOS */ unsigned char Control; /* Conditions for performing operation */ unsigned short dmiselector; /* DMI data read/write selector */ unsigned short BiosSelector; /* PnP BIOS readable/writeable selector */ Description: Optional. This function will set the DMI structure identified by the type (and possibly handle) found in the DMI structure header in the buffer pointed to by dmidatabuffer. Values that the BIOS allows to be set in the supplied structure will either be updated by the call, or will cause the BIOS to perform some defined action (such as enabling a hardware option, etc.). Unless otherwise specified, all structures and structure values defined in Section 3, DMI BIOS Structures, are read-only and cannot be set. Attempts to set these structures will return a DMI_READ_ONLY error. A structure field that is composed of read/write and read-only subfields can still be set -- so long as the read-only portion of the field is unmodified. Attempting to write to a read-only subfield will also cause a DMI_READ_ONLY to be returned. Dmibios2 9 of 49 29 July, 1996

The dmidatabuffer parameter references a structure of the following format: Offset Field Length Description 00h Command BYTE Identifies the structure-setting operation to be performed, one of: 00h 01h 02h 03h 04h 05h A single byte of information is to be changed in the structure identified by StructureHeader A word (two bytes) of information is to be changed in the structure identified by StructureHeader A double-word (four bytes) of information is to be changed in the structure identified by StructureHeader The structure identified by StructureHeader is to be added to the DMI structure pool The structure identified by StructureHeader is to be deleted from the DMI structure pool A string s value is to be changed in the structure identified by StructureHeader. 06h-0FFh Reserved for future assignment by this specification. 01h FieldOffset BYTE For a structure change Command, identifies the starting offset within the changed structure s fixed data of the to-be-changed item. For a string-value change Command, identifies the offset within the structure s fixed data associated with the string s number. This field is ignored for all other Commands. 02h ChangeMask DWORD For a structure-change Command, identifies the ANDing mask to be applied to the existing structure data prior to applying the ChangeValue. The number of significant bytes within this area is defined by the Command. This field is ignored for all other Commands. 06h ChangeValue DWORD For a structure-change Command, identifies the data value to be ORed with the existing structure data after applying the ChangeMask. The number of significant bytes within this area is defined by the Command. This field is ignored for all other Commands. 0Ah DataLength WORD For a structure-add Command, identifies the full length of the to-beadded structure. The length includes the structure header, the fixedlength portion of the structure, and any string data which accompanies the added structure including all null-terminators. For a string-value change Command, identifies the length of the string data (including the null-terminator); if the length is 1, the current string is deleted. This field is ignored for all other Commands. 0Ch StructureHeader 4 BYTEs Contains the structure header (see Structure Header Format on page 22) of the structure to be added, changed, or deleted. 10h StructureData Var For a structure-add Command, contains the data to be associated with the DMI BIOS Structure identified by the StructureHeader. For a string-value change Command, contains the string s data (the number of characters is identified by DataLength). This field is ignored for all other Commands. The dmiworkbuffer parameter references a work buffer for use by the BIOS in performing the request; the contents of the buffer are destroyed by the BIOS processing. This work buffer must be read/write and sized to hold the entire DMI structure pool, based on the maximum structure-size information (StructureSize * NumStructures) Dmibios2 10 of 49 29 July, 1996

returned by Function 50h Get DMI Information (see page 7) plus the size of any structure to be added by the request. The Control flag provides a mechanism for indicating to the BIOS whether the set request is to take effect immediately, or if this is a check to validate the to-be-updated data. Control is defined as: Bit 0 0 = Do not set the specified structure, but validate its parameters. 1 = Set the structure immediately. Bits 1:7 Reserved, must be 0. If bit 0 of Control is 0, then the dmidatabuffer values are checked for validity. If any are not valid, then the function returns DMI_BAD_PARAMETER; if any read-only field is modified, the function returns DMI_READ_ONLY. Validity checking is useful to determine if the BIOS supports setting a structure field to a particular value or whether the BIOS supports writing to a specific structure field. For example, it may be useful for an OEM to determine beforehand whether the OEM's BIOS supports a "Reboot to Diagnostics Now" setting in an OEM-defined structure. The protected-mode read/write selector dmiselector has base equal to dmistoragebase and a limit of at least dmistoragesize, so long as the dmistoragebase returned from Function 50h Get DMI Information was non-zero. The BiosSelector parameter enables the system BIOS, if necessary, to update system variables that are contained in the system BIOS memory space. If this function is called from protected mode, the caller must create a data segment descriptor using the 16-bit Protected Mode data segment base address specified in the Plug and Play Installation Check data structure, a limit of 64KB, and the descriptor must be read/write capable. If this function is called from real mode, BiosSelector should be set to the Real mode 16-bit data segment address as specified in the Plug and Play Installation Check Structure. Refer to section 4.4 of the Plug and Play BIOS Specification revision 1.0a for more information on the Plug and Play Installation Check Structure and the elements that make up the structure. This function is available in real mode and 16-bit protected mode. Note: If the system BIOS supports structure-change notification, a structure-change event will be issued by the BIOS upon its successful completion of a structure-setting (rather than validation) function call. See Structure Change Notification Interface on page 12 for more information. Returns: If successful - DMI_SUCCESS If an error occurred, the Error Code will be returned in AX. The FLAGS and all other registers will be preserved. Errors: DMI_BAD_PARAMETER A parameter contains an invalid or unsupported value. DMI_READ_ONLY A parameter is read-only and differs from the present value an attempt was made to modify a read-only value. DMI_ADD_STRUCTURE_FAILED The desired structure could not be added due to insufficient storage space. DMI_INVALID_HANDLE For an add (03h) Command, the structure handle present in the StructureHeader already exists or, for a change (00h to 02h and 05h) or delete (04h) Command, the structure handle does not exist. Dmibios2 11 of 49 29 July, 1996

Example: The following example illustrates how the 'C' style call interface could be made from an assembly language module: BiosSelector dmiselector Control segment/selector of dmiworkbuffer ;pointer to BIOS temporary buffer offset of dmiworkbuffer segment/selector of dmidatabuffer ; pointer to structure offset of dmidatabuffer SET_DMI_STRUCTURE ; Function number, 52h call FAR PTR entrypoint add sp, 16 ; clean stack cmp ax, DMI_SUCCESS ; Successful? jne error ; No, go handle error 2.5 Structure Change Notification Interface Certain classes of systems may provide the capability for the addition or removal of system devices while the system unit is powered on, such as inserting a Notebook unit into a Docking Station. System BIOS support is necessary for providing DMI Structure Change Notification accessible to system software so that when devices are added or removed the system software will comprehend any changes in the DMI BIOS Structures. Structure Change Notification can be implemented as either a polled method or as asynchronous Plug-and-Play events. For information on how Plug-and-Play event notification is accessed, see section 4.6 of the Plug and Play BIOS Specification revision 1.0a. When system software is notified on an event by either mechanism, it can then call the BIOS runtime function (Plug and Play BIOS Function 3 - Get Event) to get the type of event. In addition to the events defined in the Plug and Play BIOS Specification, the following event has been defined. Note: Some DMI structure values might be inherently changing (e.g. an OEM-specific structure which returns system temperature and voltage values). Due to the frequency of the values change, the BIOS might not return Structure Change status for this type of structure. DMI_STRUCTURE_CHANGE_EVENT 7FFFh This message indicates that there has been a change in the DMI Information being maintained by the System BIOS. Upon receiving a DMI_STRUCTURE_CHANGE_EVENT, system software can call the BIOS runtime function 53h (Get Structure Change Information) to determine the exact cause of the DMI structure-change event. Dmibios2 12 of 49 29 July, 1996

2.5.1 Function 53h Get Structure Change Information Synopsis: short FAR (*entrypoint)(function, dmichangestructure, dmiselector, BiosSelector); short Function; /* PnP BIOS Function 53h */ unsigned char FAR *dmichangestructure; /* Pointer to DMI Change structure */ unsigned short dmiselector; /* DMI data read/write selector */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for DMI BIOS Dynamic Structure Change Notification Support. This function will allow system software to get information about what type of DMI structure-change occurred. The DMI structure-change information will be returned in the 16-byte memory buffer pointed to by dmichangestructure in the following format: Field Offset Length Value DMI Change Status 00h BYTE ENUM DMI Change Type 01h BYTE Bit Field DMI Structure Handle 02h WORD Varies Reserved 04h-0Fh 12 BYTEs 00h DMI Change Status: 00h No Change 01h Other 02h Unknown 03h Single DMI Structure Affected 04h Multiple DMI Structures Affected 05h - 0FFh Reserved DMI Change Type: Bit 0 One or more structures was changed, when 1. Bit 1 One or more structures was added, when 1. See Function 52h Set DMI Structure for information about adding DMI structures. Byte 2:7 Reserved, must be 0 If DMI Change Status 03h (Single Structure Affected) is returned, the number (or handle) of the affected structure is present in the "DMI Structure Handle" field; DMI Change Type identifies whether the structure was changed (01h) or added (02h). If DMI Change Status 04h (Multiple DMI Structures Affected) is returned, the caller must enumerate all the structures to determine what was changed and/or added. DMI Change Type identifies whether multiple structures were changed (01h), multiple structures were added (02h), or structures were both changed and added (03h). The DMI Change Status Byte remains valid until Function 53h is called. The calling of Function 53h will reset the DMI Change Status Byte to be reset to zero. If the call is issued in the absence of a DMI event, the function returns error code 86h (DMI_NO_CHANGE). The protected-mode read/write selector dmiselector has base equal to dmistoragebase and limit of at least dmistoragesize so long as the dmistoragebase value returned from Function 50h was non-zero. Dmibios2 13 of 49 29 July, 1996

The BiosSelector parameter enables the system BIOS, if necessary, to update system variables that are contained in the system BIOS memory space. If this function is called from protected mode, the caller must create a data segment descriptor using the 16-bit Protected Mode data segment base address specified in the Plug and Play Installation Check data structure, a limit of 64KB, and the descriptor must be read/write capable. If this function is called from real mode, BiosSelector should be set to the Real mode 16-bit data segment address as specified in the Plug and Play Installation Check Structure. Refer to section 4.4 of the Plug and Play BIOS Specification revision 1.0a for more information on the Plug and Play Installation Check Structure and the elements that make up the structure. This function is available in real mode and 16-bit protected mode. Returns: If successful - DMI_SUCCESS If an Error (Bit 7 set) or a Warning occurred the Error Code will be returned in AX, the FLAGS and all other registers will be preserved Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector dmiselector segment/selector of dmichangestructure offset of dmichangestructure GET_ DMI_STRUCTURE_CHANGE_INFO ; Function number, 53h call FAR PTR entrypoint add sp, 10 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error Dmibios2 14 of 49 29 July, 1996

2.6 Control Interface 2.6.1 Function 54h DMI Control Synopsis: short FAR (*entrypoint)(function, SubFunction, Data, Control, dmiselector, BiosSelector) short Function; /* PnP BIOS Function 54h */ short SubFunction; /* Defines the specific control operation */ void FAR *Data; /* Input/output data buffer, SubFunction specific */ unsigned char Control; /* Conditions for setting the structure */ unsigned short dmiselector; /* DMI data read/write selector */ unsigned short BiosSelector; /* PnP BIOS readable/writeable selector */ Description: Optional. This function provides the interface to perform implementation-specific functions for the system, as defined by the SubFunction parameter and its (optional) Data values. SubFunction Name Description 0000h DMI_CLEAR_EVENT_LOG Clears the event log as described in System Event Log (Type 15) on page 45. The Data parameter is reserved and must be set to 0. 0001h DMI_CONTROL_LOGGING Data points to a 2-word (4-byte) buffer that describes how to control event logging see 2.6.2 for bit-wise definitions. The first word (offset 0:1) identifies the ANDing mask to be applied to the existing log-control value prior to ORing the second word (offset 2:3). The second word is modified by the BIOS to contain the log-control value on entry to this function. 0002h-3FFFh Reserved Reserved for future definition by this specification. 4000h-7FFFh Reserved for BIOS vendor Available for use by the BIOS vendor. 8000h-FFFFh Reserved for system vendor Available for use by the system vendor. Note: A BIOS might support the Log Control function but not support all the SubFunction values. The Control flag provides a mechanism for indicating to the BIOS whether the operation is to be performed immediately, or if this is a check to validate the operation s availability and/or data. Control is defined as: Bit 0 0 = Do not perform the operation, but validate its parameters. 1 = Perform the operation immediately. Bits 1:7 Reserved, must be 0. If bit 0 of Control is 0, then the SubFunction and contents of Data are checked for validity. If any are not valid, then the function returns DMI_BAD_PARAMETER. Validity checking is useful to determine if the BIOS supports a specific DMI Control SubFunction. The protected-mode read/write selector dmiselector has base equal to dmistoragebase and limit of at least dmistoragesize so long as the dmistoragebase value returned from Function 50h was non-zero. The BiosSelector parameter enables the system BIOS, if necessary, to update system variables that are contained in the system BIOS memory space. If this function is called from protected mode, the caller must create a data Dmibios2 15 of 49 29 July, 1996

segment descriptor using the 16-bit Protected Mode data segment base address specified in the Plug and Play Installation Check data structure, a limit of 64KB, and the descriptor must be read/write capable. If this function is called from real mode, BiosSelector should be set to the Real mode 16-bit data segment address as specified in the Plug and Play Installation Check Structure. Refer to section 4.4 of the Plug and Play BIOS Specification revision 1.0a for more information on the Plug and Play Installation Check Structure and the elements that make up the structure. This function is available in real mode and 16-bit protected mode. Returns: If successful - DMI_SUCCESS If an error occurred, the Error Code will be returned in AX. The FLAGS and all other registers will be preserved. Errors: DMI_BAD_PARAMETER The Data contents were not valid for the requested SubFunction. DMI_INVALID_SUBFUNCTION The SubFunction requested is not supported by the system BIOS. Example: The following example illustrates how the 'C' style call interface could be made from an assembly language module: BiosSelector dmiselector Control segment/selector of Data ; pointer to SubFunction data offset of Data SubFunction DMI_CONTROL ; Function number, 54h call FAR PTR entrypoint add sp, 14 ; clean stack cmp ax, DMI_SUCCESS ; Successful? jne error ; No, go handle error 2.6.2 DMI_CONTROL_LOGGING Control Word Word Bit Position Meaning if Set 0 Enable Event Logging (overall) 1 Enable Correctable Memory Error Events Logging 2-15 Reserved for future assignment by this specification. Dmibios2 16 of 49 29 July, 1996

2.7 General Purpose Nonvolatile Storage Interface A General-Purpose NonVolatile (GPNV) area is a persistent general-purpose storage area managed by the Desktop Management BIOS. Multiple GPNV areas can be supported by a particular BIOS implementation. The size, format and location of a GPNV are not defined by this specification nor is the number of GPNV areas these attributes are OEM-specific. A GPNV storage area is not a requirement for a Desktop Management BIOS. It is one method that might be used to store the System Event Log (see section 3.2.16, page 45). A GPNV storage area is not necessarily dedicated to the Desktop Management functions of the BIOS, it can also be used by other services which require non-volatile storage. A Handle parameter is passed into the GPNV function calls to specify which GPNV area is to be accessed. The Handle for the first GPNV area is 0, with remaining GPNV areas identified by Handle values 1, 2, 3... n, where (n+1) is the total number of GPNV areas supported by a particular BIOS implementation. A GPNVLock parameter provides a mechanism for cooperative use of the GPNV. The GPNVLock value is set on a Read GPNV request (function 56h) and cleared on a Write GPNV request (function 57h). The BIOS compares the value of the GPNVLock which is set on a Read GPNV request with the value of the GPNVLock passed as a parameter into the GPNV Write request if they match, the GPNV Write request succeeds and the GPNV data area will be updated on completion of the GPNV Write; if the lock values do not match, the BIOS does not update the GPNV area and DMI_CURRENTLY_LOCKED is returned. Note: GPNV locks are held until unlocked, even through system power and reboot cycles. The method used to preserve the GPNV Locks through boot cycles is left up to the system designer. A BIOS might choose to hide a GPNV area by defining a special lock value which is required to access the area. In this case, the special GPNVLock value must be supplied with the GPNV read and write requests or the function is failed by the BIOS with DMI_INVALID_LOCK. A lock set request succeeds when there is no outstanding lock set at the time that the Read GPNV request (Function 56h) is made. A lock set request fails when there is already a lock set as the result of a previous Read GPNV request (which has not yet been cleared with a Function 57h Write GPNV request) or when a predefined lock value is required in order to access a particular GPNV area and the GPNVLock value provided by the caller does not match the required value. The BIOS makes no attempt to enforce mutually-exclusive access to the GPNV it is up to callers of GPNV Read to ensure unique GPNVLock values (e.g. process ID ). Dmibios2 17 of 49 29 July, 1996

2.7.1 Function 55H Get General-Purpose NonVolatile Information Synopsis: short FAR (*entrypoint)(function, Handle, MinGPNVRWSize, GPNVSize, NVStorageBase, BiosSelector); short Function; /* PnP BIOS Function 55h */ unsigned short FAR *Handle; /* Identifies which GPNV to access */ unsigned short FAR *MinGPNVRWSize; /* Minimum buffer size in bytes for accessing GPNV */ unsigned short FAR *GPNVSize; /* Size allocated for GPNV within the R/W Block */ unsigned long FAR *NVStorageBase; /* 32-bit physical base address for... */ /*... mem. mapped nonvolatile storage media */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for GPNV support. This function returns information about a General Purpose NonVolatile (GPNV) area. The Handle argument is a pointer to a number that identifies which GPNV s information is requested, a value of 0 accesses the first (or only) area. On return: *Handle is updated either with the handle of the next GPNV area or, if there are no more areas, 0FFFFh. GPNV handles are assigned sequentially by the system, from 0 to the total number of areas (minus 1). *MinGPNVRW Size is updated with the minimum size, in bytes, of any buffer used to access this GPNV area. For a Flash based GPNV area, this would be the size of the Flash block containing the actual GPNV. *GPNVSize is updated with the size, in bytes, of this GPNV area (which is less than or equal to the MinGPNVRWSize value). *NVStorageBase is updated with the paragraph-aligned, 32-bit absolute physical base address of this GPNV. If non-zero, this value allows the caller to construct a 16-bit data segment descriptor with a limit of MinGPNVRWSize and read/write access. If the value is 0, protected-mode mapping is not required for this GPNV. Returns: If successful - DMI_SUCCESS If an Error (Bit 7 set) or a Warning occurred the Error Code will be returned in AX, the FLAGS and all other registers will be preserved Dmibios2 18 of 49 29 July, 1996

Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector segment/selector of NVStorageBase offset of NVStorageBase segment/selector of GPNVSize offset of GPNVSize segment/selector of MinGPNVRWSize offset of MinGPNVRWSize segment/selector of Handle offset of Handle GET_GPNV_INFORMATION ; Function number, 55h call FAR PTR entrypoint add sp, 20 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error 2.7.2 Function 56H Read General-Purpose NonVolatile Data Synopsis: short FAR (*entrypoint)(function, Handle, GPNVBuffer, GPNVLock, GPNVSelector, BiosSelector); short Function; /* PnP BIOS Function 56h */ unsigned short Handle; /* Identifies which GPNV is to be read */ unsigned char FAR *GPNVBuffer; /* Address of buffer in which to return GPNV */ short FAR *GPNVLock; /* Lock value */ unsigned short GPNVSelector; /* Selector for GPNV Storage */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for GPNV support. This function is used to read an entire GPNV area into the buffer specified by GPNVBuffer. It is the responsibility of the caller to ensure that GPNVBuffer is large enough to store the entire GPNV storage block - this buffer must be at least the MinGPNVRWSize returned by Function 55h - Get GPNV Information. The Handle argument identifies the specific GPNV to be read. On a successful read of a GPNV area, that GPNV area will be placed in the GPNVBuffer beginning at offset 0. The protected-mode selector GPNVSelector has base equal to NVStorageBase and limit of at least MinGPNVRWSize so long as the NVStorageBase value returned from Function 55h was non-zero. Passing a GPNVLock value of -1 to the GPNV Read causes the GPNVLock value to be ignored in this case the underlying logic makes no attempt to store a lock value for comparison with lock values passed into GPNV Write. Any value provided for GPNVLock besides -1 is accepted as a valid value for a lock request. Returns: If the GPNV lock is supported and the lock set request succeeds, the caller s GPNVLock is set to the value of the current lock and the function returns DMI_SUCCESS. If the GPNV request fails, one of the following values is returned: DMI_ LOCK_NOT_SUPPORTED DMI_ INVALID_LOCK DMI_ CURRENTLY_LOCKED Dmibios2 19 of 49 29 July, 1996

For return status codes DMI_SUCCESS, DMI_LOCK_NOT_SUPPORTED and DMI_CURRENTLY_LOCKED, the GPNV Read function returns the current contents of the GPNV associated with Handle as the first GPNVSize bytes within GPNVBuffer, starting at offset 0. If a lock request fails with DMI_CURRENTLY_LOCKED status, the caller s GPNVLock will be set to the value of the current lock. Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector GPNVSelector segment/selector of GPNVLock offset of GPNVLock segment/selector of GPNVBuffer offset of GPNVBuffer Handle READ_GPNV_DATA ; Function number, 56h call FAR PTR entrypoint add sp, 16 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error 2.7.3 Function 57H Write General-Purpose NonVolatile Data Synopsis: short FAR (*entrypoint)(function, Handle, GPNVBuffer, GPNVLock, GPNVSelector, BiosSelector); short Function; /* PnP BIOS Function 57h */ unsigned short Handle; /* Identifies which GPNV is to be written */ unsigned char FAR *GPNVBuffer; /* Address of buffer containing complete GPNV to write*/ short GPNVLock; /* Lock value */ unsigned short GPNVSelector; /* Selector for GPNV Storage */ unsigned short BiosSelector; /* PnP BIOS readable/writable selector */ Description: Required for GPNV support. This function is used to write an entire GPNV from the GPNVBuffer into the nonvolatile storage area. The Handle argument identifies the specific GPNV to be written. The protectedmode selector GPNVSelector has base equal to NVStorageBase and limit of at least MinGPNVRWSize so long as the NVStorageBase value returned from Get GPNV Information was non-zero. The caller should first call Read GPNV Data (with a lock) to get the current area contents, modify the data, and pass it into this function this ensures that the GPNVBuffer which is written contains a complete definition for the entire GPNV area. If the BIOS uses some form of block erase device, the caller must also allocate enough buffer space for the BIOS to store all data from the part during the reprogreamming operation, not just the data of interest. The data to be written to the GPNV selected by Handle must reside as the first GPNVSize bytes of the GPNVBuffer. Note: The remaining (MinGPNVRWSize-GPNVSize) bytes of the GPNVBuffer area are used as a scratch-area by the BIOS call in processing the write request; the contents of that area of the buffer are destroyed by this function call. The GPNVLock provides a mechanism for cooperative use of the GPNV, and is set during a GPNV Read (Function 56h). If the input GPNVLock value is -1 the caller requests a forced write to the GPNV area, ignoring any outstanding GPNVLock. If the caller is not doing a forced write, the value passed in GPNVLock to the GPNV Write must be the same value as that (set and) returned by a previous GPNV Read (Function 56h). Dmibios2 20 of 49 29 July, 1996

Returns: The GPNV Write function returns a value of DMI_ LOCK_NOT_SUPPORTED when a GPNVLock value other than -1 is specified and locking is not supported. A return status of DMI_ CURRENTLY_LOCKED indicates that the call has failed due to an outstanding lock on the GPNV area which does not match the caller s GPNVLock value. Any outstanding GPNVLock value (which was set by a previous Function 56H Read General-Purpose NonVolatile Data) gets cleared on a successful write of the GPNV. Example: The following example illustrates how the C style call interface could be made from an assembly language module: BiosSelector GPNVSelector GPNVLock segment/selector of GPNVBuffer offset of GPNVBuffer Handle WRITE_GPNV_DATA ; Function number, 57h call FAR PTR entrypoint add sp, 14 ; Clean up stack cmp ax, DMI_SUCCESS ; Function completed successfully? jne error Dmibios2 21 of 49 29 July, 1996

3. DMI BIOS Structures The total number of structures can be obtained through the Get DMI Information function (see 2.4.1 on page 7). The System Information is presented to an application as a set of structures that are obtained by calling the Get DMI Structure function once per structure (see 2.4.2 on page 8). Note: All numbers are in decimal format unless otherwise indicated. h indicates hexadecimal format. b indicates binary format 3.1 Structure Standards Each DMI structure has a formatted section and an optional unformed section. The formatted section of each structure begins with a 4-byte header. Remaining data in the formatted section is determined by the structure type, as is the overall length of the formatted section. The unformed section of the structure is used for passing variable data such as text strings, see 3.1.2 Text Strings for more information. 3.1.1 Structure Header Format Each DMI BIOS structure begins with a 4-byte header, as follows: Offset Name Length Description 00h Type BYTE Specifies the type of structure. Types 0 through 127 (7Fh) are reserved for and defined by this specification. Types 128 through 256 (80h to FFh) are available for system- and OEMspecific information. 01h Length BYTE Specifies the length of the formatted area of the structure, starting at the Type field. The length of the structure s stringset is not included. 02h Handle WORD Specifies the structure s handle, a unique 16-bit number in the range 0 to 0FFFEh. The handle can be used with the Get DMI Structure function to retrieve a specific structure; the handle numbers are not required to be contiguous. If the system configuration changes, a previously assigned handle might no longer exist. However once a handle has been assigned by the BIOS, the BIOS cannot not re-assign that handle number to another structure. Dmibios2 22 of 49 29 July, 1996

3.1.2 Text Strings Text strings associated with a given DMI structure are returned in the dmistrucbuffer, appended directly after the formatted portion of the structure. This method of returning string information eliminates the need for application software to deal with pointers embedded in the DMI structure. Each string is terminated with a null (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of a DMI structure references a string, it does so by specifying a non-zero string number within the structure s string-set. For example, if a string field contains 02h, it references the second string following the formatted portion of the DMI structure. If a string field references no string, a null (0) is placed in that string field. If the formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string references), the formatted section of the structure is followed by two null (00h) BYTES. Note: Each text string is limited to 64 significant characters due to system MIF limitations. Example: BIOS Information BIOS_Info LABEL BYTE db 0 ; Indicates BIOS Structure Type db 12h ; Length of information in bytes dw? ; Reserved for handle db 01h ; String 1 is the Vendor Name db 02h ; String 2 is the BIOS version dw 0E800h ; BIOS Starting Address db 03h ; String 3 is the BIOS Build Date dq BIOS_Char ; BIOS Characteristics db 1 ; Size of BIOS ROM is 128K (64K * (1 + 1)) db System BIOS Vendor Name,0 ; db Version 4.04,0 ; db 00/00/00,0 ; db 0 ; End of strings Dmibios2 23 of 49 29 July, 1996

3.2 Structure Definitions 3.2.1 BIOS Information (Type 0) Offset Name Length Value Description 00h Type BYTE 0 BIOS Information Indicator 01h Length BYTE Varies 12h + number of BIOS Characteristics Extension Bytes. If no Extension Bytes are used the Length will be 12h. 02h Handle WORD Varies 04h Vendor BYTE Varies String number of the BIOS Vendor s Name 05h BIOS Version BYTE Varies String number of the BIOS Version. This is a free form string which may contain Core and OEM version information. 06h 08h 09h 0Ah 12h BIOS Starting Address Segment BIOS Release Date BIOS ROM Size BIOS Characteristics BIOS Characteristics Extension Bytes WORD Varies Segment location of BIOS starting address, e.g.0e800h. Note: The size of the runtime BIOS image can be computed by subtracting the Starting Address Segment from 10000h and multiplying the result by 16. BYTE Varies String number of the BIOS release date. The date string, if supplied, is in the format mm/dd/yy. BYTE Varies (n) Size (n) is 64K * (n+1) QWORD Bit Field Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc. See 3.2.1.1. Zero or Bit Field Optional space reserved for future supported more functions. The number of Extension Bytes that BYTEs are present is indicated by the Length in offset 1 minus 12h. Dmibios2 24 of 49 29 July, 1996