dmi_intel_rsd_memory_device

Synopsis

#include <opendmi/entity/intel-rsd/memory-device.h>
#include <opendmi/module/intel-rsd.h>

typedef struct dmi_intel_rsd_memory_device {
    dmi_handle_t device_handle;
    dmi_intel_rsd_memory_type_t memory_type;
    dmi_intel_rsd_memory_media_t memory_media;
    const char *firmware_revision;
    const char *firmware_api_version;
    uint32_t maximum_tdp;
    uint8_t smbus_address;
} dmi_intel_rsd_memory_device_t;

Description

The dmi_intel_rsd_memory_device_t structure holds the decoded memory device extended information structure (type 197) of Intel Rack Scale Design (RSD) firmware: details of a memory device which its memory device structure (type 17) does not carry, such as whether the module is persistent memory, the version of its firmware, its power budget and the SMBus address it is reached at. Each structure extends the memory device structure its device_handle refers to.

The structure is returned by dmi_entity_info for the structures of type DMI_TYPE(intel_rsd_memory_device), once the Intel RSD extension module (dmi_intel_rsd_module, declared in <opendmi/module/intel-rsd.h>) has been enabled in the context with dmi_add_extension(). It lives as long as the context it has been decoded in.

Fields

device_handle

Handle of the memory device structure (type 17) the structure extends. The handle is not resolved to an entity, and the link.wrong-type lint rule reports one which refers to a structure of another type.

memory_type

Kind of the module: a conventional DIMM or one of the NVDIMM kinds (see dmi_intel_rsd_memory_type).

memory_media

Media the module keeps its data in (see dmi_intel_rsd_memory_media).

firmware_revision

Revision of the firmware of the device, nullptr if the structure does not carry it.

firmware_api_version

Version of the interface the firmware of the device exposes, nullptr if the structure does not carry it.

maximum_tdp

Maximum thermal design power of the device, in milliwatts.

smbus_address

SMBus address of the device, through which its SPD and, for persistent memory, its firmware interface are reached. The BMC hands it to the Intel Intelligent Power Node Manager to query the memory subsystem.

Examples

dmi_registry_t *registry = dmi_get_registry(context);
dmi_entity_t   *entity   = dmi_registry_lookup_first(registry,
                               DMI_TYPE(intel_rsd_memory_device), true);

dmi_intel_rsd_memory_device_t *device =
        dmi_entity_info(entity, DMI_TYPE(intel_rsd_memory_device));

if (device != nullptr) {
    const char *type = dmi_intel_rsd_memory_type_name(device->memory_type);

    printf("Device 0x%04X: %s, up to %u mW\n",
           (unsigned)device->device_handle,
           (type != nullptr) ? type : "unknown type",
           (unsigned)device->maximum_tdp);
}

Standards

Not part of the SMBIOS specification. Defined by Intel Rack Scale Design (RSD) firmware.