`
`2"
`
`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.
`
`\document\ indstd\ dm1\dmb2spc.doc
`
`Page 1
`
`HTC EX. 1013
`HTC v. Ancora
`US Patent No. 6,411,941
`
`
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`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
`Version 2.OM
`
`Version 2.00
`
`09/14/95Initial Release of DRAFT COPY
`12/12/95Final 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
`03/06/96Final 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
`
`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
`
`4
`
`4
`4
`
`5
`
`5
`5
`6
`7
`7
`8
`9
`12
`13
`15
`15.
`16
`
`dmb2spc
`
`2 of 49
`
`5 November, 1996
`
`Page 2
`
`
`
`17
`18
`19
`20
`
`22
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`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)
`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)
`
`dmb2spc
`
`3 of 49
`
`5 November, 1996
`
`Page 3
`
`
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`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.
`
`dmb2spc
`dmb2sx
`
`4 of 49
`4 of 49
`
`5 November, 1996
`5 November, 1996
`
`Page 4
`
`
`
`....2.:~ih
`
`s
`
`DMI BIOS Specification
`
`DRA FT COPYV
`
`Version 2.0
`Version 2.0
`
`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.
`
`UETBI MII_NFORMATIUN
`
`GET DMI_STRUCTURE
`
`SET DMI_STRUCTURE
`
`GET_DMI_STRUCTURE_
`CHANGE_INFO
`
`DMI_CONTROL
`GET_GPNV_INFORMATION
`
`READ_GPNV_DATA
`
`WRITE_GPNV_DATA
`
`Reserved for Future Use
`
`50h
`
`51h
`
`53h
`
`Returns the Number of Structures, Required
`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.
`52h .. Copies the information for the
`specified DMI structure from the
`buffer specified by the caller.
`Returns the DMI Structure
`Change Information into a 16-
`byte buffer specified by the caller.
`
`Required
`
`Optional
`
`Required for
`Dynamic Structure-
`change Notification
`Support
`Optional
`Required for GPNV
`Support
`
`54h
`55h
`
`56h
`
`57h
`
`Controls a system action
`Returns information about the
`General Purpose Non-Volatile
`Storage Area
`Reads the entire specified GPNV
`Required for GPNV
`contents into a buffer specified by .Support
`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
`DMI FUNCTION_NOT_
`SUPPORTED.
`
`Required for GPNV
`Support
`
`Reserved
`
`dmb2spc
`
`5 of 49
`
`5 November, 1996
`
`Page 5
`
`
`
`'""'
`
`-n--~-
`
`DRAFT COPY
`DRAFT COPY
`
`Version 2.0
`Version 2.0
`
`DMI BIOS Specifcation
`DM1 BIOS Specification
`
`2.3 Error Return Codes
`
`After the call has been made, the following return codes are available in the AX Register.
`
`DMI_SUCCESS
`DMI UNKNOWN FUNCTION
`DMI_FUNCTION NOT_SUPPORTED
`DMI_INVALID_HANDLE
`
`DMI_BAD_PARAMETER
`
`DMI_INVALID_SUBFUNCTION
`
`DMI_NOCHANGE
`
`DMI_ADD_STRUCTURE_FAILED
`
`DMI_READ_ONLY
`
`DMI_LOCK_NOTSUPPORTED
`
`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 structure.
`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.
`
`dmb2spc
`
`6 of 49
`
`5 November, 1996
`
`Page 6
`
`
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`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 */
`/* 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 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 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.
`
`dmb2spc
`
`7 of 49
`
`5 November, 1996
`
`Page 7
`
`
`
`d
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`Returns:
`If successful - DMISUCCESS
`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
`BiosSelector
`push
`segment/selector of dmiStorageSize
`push
`offset of dmiStorageSize
`push
`segment/selector of dmiStorageBase
`push
`offset of dmiStorageBase
`push
`segment/selector of StructureSize
`push
`offset of StructureSize
`push
`segment/selector of NumStructures
`push
`offset NumStructures
`segment/selector of dmiBIOSRevision ; Pointer to DMIBIOSRevision
`push
`offset dmiBIOSRevision
`push
`push
`GET_DMI_INFORMATION
`FAR PTR entryPoint
`call
`sp, 24
`add
`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 51 h - Get DMI Structure
`
`Synopsis:
`short FAR (*entryPoint)(Function, Structure, dmiStrucBuffer, dmiSelector, BiosSelector);
`short Function;
`/* PnP BIOS Functionr Slh */
`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 */
`/* PnP BIOS readable/writable selector */
`unsigned short BiosSelector;
`
`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 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.
`
`dmb2spc
`
`8 of 49
`
`5 November, 1996
`
`Page 8
`
`
`
`DMI BIOS Specification
`
`DRAFTCOPY
`
`Version 2.0
`
`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
`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. 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 DMIREADONLY to be returned.
`
`dmb2spc
`
`9 of 49
`
`5 November, 1996
`
`Page 9
`
`
`
`.. z :... ,
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`The dmiDataBuffer parameter references a structure of the following format:
`
`Offset
`OOh
`
`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-0FFh 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.
`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.
`For a structure-change Command, identifies the data vale to be ORed
`with the existing structure data - after applying the ChangeMask. The
`number of significant bytes within this area is defined by the Conunand.
`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 22)
`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
`
`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)
`
`dmb2spc
`
`10 of 49
`
`5 November, 1996
`
`Page 10
`
`
`
`l
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`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 tp 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.
`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 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
`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.
`
`dmb2spc
`
`11 of 49
`
`5 November, 1996
`
`Page 11
`
`
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`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
`offset of dmiWorkBuffer
`segment/selector of dmiDataBuffer ; pointer to structure
`offset of dmiDataBuffer
`SET DMI_STRUCTURE
`FAR PTR entryPoint
`
`; Function n
`lumber, 52h
`
`;pointer to I
`BIOS temporary buffer
`
`sp, 16
`
`ax, DMI_SUCCESS
`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 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.
`
`dmb2spc
`
`...
`
`... .
`
`12 of 49
`1 of 49
`
`5 November, 1996
`5.. Noveb.r 1996
`
`Page 12
`
`
`
`DMI BIOS Specification
`
`DRAFT COPY
`
`Version 2.0
`
`2.5.1 Function 53h - Get Structure Change Information
`
`Synopsis:
`short FAR (*entryPoint)(Function, dmiChangeStructure, dmiSelector, BiosSelector);
`/* PnP BIOS Function 53h */
`short Function;
`/* Pointer to DMI Change structure */
`unsigned char FAR *dmiChangeStructure;
`/* DMI data read/write selector */
`unsigned short dmiSelector;
`/* PnP BIOS readable/writable selector */
`unsigned short BiosSelector;
`
`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
`00h
`01h
`02h
`04h-OFh
`
`Length
`BYTE
`BYTE
`WORD
`12 BYTEs
`
`Value
`ENUM
`Bit Field
`Varies
`OOh
`
`DMI Change Status:
`No Change
`OOh
`Other
`Olh
`Unknown
`02h
`Single DMI Structure Affected
`03h
`Multiple DMI Structures Affected
`04h
`Reserved
`05h - OFFh
`
`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 1
`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 (Olh)
`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 (Olh), 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_NOCHANGE).
`
`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
`
`dmb2spc
`
`- ~ ~
`
`------
`
`~
`
`~
`
`~
`
`13 of 49
`~
`~
`
`.
`
`-
`
`.
`
`-
`
`------
`.
`
`.
`
`.
`
`5 November, 1996
`-
`.......--
`
`Page 13
`
`
`
`DMI BIOS Specification'
`
`DRAFTCOPY
`
`Version 2.0
`
`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
`registers will be preserved
`
`the Error Code will be returned in AX, the FLAGS and all other
`
`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_STRUCTURECHANGE_INFO
`FAR PTR entryPoint
`sp, 10
`ax, DMI_SUCCESS
`error
`
`;Function number, 53h
`
`;Clean up stack
`;Function completed successfully?
`
`dmb2spc
`
`14 of 49
`
`5 November, 1996
`
`Page 14
`
`
`
`DMI BIOS Speciication
`
`DM1~~~~~~ ~
`~
`~~
`
`DRAFT COPY
`BISSeiiainDATCP
`
`Version 2.0
`.
`eso
`
`2.6 Control Interface
`
`2.6.1 Function 54h - DMI Control
`
`Synopsis:
`short FAR (*entryPoint)(Function, SubFunction, Data, Control, dmiSelector, BiosSelector)
`/* PnP BIOS Function 54h */
`short Function;
`short SubFunction;
`/* Defines the specific control operation */
`voidFAR *Data;
`/* Input/output data buffer, Sub Function specific */
`/* Conditions for setting the structure */
`unsigned char Control;
`