dmi_hpe_device_correlation
Synopsis
#include <opendmi/entity/hpe/device-correlation.h>
typedef struct dmi_hpe_device_correlation {
dmi_handle_t device_handle;
dmi_handle_t smbus_handle;
uint16_t pci_vendor_id;
uint16_t pci_device_id;
uint16_t pci_subvendor_id;
uint16_t pci_subdevice_id;
uint8_t pci_class;
uint8_t pci_subclass;
dmi_handle_t parent_handle;
bool is_peer_bifurcated;
bool is_upstream;
dmi_hpe_device_type_t device_type;
dmi_hpe_device_location_t device_location;
uint8_t instance;
uint8_t sub_instance;
uint8_t bay;
uint8_t enclosure;
const char *uefi_device_path;
const char *uefi_device_name;
const char *device_name;
const char *uefi_location;
dmi_handle_t physical_handle;
const char *part_number;
const char *serial_number;
uint16_t segment;
uint8_t bus;
uint8_t devfn;
bool has_pci_location;
} dmi_hpe_device_correlation_t;
Description
The dmi_hpe_device_correlation_t structure holds the decoded HP/HPE device
correlation record, which correlates a device with the system slot (type 9) or
the onboard device (type 41) it is found at, and with the UEFI boot entries
naming it.
The structure is returned by dmi_entity_info for the structures decoded
by dmi_hpe_device_correlation_spec, of type
DMI_TYPE(hpe_device_correlation), declared in <opendmi/module/hpe.h>, once
the HPE extension module (dmi_hpe_module) is enabled, which it is for HP and
HPE servers from Gen9 onwards. It lives as long as the context it has been
decoded in.
The structure has grown with the generations of the servers: strings the data
ends before are nullptr, physical_handle is DMI_HANDLE_INVALID, and the
PCI location is zero.
Fields
device_handle-
Handle of the system slot (type 9) or the onboard device (type 41) structure. Set to
0xFFFEwhen not applicable. smbus_handle-
Handle of the SMBus segment record (type 228). Set to
0xFFFEwhen not applicable. pci_vendor_id-
PCI vendor ID of the device. Set to
0xFFFFwhen the device is not present. pci_device_id-
PCI device ID of the device. Set to
0xFFFFwhen the device is not present. pci_subvendor_id-
PCI subsystem vendor ID of the device. Set to
0xFFFFwhen the device is not present. pci_subdevice_id-
PCI subsystem ID of the device. Set to
0xFFFFwhen the device is not present. pci_class-
PCI class code of the device. Set to
0xFFwhen the device is not present. pci_subclass-
PCI subclass code of the device. Set to
0xFFwhen the device is not present. parent_handle-
Handle of the parent device. Set to
0xFFFEwhen not applicable. The structure it refers to is not documented, and is presumably the device correlation record of the parent device. is_peer_bifurcated-
Whether the device is a peer bifurcated one, whose physical slot
physical_handletells. is_upstream-
Whether the device is an upstream one.
device_type-
Type of the device, UEFI only, see
dmi_hpe_device_type. device_location-
Location of the device, see
dmi_hpe_device_location. instance-
Instance of the device.
sub_instance-
Sub-instance of the device: the port of a NIC, or the bay of an NVMe drive.
bay-
Bay of the device, zero if unknown. Set to
0xFFwhen not shown. enclosure-
Enclosure of the device, zero if unknown. Set to
0xFFwhen not shown. uefi_device_path-
UEFI device path.
uefi_device_name-
UEFI device structured name.
device_name-
UEFI device name.
uefi_location-
UEFI location.
physical_handle-
Handle of the system slot structure (type 9) of the real physical slot, valid only if
is_peer_bifurcatedis set, and neither shown nor checked otherwise. part_number-
Part number of the PCI device.
serial_number-
Serial number of the PCI device.
segment-
PCI segment group, zero for a single group topology.
bus-
PCI bus.
devfn-
PCI device and function,
(device << 3) | function. has_pci_location-
Whether the structure holds
segment,busanddevfn, which the structures shorter than 40 bytes leave out. The fields are not shown then.