`
`DMI BIOS Specification Version 2..
`
`American Megatrends Inc.
`Award Software International Inc.
`Dell Computer Corporation
`Intel Corporation
`Phoenix Technologies Ltd.
`SystemSoft Corporation
`
`Desktop Management BIOS Specification
`
`Version 2.00.1
`
`July 18, 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 implied, 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.
`
`dmib202.doc
`
`1 of 50
`
`25 September, 1996
`
`Page 1
`
`HTC EX. 1024
`HTC v. Ancora
`US Patent No. 6,411,941
`
`
`
`V
`
`DMI BIOS Specification Version 2.i.
`
`Document Information
`
`The softcopy version of this specification, in Microsoft Word for Windows 95 version 7.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
`Version 2.0M
`
`Version 2.00
`
`Version 2.00.1
`
`09/14/95
`12/12/95
`
`Initial Release of DRAFT COPY
`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
`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.
`07/18/96 Minor updates for new technology and clarifications.
`- Added definitions for Pentium ® Pro, Burst EDO, and SDRAM.
`- Added clarifications to the Memory Controller Error Status.
`
`03/06/96
`
`dmib202.doc
`
`2of50
`
`25 September, 1996
`
`Page 2
`
`
`
`
`
`....cr~ .. -
`
`,
`
`d
`
`I-.-.
`
`DMI BIOS Specification Version 2.6
`
`Table Of Contents
`
`1. OVERVIEW
`
`1.1 REFERENCES
`1.2 ENHANCEMENTS TO THE CURRENT BIOS ARCHITECTURE
`
`2. ACCESSING. DMI INFORMATION
`
`2.1 CALLING CONVENTION
`2.2 DMI BIOS FUNCTIONS
`2.3 ERROR RETURN CODES
`2.4 DMI BIOS STRUCTURE ACCESS INTERFACE
`2.4.1 FUNCTION 50H - GET DMI INFORMATION
`2.4.2 FUNCTION 51H - GET DMI STRUCTURE
`2.4.3 FUNCTION 52H - SET DMI STRUCTURE
`2.5 STRUCTURE CHANGE NOTIFICATION INTERFACE
`2.5.1 FUNCTION 53H - GET STRUCTURE CHANGE INFORMATION
`2.6 CONTROL INTERFACE
`2.6.1 FUNCTION 54H - DMI CONTROL'
`2.6.2 DMI_CONTROL_LOGGING CONTROL WORD
`2.7 GENERAL PURPOSE NONVOLATILE STORAGE INTERFACE
`2.7.1 FUNCTION 55H - GET GENERAL-PURPOSE NONVOLATILE INFORMATION
`2.7.2 FUNCTION 56H - READ GENERAL-PURPOSE NONVOLATILE DATA
`2.7.3 FUNCTION 57H - WRITE GENERAL-PURPOSE NONVOLATILE DATA
`
`3. DMI BIOS STRUCTURES
`
`3.1 STRUCTURE STANDARDS
`3.1.1 STRUCTURE HEADER FORMAT
`3.1.2 TEXT STRINGS
`3.2 STRUCTURE DEFINITIONS.
`3.2.1 BIOS INFORMATION (TYPE 0)
`3.2.2 SYSTEM INFORMATION (TYPE 1)
`3.2.3 BASE BOARD INFORMATION (TYPE 2)
`3.2.4 SYSTEM ENCLOSURE OR CHASSIS (TYPE 3)
`3.2.5 PROCESSOR INFORMATION (TYPE 4)
`3.2.6 MEMORY CONTROLLER INFORMATION (TYPE 5)
`3.2.7 MEMORY MODULE INFORMATION (TYPE 6)
`3.2.8 CACHE INFORMATION (TYPE 7)
`3.2.9 PORT CONNECTOR INFORMATION (TYPE 8)
`3.2.10 SYSTEM SLOTS (TYPE 9)
`3.2.11 ON BOARD DEVICES INFORMATION (TYPE 10)
`
`5
`
`5
`5
`
`6
`
`6
`6
`7
`8
`8
`9
`10
`13
`14
`16
`16
`17
`18
`19
`20
`21
`
`23
`
`23
`23
`24
`25
`25
`27
`27.
`27
`29
`32
`34
`37
`38
`41
`43
`
`dmib202.doc
`
`3 of 50
`
`25 September, 1996
`
`Page 3
`
`
`
`d
`
`DMI BIOS Specification Version 2.6
`
`3.2.12 OEM STRINGS (TYPE 11)
`3.2.13 SYSTEM CONFIGURATION OPTIONS (TYPE 12)
`3.2.14 BIOS LANGUAGE INFORMATION (TYPE 13)
`3.2.15 GROUP ASSOCIATIONS (TYPE 14)
`3.2.16 SYSTEM EVENT LOG (TYPE 15)
`
`dmib202. doc
`
`4 0/f 50
`
`25 September, 1996.
`
`Page 4
`
`
`
`.r'
`
`DMI BIOS Specification Version 2.i
`
`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 bfe 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.
`
`dmib202.doc
`
`5 of 50
`
`25 September, 1996
`
`Page 5
`
`
`
`DMI BIOS Specification Version 2.6
`
`'
`
`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.
`
`GETDMI_INFORMATION
`
`GET DMI_STRUCTURE
`
`SET_DMI_STRUCTURE
`
`GET DMISTRUCTURE_
`CHANGE_INFO
`
`DMI CONTROL
`GET GPNV INFORMATION
`
`READ_GPNV_DATA.
`
`WRITE_GPNV_DATA
`
`Reserved for Future Use
`
`50h
`
`51h
`
`52h
`
`53h
`
`54h
`55h
`
`56h
`
`57h
`
`Returns the Number of Structures,
`the Size of the Largest Structure,
`and the DMI BIOS Revision.
`Copies the information for the
`specified DMI Structure into the
`buffer specified by the caller.
`Copies the information for the
`specified DMI structure from the
`buffer specified by the caller.
`.. Returns the DMI Structure Change Required for Dynamic
`Information into a 16-byte buffer
`Structure-change
`specified by the caller.
`Notification Support
`Controls a system action
`Optional
`Returns information about the
`Required for GPNV
`General Purpose Non-Volatile
`Support
`Storage Area
`Reads the entire specified GPNV
`contents into a buffer specified by
`the caller.
`Copies the contents of the user
`specified buffer into the GPNV.
`The function causes the entire
`specified GPNV to be updated.
`58h-5Fh Reserved, will return
`DMIFUNCTION_NOT_
`SUPPORTED.
`
`Required
`
`Required
`
`Optional
`
`Required for GPNV
`Support
`
`Required for GPNV
`Support
`
`Reserved
`
`dmib202.doc
`
`6 of 50
`
`25 September, 1996
`
`Page 6
`
`
`
`DMI BIOS Specification Version 2.b
`
`2.3 Error Return Codes
`
`After the call has been made, the following return codes are available in the AX Register.
`
`DMISUCCESS
`DMI_UNKNOWN_FUNCTION
`DMI_FUNCTION-NOTSUPPORTED
`DMIINVALID_HANDLE
`
`DMI_BADPARAMETER
`
`DMI_INVALIDSUBFUNCTION
`
`DMI NO_CHANGE
`
`DMI ADD_STRUCTURE_FAILED
`
`DM1_READ_ONLY
`
`DMI LOCKNOTSUPPORTED
`
`DMI_CURRENTLY_LOCKED
`
`DMI_ INVALID_LOCK
`
`00h
`81h
`82h
`83h
`
`84h
`
`85h
`
`.86h
`
`87h
`
`8Dh
`
`90h
`
`91h
`
`92h
`
`Function Completed Successfully
`Unknown, or invalid, function number passed
`The function is not supported on this system
`DMI Structure number/handle passed is invalid or out of
`range.
`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.
`The SubFunction parameter supplied on a DMI Control
`function is not supported by the system BIOS.
`There are no changed DMI structures pending
`notification.
`Returned when there was insufficient storage space to add
`the desired stricture.
`A "Set DMI Structure" request failed because one or
`more of the to-be-changed structure fields are read-only.
`The GPNV functions do not support locking for the
`specified GPNV handle.
`The GPNV lock request failed - the GPNV is already
`locked.
`The caller has failed to present the predefined GPNVLock
`value which is expected by the BIOS for access of the
`GPNV area.
`
`dmib202. doc
`drnb20.do
`
`7 of 50
`7.-- of 502
`
`---
`
`25 Sepember,
`1996
`epeb.19
`
`Page 7
`
`
`
`DMI BIOS Specification Version 2.0
`
`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);
`/* PnP BIOS Function 50h */
`/* Revision of the DMI BIOS Extensions */
`/* Maximum Number of Structures the BIOS will return */
`/* Size of largest DMI Structure */
`/* 32-bit physical base address for memory-mapped */
`/* DMI data */
`/* Size of the memory-mapped DMI data *Y
`/* PnP BIOS readable/writable.selector */
`
`short Function;
`unsigned char FAR *dmiBIOSRevision;
`unsigned short FAR *NumStructures; .
`unsigned short FAR *StructureSize;
`unsigned long FAR *dmiStorageBase;
`
`unsigned short FAR *dmiStorageSize;
`unsigned short BiosSelector;
`
`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 51 h. 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 nbn-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 51 h 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.
`
`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:
`
`dmib202.doc
`
`8 of 50
`
`25 September, 1996
`
`Page 8
`
`
`
`DMI BIOS Specification Version 2.0
`
`The following example illustrates how the 'C' style call interface could be made from an assembly language module:
`push
`BiosSelector
`push
`segment/selector of dmiStorageSize
`push
`offset of dmiStorageSize
`push
`segment/selector of dmiStorageBase
`push
`offset of dmiStorageBase
`segment/selector of StructureSize
`push
`push
`offset of StructureSize
`push
`segment/selector of NumStructures
`push
`offset NumStructures
`push
`segment/selector of dmiBIOSRevision ; Pointer to DMIBIOSRevision
`push
`offset dmiBIOSRevision
`push
`GET_DMI_INFORMATION
`call
`FAR PTR entryPoint
`add
`sp, 24
`cmp
`ax, DMI_SUCCESS
`jne
`error
`
`; Pointer to DMIStorageSize
`
`; Pointer to DMIStorageBase
`
`; Pointer to StructureSize
`
`; Pointer to NumStructures
`
`; Function number, 50h
`
`; Clean up stack
`;Function completed successfully?
`
`2.4.2 Function 51h - Get DMI Structure
`
`Synopsis:
`short FAR (*entryPoint)(Function, Structure, dmiStrucBuffer, dmiSelector, BiosSelector);
`short Function;
`/* PnP BIOS Function Slh */
`unsigned short FAR "Structure;
`/* Structure number/handle to retrieve*/
`unsigned char FAR *dmiStrucBuffer;
`/* Pointer to buffer to copy structure data to */
`/* DMI data read/write selector */
`unsigned short dmiSelector;
`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 eithler the next sequential structure handle or the end-of-list indicator OFFFFh.
`
`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.
`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:
`
`dmib202.doc
`dm~202do
`
`9 of 50
`9 f5
`
`25 September, 1996
`5Sptme,19
`
`Page 9
`
`
`
`
`
`'J ,
`
`d.
`
`.
`
`DM/ BIOS Specification Version 2.0
`
`push
`push
`push
`push
`push
`push
`push
`call
`add
`cmp
`jne
`
`BiosSelector
`dmiSelector
`segment/selector of dmiStrucBuffer ; Pointer to dmiStrucBuffer
`offset of dmiStrucBuffer
`segment/selector of Structure
`offset of Structure
`GET_ DMI_STRUCTURE
`FAR PTR entryPoint
`sp, 14
`ax, DMI_SUCCESS
`error
`
`; Clean up stack
`; Function completed successfully?
`
`; Pointer to Structure
`
`; Function number, 51h
`
`2.4.3 Function 52h - Set DMI Structure
`
`Synopsis:
`short FAR (*entryPoint)(Function, dmiDataBuffer, dmiWorkBuffer, Control, dmiSelector, BiosSelector)
`/* PnP BIOS Function 52h */
`short Function;
`/* Pointer to buffer containing new/change data */
`unsigned char FAR *dmiDataBuffer;
`/* Pointer to work buffer area for the BIOS */
`unsigned char'FAR *dmiWorkBuffer;
`/* Conditions for performing operation */
`unsigned char Control,
`/* DMI data read/write selector */
`unsigned short dmiSelector;
`/* PnP BIOS readable/writeable selector */
`unsigned short BiosSelector;
`
`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. Valuesthat 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 i-ead-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 DMLREAD_ONLY to be returned.
`
`dmib202.doc
`
`10 of 150
`
`25 September, 1996
`
`Page 10
`
`
`
`-
`
`---
`
`a
`
`._
`
`d
`
`DMI BIOS Specification Version 2.0
`
`The dm.iDataBuffer parameter references a structure of the following format:
`
`Offset
`00h
`
`01h
`
`02h
`
`06h
`
`OAh
`
`OCh
`
`10h
`
`Field
`Command
`
`Length
`BYTE •
`
`Olh
`
`02h
`
`03h
`
`04h
`
`05h
`
`Description
`Identifies the structure-setting operation to be performed, one of:
`OOh
`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-OFFli Reserved for future assignment by this specification.
`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.
`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.
`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.
`For a structure-add Command, identifies the full length of the to-be-added
`structure. The 'length includes the structure header, the fixed-length
`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.
`StructureHeader 4 BYTEs Contains the structure header (see Structure Header Format on page 23) of
`the structure to be added, changed, or deleted.
`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.
`
`FieldOffset
`
`BYTE
`
`ChangeMask
`
`DWORD
`
`ChangeValue
`
`DWORD
`
`DataLength
`
`WORD
`
`StructureData
`
`Var
`
`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) returned by
`Function 50h - Get DMI Information (see page 8) plus the size of any structure to be added by the request.
`
`dmib202.doc
`
`11 of 50
`
`25 September, 1996
`
`Page 11
`
`
`
`-La.
`
`--.7
`
`DMI BIOS Specification Version 2.-
`
`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
`I = Set the structure immediately.
`Reserved, must be 0.
`
`Bits 1:7
`
`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 DM1 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 13 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
`DMI _READ_ONLY
`
`DMIADD STRUCTURE_FAILED
`
`DMI_INVALID_HANDLE
`
`A parameter contains an invalid or unsupported value.
`A parameter is read-only and differs from the present value -
`an attempt was made to modify a read-only value.
`The desired structure could not be added due to insufficient storage
`space.
`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.
`
`dmib202.doc
`
`12 of 50
`
`25 September, 1996
`
`Page 12
`
`
`
`DMI BIOS Specification Version 2.
`
`d
`
`Example:
`The following example illustrates how the 'C' style call interface could be made from an assembly language module:
`
`push
`push
`push
`push
`push
`push
`push
`push
`call
`add
`cmp
`jne
`
`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
`SETDMI_STRUCTURE
`FAR PTR entryPoint
`
`; Function number, 52h
`
`sp, 16
`
`ax, DMISUCCESS
`error
`
`;clean stack
`;Successful?
`; 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 hias 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_STRUCTURECHANGE_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.
`
`dmib202.doc
`
`13 of50
`
`25 September, 1996
`
`Page 13
`
`
`
`DMI BIOS Specification Version 2 .L,
`
`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 DM1 Change structure */
`/* DMI data read/write selector */
`unsigned short dmiSelector;
`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
`DMI Change Status
`DMI Change Type
`DMI Structure Handle
`Reserved
`
`Offset
`OOh
`Olh
`02h
`04h-OFh
`
`Length
`BYTE
`BYTE
`WORD
`12 BYTEs
`
`Value
`ENUM
`Bit Field
`Varies
`OOh
`
`DMI Change Status:
`No Change
`OOh
`Olh
`Other
`02h
`Unknown
`03h
`Single DMI Structure Affected
`04h
`Multiple DMI Structures Affected
`05h - OFFh
`Reserved
`
`DMI Change Type:
`One or more structures was changed, when 1.
`Bit 0
`One or more structures was added, when 1. See "Function 52h - Set DMI Structure"
`Bit I
`for information about adding DMI structures.
`Reserved, must be 0
`
`Byte 2:7
`
`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
`(0 lh), 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
`so long as the dmiStorageBase value returned from Function 50h was non-zero.
`dmiStorageSize -
`
`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
`
`dmib202.doc
`
`14 of 50
`
`25 September, 1996
`
`Page 14
`
`
`
`d
`
`DMI BIOS Specification Version 2.,
`
`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 I.Oa for more
`information on the Plug and Play Installation Check Structtire 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:
`
`push
`push
`push
`push
`push
`call
`add
`cmp
`jne
`
`BiosSelector
`dmiSelector
`segment/selector of dmiChangeStructure
`offset of dmiChangeStructure
`GET_ DMI_STRUCTURE_CHANGE_INFO; Function number, 53h
`FAR PTR entryPoint
`.sp, 10
`ax, DMI_SUCCESS
`error
`
`; Clean up stack
`; Function completed successfully?
`
`dmib202. doc
`
`15 of 50
`
`25 September, 1996
`
`Page 15
`
`
`
`DMI BIOS Specification Version 2.1
`
`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 SubFunc