dmi_hpe_dimm_location
Synopsis
#include <opendmi/entity/hpe/dimm-location.h>
typedef struct dmi_hpe_dimm_location {
dmi_handle_t device_handle;
uint8_t board;
uint8_t dimm;
uint8_t processor;
uint8_t logical_dimm;
const char *uefi_device_path;
const char *uefi_device_name;
const char *device_name;
uint8_t controller;
uint8_t channel;
uint8_t ie_dimm;
uint8_t ie_pldm_id;
uint16_t vendor_id;
uint16_t device_id;
uint16_t controller_vendor_id;
uint16_t controller_device_id;
uint8_t interleave;
const char *part_number;
uint8_t channel_index;
bool is_system_board;
bool has_ie;
bool has_channel_index;
} dmi_hpe_dimm_location_t;
Description
The dmi_hpe_dimm_location_t structure holds the decoded HP/HPE DIMM location
record, which tells where the DIMM socket of a memory device (type 17) is: the
memory board, the processor and the channel it belongs to. There is a record
for each socket, including the ones of the memory boards which are not
installed.
The structure is returned by dmi_entity_info for the structures decoded
by dmi_hpe_dimm_location_spec, of type DMI_TYPE(hpe_dimm_location),
declared in <opendmi/module/hpe.h>, once the HPE extension module
(dmi_hpe_module) is enabled, which it is for HP and HPE servers. It lives as
long as the context it has been decoded in.
The structure has grown with the generations of the servers: fields the data
ends before are set to the values they have when not specified, and strings to
nullptr.
Fields
device_handle-
Handle of the memory device structure (type 17).
board-
1-based number of the memory board. Set to
UINT8_MAXfor the sockets of the system board, and not shown then. dimm-
1-based number of the DIMM.
processor-
1-based number of the processor. Set to
UINT8_MAXwhen not shown. logical_dimm-
1-based logical number of the DIMM, as ACPI numbers it, zero if unspecified.
uefi_device_path-
UEFI device path.
uefi_device_name-
UEFI device structured name.
device_name-
Device name.
controller-
1-based number of the memory controller, zero if unknown.
channel-
1-based number of the memory channel, as the silk screen names it, zero if unknown.
ie_dimm-
0-based number of the DIMM, as the Innovation Engine reports it. Set to
UINT8_MAXwhen not supported. Reserved from Gen12 onwards, and not shown then. ie_pldm_id-
Sensor ID of the Innovation Engine. Set to
UINT8_MAXwhen not supported. Reserved from Gen12 onwards, and not shown then. vendor_id-
Manufacturer ID code of the module, as the SPD gives it.
device_id-
Product ID code of the module, NVDIMMs only.
controller_vendor_id-
Manufacturer ID code of the controller, NVDIMMs only, as the SPD gives it: the number of continuation codes in the low byte, whose bit 7 is a parity bit, and the JEP106 code in the high byte.
controller_device_id-
Product ID code of the controller, NVDIMMs only.
interleave-
1-based interleave set within the processor, zero if unknown.
part_number-
HPE part number, from the OEM area of the SPD.
channel_index-
0-based index of the DIMM within its channel. Set to
UINT8_MAXwhen the structure holds none. is_system_board-
Whether the socket is one of the system board, which
boardofUINT8_MAXtells. has_ie-
Whether
ie_dimmandie_pldm_idare shown, which they are up to Gen11. has_channel_index-
Whether the structure holds
channel_index, which the structures shorter than 28 bytes leave out.