mirror of https://github.com/acidanthera/audk.git
Synchronize code with specs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8367 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
534b8251cc
commit
470d0b274c
|
@ -137,38 +137,127 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH {
|
|||
//
|
||||
#define EFI_STRING_TOKEN UINT16
|
||||
|
||||
///
|
||||
/// Each data record that is a member of some subclass starts with a standard
|
||||
/// header of type EFI_SUBCLASS_TYPE1_HEADER.
|
||||
/// This header is only a guideline and applicable only to a data
|
||||
/// subclass that is producing SMBIOS data records. A subclass can start with a
|
||||
/// different header if needed.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The version of the specification to which a specific subclass data record adheres.
|
||||
///
|
||||
UINT32 Version;
|
||||
///
|
||||
/// The size in bytes of this data class header.
|
||||
///
|
||||
UINT32 HeaderSize;
|
||||
///
|
||||
/// The instance number of the subclass with the same ProducerName. This number is
|
||||
/// applicable in cases where multiple subclass instances that were produced by the same
|
||||
/// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
|
||||
/// Applicable. All data consumer drivers should be able to handle all the possible values
|
||||
/// of Instance, including Not Applicable and Reserved.
|
||||
///
|
||||
UINT16 Instance;
|
||||
///
|
||||
/// The instance number of the RecordType for the same Instance. This number is
|
||||
/// applicable in cases where multiple instances of the RecordType exist for a specific
|
||||
/// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
|
||||
/// All data consumer drivers should be able to handle all the possible values of
|
||||
/// SubInstance, including Not Applicable and Reserved.
|
||||
///
|
||||
UINT16 SubInstance;
|
||||
///
|
||||
/// The record number for the data record being specified. The numbering scheme and
|
||||
/// definition is defined in the specific subclass specification.
|
||||
///
|
||||
UINT32 RecordType;
|
||||
} EFI_SUBCLASS_TYPE1_HEADER;
|
||||
|
||||
///
|
||||
/// This structure is used to link data records in the same subclasses. A data record is
|
||||
/// defined as a link to another data record in the same subclass using this structure.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// An EFI_GUID that identifies the component that produced this data record. Type
|
||||
/// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
|
||||
///
|
||||
EFI_GUID ProducerName;
|
||||
///
|
||||
/// The instance number of the subclass with the same ProducerName. This number is
|
||||
/// applicable in cases where multiple subclass instances that were produced by the same
|
||||
/// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
|
||||
/// Applicable. All data consumer drivers should be able to handle all the possible values
|
||||
/// of Instance, including Not Applicable and Reserved.
|
||||
///
|
||||
UINT16 Instance;
|
||||
/// The instance number of the RecordType for the same Instance. This number is
|
||||
/// applicable in cases where multiple instances of the RecordType exist for a specific
|
||||
/// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
|
||||
/// All data consumer drivers should be able to handle all the possible values of
|
||||
/// SubInstance, including Not Applicable and Reserved.
|
||||
UINT16 SubInstance;
|
||||
} EFI_INTER_LINK_DATA;
|
||||
|
||||
//
|
||||
// EXP data
|
||||
//
|
||||
|
||||
///
|
||||
/// This macro provides a calculation for base-10 representations. Value and Exponent are each
|
||||
/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit
|
||||
/// for the sign).
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The INT16 number by which to multiply the base-10 representation.
|
||||
///
|
||||
UINT16 Value;
|
||||
///
|
||||
/// The INT16 number by which to raise the base-10 calculation.
|
||||
///
|
||||
UINT16 Exponent;
|
||||
} EFI_EXP_BASE2_DATA;
|
||||
|
||||
///
|
||||
/// This macro provides a calculation for base-2 representations. Value and Exponent are each
|
||||
/// INT16. It is 16 bits wide and is unsigned to mean nonnegative values.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The INT16 number by which to multiply the base-2 representation.
|
||||
///
|
||||
UINT16 Value;
|
||||
///
|
||||
/// The INT16 number by which to raise the base-2 calculation.
|
||||
///
|
||||
UINT16 Exponent;
|
||||
} EFI_EXP_BASE10_DATA;
|
||||
|
||||
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;
|
||||
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;
|
||||
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the list of frequencies that the processor core supports. The list of
|
||||
/// supported frequencies is determined by the firmware based on hardware capabilities--for example,
|
||||
/// it could be a common subset of all processors and the chipset. The unit of measurement of this data
|
||||
/// record is in Hertz. For asynchronous processors, the content of this data record is zero.
|
||||
/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
|
||||
/// that the processor/driver supports automatic frequency selection.
|
||||
///
|
||||
typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the list of supported frequencies of the processor external bus. The list of
|
||||
/// supported frequencies is determined by the firmware based on hardware capabilities--for example,
|
||||
/// it could be a common subset of all processors and the chipset. The unit of measurement of this data
|
||||
/// record is in Hertz. For asynchronous processors, the content of this data record is NULL.
|
||||
/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
|
||||
/// that the processor/driver supports automatic frequency selection.
|
||||
///
|
||||
typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;
|
||||
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;
|
||||
typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;
|
||||
|
@ -228,13 +317,35 @@ typedef struct {
|
|||
UINT32 ProcessorReserved4: 2;
|
||||
} EFI_PROCESSOR_FEATURE_FLAGS;
|
||||
|
||||
///
|
||||
/// This data record refers to the unique ID that identifies a set of processors. This data record is 16
|
||||
/// bytes in length. The data in this structure is processor specific and reserved values can be defined
|
||||
/// for future use. The consumer of this data should not make any assumption and should use this data
|
||||
/// with respect to the processor family defined in the Family record number.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Identifies the processor.
|
||||
///
|
||||
EFI_PROCESSOR_SIGNATURE Signature;
|
||||
///
|
||||
/// Provides additional processor information.
|
||||
///
|
||||
EFI_PROCESSOR_MISC_INFO MiscInfo;
|
||||
///
|
||||
/// Reserved for future use.
|
||||
///
|
||||
UINT32 Reserved;
|
||||
///
|
||||
/// Provides additional processor information.
|
||||
///
|
||||
EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;
|
||||
} EFI_PROCESSOR_ID_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the general classification of the processor. This data record is 4 bytes in
|
||||
/// length.
|
||||
///
|
||||
typedef enum {
|
||||
EfiProcessorOther = 1,
|
||||
EfiProcessorUnknown = 2,
|
||||
|
@ -244,6 +355,10 @@ typedef enum {
|
|||
EfiVideoProcessor = 6
|
||||
} EFI_PROCESSOR_TYPE_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the family of the processor as defined by the DMTF.
|
||||
/// This data record is 4 bytes in length.
|
||||
///
|
||||
typedef enum {
|
||||
EfiProcessorFamilyOther = 1,
|
||||
EfiProcessorFamilyUnknown = 2,
|
||||
|
@ -281,9 +396,32 @@ typedef enum {
|
|||
EfiProcessorFamilyPowerPC603 = 0x22,
|
||||
EfiProcessorFamilyPowerPC603Plus = 0x23,
|
||||
EfiProcessorFamilyPowerPC604 = 0x24,
|
||||
EfiProcessorFamilyPowerPC620 = 0x25,
|
||||
EfiProcessorFamilyPowerPC704 = 0x26,
|
||||
EfiProcessorFamilyPowerPC750 = 0x27,
|
||||
EfiProcessorFamilyAlpha2 = 0x30,
|
||||
EfiProcessorFamilyAlpha21064 = 0x31,
|
||||
EfiProcessorFamilyAlpha21066 = 0x32,
|
||||
EfiProcessorFamilyAlpha21164 = 0x33,
|
||||
EfiProcessorFamilyAlpha21164PC = 0x34,
|
||||
EfiProcessorFamilyAlpha21164a = 0x35,
|
||||
EfiProcessorFamilyAlpha21264 = 0x36,
|
||||
EfiProcessorFamilyAlpha21364 = 0x37,
|
||||
EfiProcessorFamilyMips = 0x40,
|
||||
EfiProcessorFamilyMIPSR4000 = 0x41,
|
||||
EfiProcessorFamilyMIPSR4200 = 0x42,
|
||||
EfiProcessorFamilyMIPSR4400 = 0x43,
|
||||
EfiProcessorFamilyMIPSR4600 = 0x44,
|
||||
EfiProcessorFamilyMIPSR10000 = 0x45,
|
||||
EfiProcessorFamilySparc = 0x50,
|
||||
EfiProcessorFamilySuperSparc = 0x51,
|
||||
EfiProcessorFamilymicroSparcII = 0x52,
|
||||
EfiProcessorFamilymicroSparcIIep = 0x53,
|
||||
EfiProcessorFamilyUltraSparc = 0x54,
|
||||
EfiProcessorFamilyUltraSparcII = 0x55,
|
||||
EfiProcessorFamilyUltraSparcIIi = 0x56,
|
||||
EfiProcessorFamilyUltraSparcIII = 0x57,
|
||||
EfiProcessorFamilyUltraSparcIIIi = 0x58,
|
||||
EfiProcessorFamily68040 = 0x60,
|
||||
EfiProcessorFamily68xxx = 0x61,
|
||||
EfiProcessorFamily68000 = 0x62,
|
||||
|
@ -291,8 +429,19 @@ typedef enum {
|
|||
EfiProcessorFamily68020 = 0x64,
|
||||
EfiProcessorFamily68030 = 0x65,
|
||||
EfiProcessorFamilyHobbit = 0x70,
|
||||
EfiProcessorFamilyCrusoeTM5000 = 0x78,
|
||||
EfiProcessorFamilyCrusoeTM3000 = 0x79,
|
||||
EfiProcessorFamilyWeitek = 0x80,
|
||||
EfiProcessorFamilyItanium = 0x82,
|
||||
EfiProcessorFamilyAmdAthlon64 = 0x83,
|
||||
EfiProcessorFamilyAmdOpteron = 0x84,
|
||||
EfiProcessorFamilyPARISC = 0x90,
|
||||
EfiProcessorFamilyPaRisc8500 = 0x91,
|
||||
EfiProcessorFamilyPaRisc8000 = 0x92,
|
||||
EfiProcessorFamilyPaRisc7300LC = 0x93,
|
||||
EfiProcessorFamilyPaRisc7200 = 0x94,
|
||||
EfiProcessorFamilyPaRisc7100LC = 0x95,
|
||||
EfiProcessorFamilyPaRisc7100 = 0x96,
|
||||
EfiProcessorFamilyV30 = 0xA0,
|
||||
EfiProcessorFamilyPentiumIIIXeon = 0xB0,
|
||||
EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,
|
||||
|
@ -313,9 +462,28 @@ typedef enum {
|
|||
EfiProcessorFamilyi960 = 0xFB
|
||||
} EFI_PROCESSOR_FAMILY_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the core voltage of the processor being defined. The unit of measurement
|
||||
/// of this data record is in volts.
|
||||
///
|
||||
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the base address of the APIC of the processor being defined. This data
|
||||
/// record is a physical address location.
|
||||
///
|
||||
typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the ID of the APIC of the processor being defined. This data record is a
|
||||
/// 4-byte entry.
|
||||
///
|
||||
typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the version number of the APIC of the processor being defined. This data
|
||||
/// record is a 4-byte entry.
|
||||
///
|
||||
typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;
|
||||
|
||||
typedef enum {
|
||||
|
@ -324,19 +492,32 @@ typedef enum {
|
|||
EfiProcessorIpfPalBMicrocode = 3
|
||||
} EFI_PROCESSOR_MICROCODE_TYPE;
|
||||
|
||||
///
|
||||
/// This data record refers to the revision of the processor microcode that is loaded in the processor.
|
||||
/// This data record is a 4-byte entry.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Identifies what type of microcode the data is.
|
||||
///
|
||||
EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;
|
||||
///
|
||||
/// Indicates the revision number of this microcode.
|
||||
///
|
||||
UINT32 ProcessorMicrocodeRevisionNumber;
|
||||
} EFI_PROCESSOR_MICROCODE_REVISION_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the status of the processor.
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 CpuStatus :3;
|
||||
UINT32 Reserved1 :3;
|
||||
UINT32 SocketPopulated :1;
|
||||
UINT32 Reserved2 :1;
|
||||
UINT32 ApicEnable :1;
|
||||
UINT32 BootApplicationProcessor :1;
|
||||
UINT32 Reserved3 :22;
|
||||
UINT32 CpuStatus :3; ///> Indicates the status of the processor.
|
||||
UINT32 Reserved1 :3; ///> Reserved for future use. Should be set to zero.
|
||||
UINT32 SocketPopulated :1; ///> Indicates if the processor is socketed or not.
|
||||
UINT32 Reserved2 :1; ///> Reserved for future use. Should be set to zero.
|
||||
UINT32 ApicEnable :1; ///> Indicates if the APIC is enabled or not.
|
||||
UINT32 BootApplicationProcessor :1; ///> Indicates if this processor is the boot processor.
|
||||
UINT32 Reserved3 :22;///> Reserved for future use. Should be set to zero.
|
||||
} EFI_PROCESSOR_STATUS_DATA;
|
||||
|
||||
typedef enum {
|
||||
|
@ -376,12 +557,20 @@ typedef enum {
|
|||
typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;
|
||||
typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;
|
||||
|
||||
///
|
||||
/// This data record refers to the health status of the processor.
|
||||
///
|
||||
typedef enum {
|
||||
EfiProcessorHealthy = 1,
|
||||
EfiProcessorPerfRestricted = 2,
|
||||
EfiProcessorFuncRestricted = 3
|
||||
EfiProcessorFuncRestricted = 3
|
||||
} EFI_PROCESSOR_HEALTH_STATUS;
|
||||
|
||||
///
|
||||
/// This data record refers to the package number of this processor. Multiple logical processors can
|
||||
/// exist in a system and each logical processor can be correlated to the physical processor using this
|
||||
/// record type.
|
||||
///
|
||||
typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;
|
||||
|
||||
typedef enum {
|
||||
|
@ -572,12 +761,41 @@ typedef enum _EFI_MEMORY_REGION_TYPE {
|
|||
EfiMemoryRegionNvs = 0x04
|
||||
} EFI_MEMORY_REGION_TYPE;
|
||||
|
||||
///
|
||||
/// This data record refers to the size of a memory region. The regions that are
|
||||
/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.
|
||||
/// The unit of measurement of this data record is in bytes.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// A zero-based value that indicates which processor(s) can access the memory region.
|
||||
/// A value of 0xFFFF indicates the region is accessible by all processors.
|
||||
///
|
||||
UINT32 ProcessorNumber;
|
||||
///
|
||||
/// A zero-based value that indicates the starting bus that can access the memory region.
|
||||
///
|
||||
UINT16 StartBusNumber;
|
||||
///
|
||||
/// A zero-based value that indicates the ending bus that can access the memory region.
|
||||
/// A value of 0xFF for a PCI system indicates the region is accessible by all buses and
|
||||
/// is global in scope. An example of the EndBusNumber not being 0xFF is a system
|
||||
/// with two or more peer-to-host PCI bridges.
|
||||
///
|
||||
UINT16 EndBusNumber;
|
||||
///
|
||||
/// The type of memory region from the operating system’s point of view.
|
||||
/// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS
|
||||
/// command values.
|
||||
///
|
||||
EFI_MEMORY_REGION_TYPE MemoryRegionType;
|
||||
///
|
||||
/// The size of the memory region in bytes.
|
||||
///
|
||||
EFI_EXP_BASE2_DATA MemorySize;
|
||||
///
|
||||
/// The starting physical address of the memory region.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS MemoryStartAddress;
|
||||
} EFI_MEMORY_SIZE_DATA;
|
||||
|
||||
|
@ -621,11 +839,40 @@ typedef enum _EFI_MEMORY_ERROR_CORRECTION {
|
|||
EfiMemoryErrorCorrectionCrc = 0x07
|
||||
} EFI_MEMORY_ERROR_CORRECTION;
|
||||
|
||||
///
|
||||
/// This data record refers to the physical memory array. This data record is a structure.
|
||||
/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:
|
||||
/// - Table 3.3.17.1, Type 16, Offset 0x4
|
||||
/// - Table 3.3.17.2, Type 16, Offset 0x5
|
||||
/// - Table 3.3.17.3, Type 16, with the following offsets:
|
||||
/// -- Offset 0x6
|
||||
/// -- Offset 0x7
|
||||
/// -- Offset 0xB
|
||||
/// -- Offset 0xD
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The physical location of the memory array.
|
||||
///
|
||||
EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;
|
||||
///
|
||||
/// The memory array usage.
|
||||
///
|
||||
EFI_MEMORY_ARRAY_USE MemoryArrayUse;
|
||||
///
|
||||
/// The primary error correction or detection supported by this memory array.
|
||||
///
|
||||
EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;
|
||||
///
|
||||
/// The maximum memory capacity size in kilobytes. If capacity is unknown, then
|
||||
/// values of MaximumMemoryCapacity.Value = 0x00 and
|
||||
/// MaximumMemoryCapacity.Exponent = 0x8000 are used.
|
||||
///
|
||||
EFI_EXP_BASE2_DATA MaximumMemoryCapacity;
|
||||
///
|
||||
/// The number of memory slots or sockets that are available for memory devices
|
||||
/// in this array.
|
||||
///
|
||||
UINT16 NumberMemoryDevices;
|
||||
} EFI_MEMORY_ARRAY_LOCATION_DATA;
|
||||
|
||||
|
@ -700,46 +947,156 @@ typedef enum {
|
|||
EfiMemoryStatePartial = 6
|
||||
} EFI_MEMORY_STATE;
|
||||
|
||||
///
|
||||
/// This data record describes a memory device. This data record is a structure.
|
||||
/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// A string that identifies the physically labeled socket or board position where the
|
||||
/// memory device is located.
|
||||
///
|
||||
STRING_REF MemoryDeviceLocator;
|
||||
///
|
||||
/// A string denoting the physically labeled bank where the memory device is located.
|
||||
///
|
||||
STRING_REF MemoryBankLocator;
|
||||
///
|
||||
/// A string denoting the memory manufacturer.
|
||||
///
|
||||
STRING_REF MemoryManufacturer;
|
||||
///
|
||||
/// A string denoting the serial number of the memory device.
|
||||
///
|
||||
STRING_REF MemorySerialNumber;
|
||||
///
|
||||
/// The asset tag of the memory device.
|
||||
///
|
||||
STRING_REF MemoryAssetTag;
|
||||
///
|
||||
/// A string denoting the part number of the memory device.
|
||||
///
|
||||
STRING_REF MemoryPartNumber;
|
||||
///
|
||||
/// A link to a memory array structure set.
|
||||
///
|
||||
EFI_INTER_LINK_DATA MemoryArrayLink;
|
||||
///
|
||||
/// A link to a memory array structure set.
|
||||
///
|
||||
EFI_INTER_LINK_DATA MemorySubArrayLink;
|
||||
///
|
||||
/// The total width in bits of this memory device. If there are no error correcting bits,
|
||||
/// then the total width equals the data width. If the width is unknown, then set the field
|
||||
/// to 0xFFFF.
|
||||
///
|
||||
UINT16 MemoryTotalWidth;
|
||||
///
|
||||
/// The data width in bits of the memory device. A data width of 0x00 and a total width
|
||||
/// of 0x08 indicate that the device is used solely for error correction.
|
||||
///
|
||||
UINT16 MemoryDataWidth;
|
||||
///
|
||||
/// The size in bytes of the memory device. A value of 0x00 denotes that no device is
|
||||
/// installed, while a value of all Fs denotes that the size is not known.
|
||||
///
|
||||
EFI_EXP_BASE2_DATA MemoryDeviceSize;
|
||||
///
|
||||
/// The form factor of the memory device.
|
||||
///
|
||||
EFI_MEMORY_FORM_FACTOR MemoryFormFactor;
|
||||
///
|
||||
/// A memory device set that must be populated with all devices of the same type and
|
||||
/// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF
|
||||
/// indicates that the attribute is unknown. Any other value denotes the set number.
|
||||
///
|
||||
UINT8 MemoryDeviceSet;
|
||||
///
|
||||
/// The memory type in the socket.
|
||||
///
|
||||
EFI_MEMORY_ARRAY_TYPE MemoryType;
|
||||
///
|
||||
/// The memory type details.
|
||||
///
|
||||
EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;
|
||||
///
|
||||
/// The memory speed in megahertz (MHz). A value of 0x00 denotes that
|
||||
/// the speed is unknown.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA MemorySpeed;
|
||||
///
|
||||
/// The memory state.
|
||||
///
|
||||
EFI_MEMORY_STATE MemoryState;
|
||||
} EFI_MEMORY_ARRAY_LINK_DATA;
|
||||
|
||||
|
||||
#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
|
||||
|
||||
///
|
||||
/// This data record refers to a specified physical memory array associated with
|
||||
/// a given memory range.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The starting physical address in bytes of memory mapped to a specified physical
|
||||
/// memory array.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;
|
||||
///
|
||||
/// The last physical address in bytes of memory mapped to a specified physical memory
|
||||
/// array.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;
|
||||
///
|
||||
/// See Physical Memory Array (Type 16) for physical memory array structures.
|
||||
///
|
||||
EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
|
||||
///
|
||||
/// The number of memory devices that form a single row of memory for the address
|
||||
/// partition.
|
||||
///
|
||||
UINT16 MemoryArrayPartitionWidth;
|
||||
} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;
|
||||
|
||||
|
||||
#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
|
||||
|
||||
///
|
||||
/// This data record refers to a physical memory device that is associated with
|
||||
/// a given memory range.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The starting physical address that is associated with the device.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;
|
||||
///
|
||||
/// The ending physical address that is associated with the device.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;
|
||||
///
|
||||
/// A link to the memory device data structure.
|
||||
///
|
||||
EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;
|
||||
///
|
||||
/// A link to the memory array data structure.
|
||||
///
|
||||
EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
|
||||
///
|
||||
/// The position of the memory device in a row. A value of 0x00 is reserved and a value
|
||||
/// of 0xFF indicates that the position is unknown.
|
||||
///
|
||||
UINT8 MemoryDevicePartitionRowPosition;
|
||||
///
|
||||
/// The position of the device in an interleave.
|
||||
///
|
||||
UINT8 MemoryDeviceInterleavePosition;
|
||||
///
|
||||
/// The maximum number of consecutive rows from the device that are accessed in a
|
||||
/// single interleave transfer. A value of 0x00 indicates that the device is not interleaved
|
||||
/// and a value of 0xFF indicates that the interleave configuration is unknown.
|
||||
///
|
||||
UINT8 MemoryDeviceInterleaveDataDepth;
|
||||
} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;
|
||||
|
||||
|
@ -757,17 +1114,53 @@ typedef enum _EFI_MEMORY_CHANNEL_TYPE {
|
|||
EfiMemoryChannelTypeSyncLink = 4
|
||||
} EFI_MEMORY_CHANNEL_TYPE;
|
||||
|
||||
///
|
||||
/// This data record refers the type of memory that is associated with the channel. This data record is a
|
||||
/// structure.
|
||||
/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,
|
||||
/// Table 3.3.38, Type 37, with the following offsets:
|
||||
/// - Offset 0x4
|
||||
/// - Offset 0x5
|
||||
/// - Offset 0x6
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The type of memory that is associated with the channel.
|
||||
///
|
||||
EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;
|
||||
///
|
||||
/// The maximum load that is supported by the channel.
|
||||
///
|
||||
UINT8 MemoryChannelMaximumLoad;
|
||||
///
|
||||
/// The number of memory devices on this channel.
|
||||
///
|
||||
UINT8 MemoryChannelDeviceCount;
|
||||
} EFI_MEMORY_CHANNEL_TYPE_DATA;
|
||||
|
||||
#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
|
||||
|
||||
///
|
||||
/// This data record refers to the memory device that is associated with the memory channel. This data
|
||||
/// record is a structure.
|
||||
/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,
|
||||
/// Table 3.3.38, Type 37, with the following offsets:
|
||||
/// - Offset 0x7
|
||||
/// - Offset 0x8
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// A number between one and MemoryChannelDeviceCount plus an arbitrary base.
|
||||
///
|
||||
UINT8 DeviceId;
|
||||
///
|
||||
/// The Link of the associated memory device. See Memory Device (Type 17) for
|
||||
/// memory devices.
|
||||
///
|
||||
EFI_INTER_LINK_DATA DeviceLink;
|
||||
///
|
||||
/// The number of load units that this device consumes.
|
||||
///
|
||||
UINT8 MemoryChannelDeviceLoad;
|
||||
} EFI_MEMORY_CHANNEL_DEVICE_DATA;
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
@par Revision Reference:
|
||||
PeiCis Version 0.91.
|
||||
|
||||
**/
|
||||
|
||||
|
|
|
@ -77,12 +77,22 @@ EFI_STATUS
|
|||
);
|
||||
|
||||
typedef struct {
|
||||
EFI_SMM_CPU_IO Read;
|
||||
EFI_SMM_CPU_IO Write;
|
||||
EFI_SMM_CPU_IO Read; ///> This service provides the various modalities of memory and I/O read.
|
||||
EFI_SMM_CPU_IO Write; ///> This service provides the various modalities of memory and I/O write.
|
||||
} EFI_SMM_IO_ACCESS;
|
||||
|
||||
///
|
||||
/// The EFI_SMM_CPU_IO_INTERFACE service provides the basic memory, I/O, and PCI
|
||||
/// interfaces that are used to abstract accesses to devices.
|
||||
///
|
||||
struct _EFI_SMM_CPU_IO_INTERFACE {
|
||||
///
|
||||
/// Allows reads and writes to memory-mapped I/O space.
|
||||
///
|
||||
EFI_SMM_IO_ACCESS Mem;
|
||||
///
|
||||
/// Allows reads and writes to I/O space.
|
||||
///
|
||||
EFI_SMM_IO_ACCESS Io;
|
||||
};
|
||||
|
||||
|
@ -176,13 +186,42 @@ EFI_STATUS
|
|||
IN OUT VOID *ProcArguments OPTIONAL
|
||||
);
|
||||
|
||||
///
|
||||
/// The processor save-state information for IA-32 processors. This information is important in that the
|
||||
/// SMM drivers may need to ascertain the state of the processor before invoking the SMI.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Reserved for future processors. As such, software should not attempt to interpret or
|
||||
/// write to this region.
|
||||
///
|
||||
UINT8 Reserved1[248];
|
||||
///
|
||||
/// The location of the processor SMBASE, which is the location where the processor
|
||||
/// will pass control upon receipt of an SMI.
|
||||
///
|
||||
UINT32 SMBASE;
|
||||
///
|
||||
/// The revision of the SMM save state. This value is set by the processor.
|
||||
///
|
||||
UINT32 SMMRevId;
|
||||
///
|
||||
/// The value of the I/O restart field. Allows for restarting an in-process I/O instruction.
|
||||
///
|
||||
UINT16 IORestart;
|
||||
///
|
||||
/// Describes behavior that should be commenced in response to a halt instruction.
|
||||
///
|
||||
UINT16 AutoHALTRestart;
|
||||
///
|
||||
/// Reserved for future processors. As such, software should not attempt to interpret or
|
||||
/// write to this region.
|
||||
///
|
||||
UINT8 Reserved2[164];
|
||||
|
||||
//
|
||||
// Registers in IA-32 processors.
|
||||
//
|
||||
UINT32 ES;
|
||||
UINT32 CS;
|
||||
UINT32 SS;
|
||||
|
@ -207,6 +246,11 @@ typedef struct {
|
|||
UINT32 CR0;
|
||||
} EFI_SMI_CPU_SAVE_STATE;
|
||||
|
||||
///
|
||||
/// The processor save-state information for the Itanium processor family. This information is
|
||||
/// important in that the SMM drivers may need to ascertain the state of the processor before invoking
|
||||
/// the PMI. This structure is mandatory and must be 512 byte aligned.
|
||||
///
|
||||
typedef struct {
|
||||
UINT64 reserved;
|
||||
UINT64 r1;
|
||||
|
@ -317,11 +361,26 @@ typedef struct {
|
|||
|
||||
} EFI_PMI_SYSTEM_CONTEXT;
|
||||
|
||||
///
|
||||
/// The processor save-state information for IA-32 and Itanium processors. This information is
|
||||
/// important in that the SMM drivers may need to ascertain the state of the processor before invoking
|
||||
/// the SMI or PMI.
|
||||
///
|
||||
typedef union {
|
||||
///
|
||||
/// The processor save-state information for IA-32 processors.
|
||||
///
|
||||
EFI_SMI_CPU_SAVE_STATE Ia32SaveState;
|
||||
///
|
||||
/// The processor save-state information for Itanium processors.
|
||||
///
|
||||
EFI_PMI_SYSTEM_CONTEXT ItaniumSaveState;
|
||||
} EFI_SMM_CPU_SAVE_STATE;
|
||||
|
||||
///
|
||||
/// The optional floating point save-state information for IA-32 processors. If the optional floating
|
||||
/// point save is indicated for any handler, the following data structure must be preserved.
|
||||
///
|
||||
typedef struct {
|
||||
UINT16 Fcw;
|
||||
UINT16 Fsw;
|
||||
|
@ -344,6 +403,10 @@ typedef struct {
|
|||
UINT8 Rsvd11[22*16];
|
||||
} EFI_SMI_OPTIONAL_FPSAVE_STATE;
|
||||
|
||||
///
|
||||
/// The optional floating point save-state information for the Itanium processor family. If the optional
|
||||
/// floating point save is indicated for any handler, then this data structure must be preserved.
|
||||
///
|
||||
typedef struct {
|
||||
UINT64 f2[2];
|
||||
UINT64 f3[2];
|
||||
|
@ -377,8 +440,18 @@ typedef struct {
|
|||
UINT64 f31[2];
|
||||
} EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT;
|
||||
|
||||
///
|
||||
/// The processor save-state information for IA-32 and Itanium processors. If the optional floating
|
||||
/// point save is indicated for any handler, then this data structure must be preserved.
|
||||
///
|
||||
typedef union {
|
||||
///
|
||||
/// The optional floating point save-state information for IA-32 processors.
|
||||
///
|
||||
EFI_SMI_OPTIONAL_FPSAVE_STATE Ia32FpSave;
|
||||
///
|
||||
/// The optional floating point save-state information for Itanium processors.
|
||||
///
|
||||
EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT ItaniumFpSave;
|
||||
} EFI_SMM_FLOATING_POINT_SAVE_STATE;
|
||||
|
||||
|
@ -436,25 +509,58 @@ EFI_STATUS
|
|||
// System Management System Table (SMST)
|
||||
//
|
||||
struct _EFI_SMM_SYSTEM_TABLE {
|
||||
///
|
||||
/// The table header for the System Management System Table (SMST).
|
||||
///
|
||||
EFI_TABLE_HEADER Hdr;
|
||||
|
||||
///
|
||||
/// A pointer to a NULL-terminated Unicode string containing the vendor name. It is
|
||||
/// permissible for this pointer to be NULL.
|
||||
///
|
||||
CHAR16 *SmmFirmwareVendor;
|
||||
///
|
||||
/// The particular revision of the firmware.
|
||||
///
|
||||
UINT32 SmmFirmwareRevision;
|
||||
|
||||
///
|
||||
/// Adds, updates, or removes a configuration table entry from the SMST.
|
||||
///
|
||||
EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable;
|
||||
|
||||
//
|
||||
// I/O Services
|
||||
//
|
||||
///
|
||||
/// A GUID that designates the particular CPU I/O services.
|
||||
///
|
||||
EFI_GUID EfiSmmCpuIoGuid;
|
||||
///
|
||||
/// Provides the basic memory and I/O interfaces that are used to abstract accesses to
|
||||
/// devices.
|
||||
///
|
||||
EFI_SMM_CPU_IO_INTERFACE SmmIo;
|
||||
|
||||
//
|
||||
// Runtime memory service
|
||||
//
|
||||
///
|
||||
/// Allocates pool memory from SMRAM for IA-32 or runtime memory for the
|
||||
/// Itanium processor family.
|
||||
///
|
||||
EFI_SMMCORE_ALLOCATE_POOL SmmAllocatePool;
|
||||
///
|
||||
/// Returns pool memory to the system.
|
||||
///
|
||||
EFI_SMMCORE_FREE_POOL SmmFreePool;
|
||||
///
|
||||
/// Allocates memory pages from the system.
|
||||
///
|
||||
EFI_SMMCORE_ALLOCATE_PAGES SmmAllocatePages;
|
||||
///
|
||||
/// Frees memory pages for the system.
|
||||
///
|
||||
EFI_SMMCORE_FREE_PAGES SmmFreePages;
|
||||
|
||||
//
|
||||
|
@ -465,15 +571,44 @@ struct _EFI_SMM_SYSTEM_TABLE {
|
|||
//
|
||||
// CPU information records
|
||||
//
|
||||
///
|
||||
/// A 1-relative number between 1 and the NumberOfCpus field. This field designates
|
||||
/// which processor is executing the SMM infrastructure. This number also serves as an
|
||||
/// index into the CpuSaveState and CpuOptionalFloatingPointState
|
||||
/// fields.
|
||||
///
|
||||
UINTN CurrentlyExecutingCpu;
|
||||
///
|
||||
/// The number of EFI Configuration Tables in the buffer
|
||||
/// SmmConfigurationTable.
|
||||
///
|
||||
UINTN NumberOfCpus;
|
||||
///
|
||||
/// A pointer to the EFI Configuration Tables. The number of entries in the table is
|
||||
/// NumberOfTableEntries.
|
||||
///
|
||||
EFI_SMM_CPU_SAVE_STATE *CpuSaveState;
|
||||
///
|
||||
/// A pointer to a catenation of the EFI_SMM_FLOATING_POINT_SAVE_STATE.
|
||||
/// The size of this entire table is NumberOfCpus* size of the
|
||||
/// EFI_SMM_FLOATING_POINT_SAVE_STATE. These fields are populated only if
|
||||
/// there is at least one SMM driver that has registered for a callback with the
|
||||
/// FloatingPointSave field in EFI_SMM_BASE_PROTOCOL.RegisterCallback() set to TRUE.
|
||||
///
|
||||
EFI_SMM_FLOATING_POINT_SAVE_STATE *CpuOptionalFloatingPointState;
|
||||
|
||||
//
|
||||
// Extensibility table
|
||||
//
|
||||
///
|
||||
/// The number of EFI Configuration Tables in the buffer
|
||||
/// SmmConfigurationTable.
|
||||
///
|
||||
UINTN NumberOfTableEntries;
|
||||
///
|
||||
/// A pointer to the EFI Configuration Tables. The number of entries in the table is
|
||||
/// NumberOfTableEntries.
|
||||
///
|
||||
EFI_CONFIGURATION_TABLE *SmmConfigurationTable;
|
||||
};
|
||||
|
||||
|
|
|
@ -33,6 +33,10 @@ extern EFI_GUID gEfiProcessorSubClassGuid;
|
|||
|
||||
extern EFI_GUID gEfiCacheSubClassGuid;
|
||||
|
||||
//
|
||||
// The memory subclass belongs to the data class and is identified as the memory
|
||||
// subclass by the GUID.
|
||||
//
|
||||
#define EFI_MEMORY_SUBCLASS_GUID \
|
||||
{0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} }
|
||||
|
||||
|
|
|
@ -96,11 +96,24 @@ typedef struct {
|
|||
} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// Voltage Extended Error Data
|
||||
/// This structure provides the voltage at the time of error. It also provides
|
||||
/// the threshold value indicating the minimum or maximum voltage that is considered
|
||||
/// an error. If the voltage is less then the threshold, the error indicates that the
|
||||
/// voltage fell below the minimum acceptable value. If the voltage is greater then the threshold,
|
||||
/// the error indicates that the voltage rose above the maximum acceptable value.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The voltage value at the time of the error.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA Voltage;
|
||||
///
|
||||
/// The voltage threshold.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA Threshold;
|
||||
} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;
|
||||
|
||||
|
@ -108,37 +121,78 @@ typedef struct {
|
|||
/// Microcode Update Extended Error Data
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The version of the microcode update from the header.
|
||||
///
|
||||
UINT32 Version;
|
||||
} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// Asynchronous Timer Extended Error Data
|
||||
/// The timer limit provides the timeout value of the timer prior to expiration.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The number of seconds that the computing unit timer was configured to expire.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA TimerLimit;
|
||||
} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// Host Processor Mismatch Extended Error Data
|
||||
/// This provides information to indicate which processors mismatch, and how they mismatch. The
|
||||
/// status code contains the instance number of the processor that is in error. This structure's
|
||||
/// Instance indicates the second processor that does not match. This differentiation allows the
|
||||
/// consumer to determine which two processors do not match. The Attributes indicate what
|
||||
/// mismatch is being reported. Because Attributes is a bit field, more than one mismatch can be
|
||||
/// reported with one error code.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The unit number of the computing unit that does not match.
|
||||
///
|
||||
UINT32 Instance;
|
||||
///
|
||||
/// The attributes describing the failure.
|
||||
///
|
||||
UINT16 Attributes;
|
||||
} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// Thermal Extended Error Data
|
||||
/// This structure provides the temperature at the time of error. It also provides the threshold value
|
||||
/// indicating the minimum temperature that is considered an error.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The thermal value at the time of the error.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA Temperature;
|
||||
///
|
||||
/// The thermal threshold.
|
||||
///
|
||||
EFI_EXP_BASE10_DATA Threshold;
|
||||
} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;
|
||||
|
||||
|
||||
//
|
||||
// Valid cache types
|
||||
//
|
||||
typedef enum {
|
||||
EfiInitCacheDataOnly,
|
||||
EfiInitCacheInstrOnly,
|
||||
|
@ -157,10 +211,24 @@ typedef struct {
|
|||
|
||||
///
|
||||
/// Processor Disabled Extended Error Data
|
||||
/// This structure provides details as to why and how the computing unit was disabled. The causes
|
||||
/// should cover the typical reasons a processor would be disabled. How the processor was disabled is
|
||||
/// important because there are distinct differences between hardware and software disabling.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The reason for disabling the processor.
|
||||
///
|
||||
UINT32 Cause;
|
||||
///
|
||||
/// TRUE if the processor is disabled via software means such as not listing it in the ACPI tables.
|
||||
/// Such a processor will respond to Interprocessor Interrupts (IPIs). FALSE if the processor is hardware
|
||||
/// disabled, which means it is invisible to software and will not respond to IPIs.
|
||||
///
|
||||
BOOLEAN SoftwareDisabled;
|
||||
} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;
|
||||
|
||||
|
@ -174,45 +242,114 @@ typedef UINT8 EFI_MEMORY_ERROR_OPERATION;
|
|||
///
|
||||
typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;
|
||||
|
||||
///
|
||||
/// This structure provides specific details about the memory error that was detected. It provides
|
||||
/// enough information so that consumers can identify the exact failure and provides enough
|
||||
/// information to enable corrective action if necessary.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The error granularity type.
|
||||
///
|
||||
EFI_MEMORY_ERROR_GRANULARITY Granularity;
|
||||
///
|
||||
/// The operation that resulted in the error being detected.
|
||||
///
|
||||
EFI_MEMORY_ERROR_OPERATION Operation;
|
||||
///
|
||||
/// The error syndrome, vendor-specific ECC syndrome, or CRC data associated with
|
||||
/// the error. If unknown, should be initialized to 0.
|
||||
///
|
||||
UINTN Syndrome;
|
||||
///
|
||||
/// The physical address of the error.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS Address;
|
||||
///
|
||||
/// The range, in bytes, within which the error address can be determined.
|
||||
///
|
||||
UINTN Resolution;
|
||||
} EFI_MEMORY_EXTENDED_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// This extended data provides some context that consumers can use to locate a DIMM within the
|
||||
/// overall memory scheme.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The memory array number.
|
||||
///
|
||||
UINT16 Array;
|
||||
///
|
||||
/// The device number within that Array.
|
||||
///
|
||||
UINT16 Device;
|
||||
} EFI_STATUS_CODE_DIMM_NUMBER;
|
||||
|
||||
///
|
||||
/// Memory Module Mismatch Extended Error Data
|
||||
///
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The instance number of the memory module that does not match.
|
||||
///
|
||||
EFI_STATUS_CODE_DIMM_NUMBER Instance;
|
||||
} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;
|
||||
|
||||
///
|
||||
/// Memory Range Extended Data
|
||||
/// This extended data may be used to convey the specifics of a memory range. Ranges are specified
|
||||
/// with a start address and a length.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The starting address of the memory range.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS Start;
|
||||
///
|
||||
/// The length in bytes of the memory range.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS Length;
|
||||
} EFI_MEMORY_RANGE_EXTENDED_DATA;
|
||||
|
||||
///
|
||||
/// Extended Error Data for Assert
|
||||
/// The data indicates the location of the assertion that failed in the source code. This information
|
||||
/// includes the file name and line number that are necessary to find the failing assertion in source code.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The line number of the source file where the fault was generated.
|
||||
///
|
||||
UINT32 LineNumber;
|
||||
///
|
||||
/// The size in bytes of FileName.
|
||||
///
|
||||
UINT32 FileNameSize;
|
||||
///
|
||||
/// A pointer to a NULL-terminated ASCII or Unicode string that represents the file
|
||||
/// name of the source file where the fault was generated.
|
||||
///
|
||||
EFI_STATUS_CODE_STRING_DATA *FileName;
|
||||
} EFI_DEBUG_ASSERT_DATA;
|
||||
|
||||
|
@ -225,25 +362,71 @@ typedef union {
|
|||
EFI_SYSTEM_CONTEXT_IPF SystemContextIpf;
|
||||
} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;
|
||||
|
||||
///
|
||||
/// This extended data allows the processor context that is present at the time of the exception to be
|
||||
/// reported with the exception. The format and contents of the context data varies depending on the
|
||||
/// processor architecture.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The system context.
|
||||
///
|
||||
EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context;
|
||||
} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;
|
||||
|
||||
///
|
||||
/// This extended data records information about a Start() function call. Start() is a member of
|
||||
/// the EFI 1.10 Driver Binding Protocol.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The controller handle.
|
||||
///
|
||||
EFI_HANDLE ControllerHandle;
|
||||
///
|
||||
/// The driver binding handle.
|
||||
///
|
||||
EFI_HANDLE DriverBindingHandle;
|
||||
///
|
||||
/// The size of the RemainingDevicePath. It is zero if the Start() function is
|
||||
/// called with RemainingDevicePath = NULL.
|
||||
///
|
||||
UINT16 DevicePathSize;
|
||||
///
|
||||
/// Matches the RemainingDevicePath parameter being passed to the Start()
|
||||
/// function. Note that this parameter is the variable-length device path and not a pointer
|
||||
/// to the device path.
|
||||
///
|
||||
UINT8 *RemainingDevicePath;
|
||||
} EFI_STATUS_CODE_START_EXTENDED_DATA;
|
||||
|
||||
///
|
||||
/// Legacy Oprom extended data
|
||||
/// The device handle and ROM image base can be used by consumers to determine which option
|
||||
/// ROM failed. Due to the black-box nature of legacy option ROMs, the amount of information that
|
||||
/// can be obtained may be limited.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The data header identifying the data.
|
||||
///
|
||||
EFI_STATUS_CODE_DATA DataHeader;
|
||||
///
|
||||
/// The handle corresponding to the device that this legacy option ROM is being invoked.
|
||||
///
|
||||
EFI_HANDLE DeviceHandle;
|
||||
///
|
||||
/// The base address of the shadowed legacy ROM image.
|
||||
/// May or may not point to the shadow RAM area.
|
||||
///
|
||||
EFI_PHYSICAL_ADDRESS RomImageBase;
|
||||
} EFI_LEGACY_OPROM_EXTENDED_DATA;
|
||||
|
||||
|
|
|
@ -48,10 +48,10 @@ typedef struct _EFI_PEI_FIND_FV_PPI EFI_PEI_FIND_FV_PPI;
|
|||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FIND_FV_FINDFV)(
|
||||
IN EFI_PEI_FIND_FV_PPI *This,
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
UINT8 *FvNumber,
|
||||
EFI_FIRMWARE_VOLUME_HEADER **FVAddress
|
||||
IN EFI_PEI_FIND_FV_PPI *This,
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN UINT8 *FvNumber,
|
||||
IN OUT EFI_FIRMWARE_VOLUME_HEADER **FVAddress
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
|
@ -45,7 +45,7 @@ typedef struct _EFI_PEI_FV_FILE_LOADER_PPI EFI_PEI_FV_FILE_LOADER_PPI;
|
|||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FV_LOAD_FILE)(
|
||||
IN EFI_PEI_FV_FILE_LOADER_PPI *This,
|
||||
IN EFI_PEI_FV_FILE_LOADER_PPI *This,
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
|
||||
OUT UINT64 *ImageSize,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
- The reserved memory range to be used for the S3 resume.
|
||||
Otherwise, the S3 resume boot path may fail.
|
||||
|
||||
Copyright (c) 2007, Intel Corporation
|
||||
Copyright (c) 2007 - 2009, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
@par Revision Reference:
|
||||
This PPI is defined in Framework of EFI S3 Resume Boot Path spec.
|
||||
Version 0.9
|
||||
Version 0.9.
|
||||
|
||||
**/
|
||||
|
||||
|
|
Loading…
Reference in New Issue