HP/HPE Device Correlation Record (Type 203)

Source: dmidecode, dmioem.c. No dumps of the data corpus hold the structure.

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 decoded from Gen9 onwards. It has grown over the generations, and the shortest structures end after the device name, at 0x1F. The PCI location, from 0x24 on, is present in the structures of 40 bytes or more.

Table 1. HP/HPE Device Correlation Record structure
Offset Version Name Length Value Description

0x00

2.0+

Type

BYTE

203

HP/HPE Device Correlation Record indicator

0x01

2.0+

Length

BYTE

Varies

Length of the structure

0x02

2.0+

Handle

WORD

Varies

0x04

2.0+

Device Handle

WORD

HANDLE

Handle of the system slot (type 9) or onboard device (type 41) structure, 0xFFFE if not applicable

0x06

2.0+

SMBus Handle

WORD

HANDLE

Handle of the SMBus segment record (type 228), 0xFFFE if not applicable

0x08

2.0+

PCI Vendor ID

WORD

NUMBER

0xFFFF if the device is not present

0x0A

2.0+

PCI Device ID

WORD

NUMBER

0xFFFF if the device is not present

0x0C

2.0+

PCI Subsystem Vendor ID

WORD

NUMBER

0xFFFF if the device is not present

0x0E

2.0+

PCI Subsystem ID

WORD

NUMBER

0xFFFF if the device is not present

0x10

2.0+

PCI Class Code

BYTE

NUMBER

0xFF if the device is not present

0x11

2.0+

PCI Subclass Code

BYTE

NUMBER

0xFF if the device is not present

0x12

2.0+

Parent Handle

WORD

HANDLE

Handle of the parent device, 0xFFFE if not applicable. The structure it refers to is not documented, and is presumably the device correlation record of the parent device

0x14

2.0+

Flags

WORD

BITFIELD

Bit 0: peer bifurcated device, bit 1: upstream device

0x16

2.0+

Device Type

BYTE

ENUM

UEFI only, see below

0x17

2.0+

Device Location

BYTE

ENUM

See below

0x18

2.0+

Device Instance

BYTE

NUMBER

0x19

2.0+

Device Sub-Instance

BYTE

NUMBER

Port of a NIC, or bay of an NVMe drive

0x1A

2.0+

Bay

BYTE

NUMBER

0 if unknown, 0xFF if not shown

0x1B

2.0+

Enclosure

BYTE

NUMBER

0 if unknown, 0xFF if not shown

0x1C

2.0+

UEFI Device Path

BYTE

STRING

0x1D

2.0+

UEFI Device Structured Name

BYTE

STRING

0x1E

2.0+

UEFI Device Name

BYTE

STRING

0x1F

2.0+

UEFI Location

BYTE

STRING

0x20

2.0+

Physical Slot Handle

WORD

HANDLE

Handle of the system slot structure (type 9) of the real physical slot, valid if bit 0 of the flags is set

0x22

2.0+

Part Number

BYTE

STRING

Part number of the PCI device

0x23

2.0+

Serial Number

BYTE

STRING

Serial number of the PCI device

0x24

2.0+

Segment Group

WORD

NUMBER

PCI segment group, zero for a single group topology

0x26

2.0+

Bus

BYTE

NUMBER

PCI bus

0x27

2.0+

Device and Function

BYTE

NUMBER

PCI device and function, (device << 3) | function

Table 2. Device type
Value Meaning

0x00

Unknown

0x03

Flexible LOM

0x04

Embedded LOM

0x05

NIC in a slot

0x06

Storage controller

0x07

Smart Array storage controller

0x08

USB hard disk

0x09

Other PCI device

0x0A

RAM disk

0x0B

Firmware volume

0x0C

UEFI shell

0x0D

Generic UEFI USB boot entry

0x0E

Dynamic Smart Array controller

0x0F

File

0x10

NVMe hard drive

0x11

NVDIMM

0x12

Embedded GPU

Table 3. Device location
Value Meaning

0x00

Unknown

0x01

Embedded

0x02

iLO virtual media

0x03

Front USB port

0x04

Rear USB port

0x05

Internal USB

0x06

Internal SD card

0x07

Internal virtual USB (embedded NAND)

0x08

Embedded SATA port

0x09

Embedded Smart Array

0x0A

PCI slot

0x0B

RAM memory

0x0C

USB

0x0D

Dynamic Smart Array controller

0x0E

URL

0x0F

NVMe drive bay

0x10

NVDIMM processor

0x11

NVDIMM board

0x12

NVMe riser

0x13

NVDIMM namespace

0x14

VROC SATA

0x15

VROC NVMe