Set FDM Info
更新时间: 2026/08/06
在Gitcode上查看源码

Set FDM Info

Change History

openUBMC VersionRevision DateDescription
25.062025/06/26Initial draft: add command details

Basic Information

Function Description

This command is used to set auxiliary fault diagnosis information.

Privilege

DiagnoseMgnt

Command Information

Request Information

ByteData Field
NetFn30h
CMD92h
1:3Manufacturer ID, LS Byte first. The length is fixed to three bytes. For example, if the vendor ID is 2011 and the corresponding hexadecimal value is 0x0007DB, the first byte is DBh, the second byte is 07h, and the third byte is 00h.
4Sub command, subcommand = 17h
5FDM-related configuration parameters. For details, see Table 1.
6Data length.
7:NWritten data

Response Information

ByteData Field
1Completion Code
2:4Manufacturer ID, LS Byte first. The length is fixed to three bytes. For example, if the vendor ID is 2011 and the corresponding hexadecimal value is 0x0007DB, the first byte is DBh, the second byte is 07h, and the third byte is 00h.

Reference

Table 1 FDM configuration parameters

ParameterParameter DataNo. (Decimal)
CPU BusNO.
(write only)
data1: CPU Count (maximum number of CPUs supported by a platform)
data2:N Bus Start Address
(Bus 0 of each CPU is reported in sequence, for example,
CPU0Bus0, CPU1Bus0, CPU2Bus0, CPU3Bus0......)
dataN+1:2N-1 Bus Size
The number of buses assigned to each CPU is reported in sequence. If all the 256 buses are evenly assigned, the value of these fields is 0x40 for servers with four processors and 0x20 for servers with eight processors.
1
Setup Status
(read write)
data1- FDM Enable 0:Disable 1:Enable 0xff:NA
data2-EMCA/EMCA2 0:Disable 1:Enable 0xff:NA
data3-IOMCA 0:Disable 1:Enable 0xff:NA
data4-Viral 0:Disable 1:Enable 0xff:NA
data5-CDC 0:Disable 1:Enable 0xff:NA
data6-System Error 0:Disable 1:Enable 0xff:NA
data7:8-Reserved Default value 0xFF
2
PlatForm
(write only)
data1
0: Unknow
1: Sandy Brige
2: Ivy Brige
3: HasWell
6: icelake
3
MCE RegVal
(write only)
data1: 2-RegNo register address. Some MCE registers cannot be obtained through the ME and can only be reported by the BIOS.
data3:10 RegVal register value
......
(The register addresses and register values are arranged in a loop.)
MaxLength 240Bytes
4
PCIE Addr Info
(write only)
data1:1: status code
data2:n: data. For details, see Table 2.
5
Memory Addr Info
(write only)
data1:1: status code
Data2:1-Type:
Before Purley: 1-SAD, 2-TAD, 3-RIR
Purley (including cooplake): 0x10, 0x11, 0x12, 0x13-SAD, 0x20-TAD, 0x30, 0x31, 0x32 - RIR
Whitley(IceLake): 0x40, 0x41, 0x42, 0x43, 0x44-SAD, 0x50, 0x51-TAD, 0x60, 0x61 – RIR, 0x70 – Platform
ARM (1620): 0x80-HHA_INTLV, 0x81-DDRC_INTLV
data3:n: data. For details, see Table 3.
6
FDM Version
(read only)
data1: 1-main version of the FDM version, 1-FDM 1.0, 2-FDM 2.0, and so on
data2:1: secondary version of the FDM version. The value starts from 0.
7
IERR Statusdata1:1: indicates whether an IERR occurs. When an IERR occurs, the system is manually or automatically hot reset. Then the BIOS collects fault data and reports the data to the BMC. When an IERR occurs, the BIOS needs to perform a cold reset on the system to ensure that the initialization is complete. This parameter is used to notify the BIOS that IERR has occurred recently. After the BIOS reports the fault data, the system is cold reset.
0- No IERR occurs.
1- IERR occurred
8
CPU Threads Infodata1:1-socket_id
data2:n: thread information of the corresponding socket
9
Address Space Infodata1:1: address type:
1: TF address segment
data2:8: start address, with the lower byte before the lower byte
Data10:8-address range, with the lower byte before the lower byte
10
CPU Threads Info
(whitley-icelake)
data1:1-socket_id
data2:1-core count
data3:1-Hyper Thread //Whether Hyper Thread is enabled
The value of data4:n-ThreadsID[cores] //cores ranges from 0 to core count-1. For details about the reported value, see MSR:0x53. Only the Thread0 ID information is reported.
11
Reg Report Versiondata1:1-sub_cmd 0x21
data2: 1 indicates that the version number of the ARM register can be reported. (2021.8.12, VERSION_1: DDRC_V2 supported)
13
Integrated PCIe Addr Info
(write only)
Reports the BDF information of the PCIe controller integrated in the socket.
data1:1-Socket: logical ID of the CPU. The value starts from 0.
data2:1-Report Controller Count: number of reported PCIe controller information records. Enter the actual number of reported records.
data3:1-Integrated Controller Type: PCIe controller type. 0: PCIe core; 1: PCIe NIC controller; 2: PCIe NIC controller; 3: PCIe SAS controller; 4: PCIe SATA controller; 5: PCIe ZIP controller; 6: PCIe SEC controller;
data4:1-Integrated Controller Index: index of the data3 type. The value range is [0, 1, 2, ..., n].
data5:1-Bus
data6:1-Device
data7:1-Function
data8:12: indicates the information about the second controller. The format is the same as that of data3:7.
datan:n+4-: The format is the same as that of data3:7, indicating the information about the nth controller.
14
Device Health Status
(read only)
Querying the NPU Health Status
data1:1: queries the number of dev_types.
data2:n: dev_type list to be queried, NPU (0), XPU_CARRIER_BOARD (1)
Response:
data1:1: number of queried devices
data2:1: device dev_type
data3:1 - device ID
data4: 1 indicates the health status. 0: Good; 1: Degrade; 2: Fail; 255: Unknow
data5:1: reserved field
data6:4: indicates the health status of the second device to be queried. The format is the same as that of data2:5.
datan:n+4-The format is the same as that of data2:5, indicating the health status of the nth device to be queried.
16
Memory Controller Configuration
(write only)
Reporting Memory Configuration Information
data1:1-Platform Id: used to distinguish different CPU IDs for different platforms.
data2: 1-Memory Controller Type: CPU memory controller type. 0: DDRC; 1: HBMC.
data3:1: status code; 1: start; 2: reporting; 3: end; 4: hot swap memory address update ends.
data4: 1-type: 1-interleaving configuration information of the memory controller
data5:n: data. For details, see the 9-4 table.
17
MultiSystem Memory Space Info
(write only)
Reporting Memory Configuration Parameters of Multiple Systems
data1:1-Global System Id: global system ID
data2:1 - Local System Id: local system ID
data3:1-Soc ID: used to distinguish different chip platform generations.
data4: 1-Memory Controller Type: memory controller type. 0: DDRC; 1: HBMC.
data5: 1-State: status code. 1: reporting started; 2: reporting in progress; 3: reporting ended.
data6: 1-Data Type: data type. For details, see Table 4.
data7:n-Data: data. For details, see Table 4.
18
MultiSystem Address Config Info
(write only)
Reporting the Configuration of the System Address Space of Multiple Systems
data1:1-Global System Id: global system ID
data2:1 - Local System Id: local system ID
data3:1-Address Type: address type. For details, see Table 5.
data4:n-Data: data. For details, see Table 5.
19
MultiSystem PCIe Addr Info
(write only)
Reporting PCIe Configuration Resources of Multiple Systems
data1:1-Global System Id: global system ID
data2:1 - Local System Id: local system ID
data3:n-Data: data. For details, see Table 2.
20
Bios Report Memory RAS ResourceReporting Memory Fault Tolerance Resource Information
data1:1 - Source Type: resource type. 0: ACLS resource quantity; 1: PPR resource granularity.
data2:1 – Global System Id: global system number
data3:1 – Local System Id: local system number
data4:n – data. For details, see Table 6.
21

Table 2 PCIE Address Parameter

StatusDataStatus Codes
StartN/A1
Transmissiondata1:1 – Segment //For products with more than eight sockets, such as 9032, different 4-socket servers need to be differentiated. The value 1 indicates that the server is based on the CPU, and the value 0 indicates that the server is not involved.
Logical ID of the data2:1 – Socket Id //CPU, starting from 0
data3:1-Bus //Root port BDF corresponding to the PCIe slot
data4:1-Device
data5:1-Function
data6:1-Component Type //When the PCIe slot address information of the PCIe switch is reported, the component type supported by the PCIe slot needs to be reported. For a PCIe slot that is not mounted to the PCIe switch, 0xff is filled in, currently, only the mezzanine cards and standard PCIe cards of some OSCA boards are connected to the PCIe switch.
data7:1-Group Id //If duplicate slot IDs exist, use the group ID to distinguish them. The group ID starts from 1. Currently, only the X6800 board has multiple PCIe groups. For other products, the value is 1. When the PCIe slot address information under the PCIe switch is reported, the group ID of the PCIe slot needs to be reported, for the PCIe slot that is not mounted to the PCIe switch, 0xff is filled in.
data8:1-Slot Id //When the PCIe slot address information of the PCIe switch is reported, the slot ID of the PCIe slot needs to be reported. For the PCIe slot that is not mounted to the PCIe switch, 0xff is filled in.
data9:2 – Vendor Id
data11:2 – Device Id
data13:1 – SecBus //Secondary Bus Number
data14:1 – SubBus; //Subordinate Bus Number
data15:1 – BDF No. //BDF sequence number. A component may have one or more BDFs. All the BDFs are reported by sequence number. 0 based
data16:1 – Reserved //Reserved byte. Set it to 0 when the BIOS is reported.
Indicates the start address of the data17:4 – PciCfg Low Base Addr Start //PCI memory address space in the little endian format.
End of the low address in the data21:4 – PciCfg Low Base Addr Start //PCI memory address space, in the little endian format.
Upper address of the data25:8 – PciCfg High Base Addr Start //PCI memory address space, in the little endian format.
End of the high address in the data33:8 – PciCfg High Base Addr End //PCI memory address space, in the little endian format.
data41:3-reserved //Reserved byte. The value is 0 when the BIOS reports data.
data44:1 – MMIO Addr Range Count
data45:8-MMIO Addr Range0 Base //LS-byte first: little endian.
data53:8-MMIO Addr Range0 Len
......
2
Reporting the PCIe address information ends in the startup phase.N/A3
The update of the PCIe address information is complete during the running process.N/A4

Table 3 Memory Address Parameter

StatusTypeDataStatus Codes
StartN/AN/A1
TransmissionSAD(1)data1:1-socket
data2:1 – resv
data3:2-node
data5:4-TOLM
data9:80-dram_rule[20]
data89:80-interleave_list[20]
2
TAD(2)data1:1-socket
data2:1-resv
data3:2-ha
data5:4 – HaSYSDEFAULTURE
data9:4 – HaSYSDEFAULTURE2
data13:48 – TadWayness[12]
data61:4 – MacMtr
-
RIR(3)data1:1-socket
data2:1-channel
data3:2-imc
data5:20 – imcRIRWaynessLimit[5]
data25:160 – imcRIRIlv0Offset[5][8]
data185:48 – imcTADChnIlvOffset[12]
-
SAD_REG_PURLEY_COMM
(0x10,PURLEY)
data1:1-socket
data2:1-resv
data3:2 – imcInterBitmap
data5:4-tolm
data9:128-mcRouteTable[4][8]
data137:48-reserved
-
SAD_REG_PURLEY_CHA
(0x11,PURLEY)
data1:1-socket
data2:3-resv
data5:96-cboDramRule[24]
data101:128-CHAInterleaveListCfg[24];
-
SAD_REG_PURLEY_MC
(0x12,PURLEY)
data1:1-socket
data2:3-resv
data5:96-mcFMDramRule[24]
data101:128-MCInterleaveListCfg[24];
-
SAD_REG_PURLEY_NM
(0x13,PURLEY)
data1:1-socket
data2:3-resv
data5:96-mcNMDramRule[24]
data101:128-MCNMInterleaveListCfg[24];
-
TAD_REG_PURLEY
(0x20,PURLEY)
data1:1 – socket
data2:1-resv
data3:2-imc
data5:32 – tadWayness
data37:32 – tadbase
data69:4 – mcMtr
data73:4 – modeM2mem
data77:4 – mirrorChnls
data81:4 – mirrorFailover
data85:48-reserved
-
MEM_RIR_REG_PURLEY_COMM
(0x30,PURLER)
data1:1 – socket
data2:1-channel
data3:2-imc
data5:16 – imcRIRWaynessLimit[4]
data21:128 – imcRIRIlv0Offset[4][8]
data149:32 – imcTADChnIlvOffset[8]
data181:12-dimmmtr[3]
data193:24-reserved
-
RIR_REG_PURLEY_FM
(0x31,PURLER)
data1:1 – socket
data2:1-channel
data3:2-imc
data5:16 – imcFMRIRWaynessLimit[4]
data21:32 – imcFMRIRIlvOffset[4][2]
data53:32 – fmTADChnIlvoffset[8]
-
ADDDC_REG_PURLEY
(0x32,PURLER)
data1:1 – socket
data2:1-channel
data3:2-imc
data5:4-sparing_control
data9:4-mcMtr
data13:16 – adddc_region_control[4]
data29:48 – reserved
-
0x40-SAD COMMdata1:1-socket
data2:3-reserved
data5:4-tolm
data9:4-BLOCK_DECODER_ADDR_N0_CHABC_SAD1_REG
data13:4-BLOCK_DECODER_ADDR_N1_CHABC_SAD1_REG
data17:[82]-BLOCK_DECODER_EN_CFG_CHABC_SAD1_REG[8] //CFG_0~CFG_7
data33:[14
4] mRemoteDramRuleCfgN0[14]
data89:[14*4]-mRemoteDramRuleCfgN1[14]
data145:48-reserved
-
0X41-SAD CHAdata1:1-socket
data2:3-reserved
data5:[164] mDramRuleCfgCha[16]
data69:[16
4] mInterleaveListCfgCha[16]
data133:48-reserved
-
0X42-SAD MCdata1:1-socket
data2:3-reserved
data5:4-DRAM_MC_TARGET_CHABC_SAD_REG
data9:4-DRAM_MC_CHANNEL_CHABC_SAD_REG
data13:4-DRAM_GLOBAL_INTERLEAVE_CHABC_SAD_REG
data17:[224]-mDramRt0ModeOffset[2][2]
data33:[224]-mDramRt1ModeOffset[2][2]
data49:[2*4]-mDramRt2ModeOffset[2]
data57:104-reserved
-
0x43-SAD SNCdata1:1-Socket
data2:3-reserved
data5:4-CHA_SNC_CONFIG_CHA_PMA_REG
data9:4-UMA_CLUSTER_CONFIG_IIO_VTD_REG
data13:4-SNC_UPPER_BASE_IIO_VTD_REG
data17:[54]-mIioSncBaseRegisterOffset[5]
data37:[2
424]-mDramTgtRouteTable[cluster][4][2] //cluster=2. If only one cluster is configured, set the unused cluster array to 0.
data101:[2324]-mDramChRouteTable[cluster][3][2] //cluster=2. If only one cluster is configured, set the unused cluster array to 0.
data101:[2
324]-mDramChRouteTable[cluster][3][2] //cluster==2: If only one cluster is configured, set the unused cluster array to 0.
data149:48-Reserved data149:48-Reserved
-
0x44-SAD MC RuleCFGdata1:1 – socket
data2:1-channel
data3:2-iMC
data5:[84]-mMcDramRuleCfgN0[8]
data37:[8
4] – mMcDramRuleCfgN1[8]
data69:48-Reserved
-
0x50-TADdata1:1 – socket
data2:1-reserved
data3:2 – iMC
data5:4-reserved
data9:4 – MIRRORFAILOVER
data13:4-MIRRORCHNLS
The data17:[20*8] – SAD2TAD[20] // is obtained by writing to the TAD_RD_N0_M2MEM_MAIN_REG register and then reading the TAD_RD_N0/N1_M2MEM_MAIN_REG.
data177:48-Reserved
-
0x51 – TAD CH interleavedata1:1 – socket
data2:1-channel
data3:2 – iMC
data5:[124] – TadChnIlvOffsetN0[12]
data53:[12
4]-TadChnIlvOffsetN1[12]
data101:4-MCNMCACHINGINTLV_MC_2LM_REG
data105:4-MCNMCACHINGOFFSET_MC_2LM_REG
data109:4-MCNMCACHINGCFG_MC_2LM_REG
data113:48-Reserved
-
0x60-RIR BASEdata1:1 – socket
data2:1-channel
data3:2-iMC
data5:4 – mcMtr
data9:[24] – DimmMtrOffset[2]
data17:4 – AMAP_MC_MAIN_REG
data21:[4
4] – RirWaynessLimit[4]
data37:[484] – RirIlvOffset[4][8]
data165:[44]-FmRirWaynessLimit[4]
data181:[4
2*4]-FmRirIlvOffset[4][2]
data213:16-Reserved
-
0X61-ADDDC regiondata1:1-socket
data2:1-channel
data3:2-iMC
data5:4-sparing_control
data9:4 – mcMtr
data13:4-adddc_region0_control
data17:4-adddc_region1_control
data21:4-adddc_region2_control
data25:4-adddc_region3_control
data29:1-ADDDC_REGION0_MCDDC_DP_REG
data30:1-ADDDC_REGION1_MCDDC_DP_REG
data31:1-ADDDC_REGION2_MCDDC_DP_REG
data32:1-ADDDC_REGION3_MCDDC_DP_REG
data33:48-Reserved
-
0x70-Platformdata1:4-VGA_RAM_BASE
data5:4-VGA_RAM_Limit
data9:4-mMmCfgBase
data13:4-mMmCfgLimit
data17:4-mPlatGlobalMmiolBase //low base
data21:4-mPlatGlobalMmiolLimit
data25:8-mPlatGlobalMmiohBase //high Base
data33:8-mPlatGlobalMmiohLimit
data41:4-MESEGBase //ME segment address space
data45:4-MESEGLimit
data49:4-TSEGBase //TSEG segment address space
data53:4-TSEGLimit
data57:8-tolm //The upper four bytes are filled with 0.
data65:8-tohm
data73:1-mTotCHA //Number of CHAs of the current CPU
data74:47-reserved
-
HHA_INTLV
(0x80)
data1:1-socket //0~3
data2:1-totem //Totem number, not a sequence number. TotemA is 1, and totemB is 3.
data3:2-reserved
data5:4-intlv_addr_cfg
data9:48-msd_ctrl
data41:4
8-msd_map
-
DDRC_INTLV
(0x81)
data1:1-socket //0~3
data2:1-ddrc //0~7
data3:2-reserved
data5:4-work_mode3
data9:4-ddr_mode
data13:4-work_mode_dimm
data17:4-rank_vol0
data21:4-rank_vol1
data25:4-rasc_mode
-
Reporting memory address information ends in the startup phase.N/AN/A3
Updating memory address information is complete during hot swap.N/AN/A4

Table 4 MultiSystem Memory Space Info Parameter

Soc IdMemory Controller TypeStateData TypeData
30-DDRC1- start to reportN/AN/A
2- reporting1-DDRC_INTLVdata1:1-socket
data2:[14]-COM_MSD_EN
data6:[8
4]-COM_MSD_CTRL[8]
data38:[84]-COM_MSDDMCMAP_TA[8]
data70:[8
4]-COM_MSDDMCMAP_TB[8]
data102:[84]-COM_MSDDMCMAP_TC[8]
data134:[4
4]-COM_MSDSKTMAP[4]
data150:[14]-COM_DDR_INTLV_ADDR
data154:[8
4]-reserved
2- reporting2- Memory Address Matrixdata1:1-socket
data2:1-die: TA=0, TB=3
data3: 1-channel: local channel. Each TOTEM has four channels. The value ranges from 0 to 3.
data4:4-offset: offset of the data to be written. The value starts from 0 and must be written in sequence.
data8:4-len: length of the written data
data9:[8*N]-AddrMatric[N]
3- end reportingN/AN/A

Table 5 MultiSystem Address Config Info Parameter

Address TypeAddress TypeData
1-TF spaceTF address segmentdata1:8-BaseAddr: TF start address
data9:8-AddrLen: TF address range length
2-HBM Mirror Window and Address RangeHBM image path Rangedata1:1-socket
data2:1-die
data3: 1-WorkingMode: working mode configuration; 6 or 9: PG; 15: AG
data4: 1-TotalMirrorWindowNum: number of active/standby mirror windows
data5: 1-WindowIndex, window index, numbered from 0
data6:1-MasterAddrRangeNum: number of address ranges in the primary area, starting from 1 (example: 2)
data7:1-SparingAddrRangeNum: number of address ranges in the standby area, starting from 1 (example: 1)
data8:8-BaseAddr: start address for main area 1 of window 0
data16:8-AddrLen
data24:8-BaseAddr: start address for main area 2 of window 0
data32:8-AddrLen
data40:8-BaseAddr: start address of standby area 1 of window 0
data48:8-AddrLen
...
data n:1-WindowIndex n, window n
data n:1-MasterAddrRangeNum: number of address ranges in the main area of window n (example 1)
data n:1-SparingAddrRangeNum: number of address ranges for the standby area of window n (example 1)
data n:8-BaseAddr: start address of main area 1 in window n
data n:8-AddrLen
data n:8-BaseAddr: start address of standby area 1 in window n
data n:8-AddrLen

Table 6 Bios Report Memory RAS Resource

Source TypeResourceData
0ACLSdata1:1-socket
data2:1-logical channel // Logical channel
Total number of data3:1-SubChannel0 ACLS total // SubChannel0 ACLS resources
Remaining data4:1-SubChannel0 ACLS current // SubChannel0 ACLS resources
Total number of data5:1-SubChannel1 ACLS total // SubChannel1 ACLS resources
Remaining data6:1-SubChannel1 ACLS current // SubChannel1 ACLS resources
... //The message contains data of multiple channels.
data6n+1:1-socket
data6n+2:1-logical channel // logical channel
Total number of data6n+3:1-SubChannel0 ACLS total // SubChannel0 ACLS resources
Remaining data6n+4:1-SubChannel0 ACLS current // SubChannel0 ACLS resources
Total number of data6n+5:1-SubChannel1 ACLS total // SubChannel1 ACLS resources
Remaining data6n+6:1-SubChannel1 ACLS current // SubChannel1 ACLS resources
1sPPRdata1:1 – cpu
data2:1 – logical channel //Logical channel
data3:1 – dimm0 sPPR granularity; 0:Bank, 1:BankGroup // dimm0 sPPR resource granularity
data4:1 – dimm1 sPPR granularity; 0:Bank, 1:BankGroup // dimm1 sPPR resource granularity
...//The message contains data of multiple channels.
data4n+1:1 – cpu
data4n+2:1 – logical channel // logical channel
data4n+3:1 – dimm0 sPPR granularity; 0:Bank, 1:BankGroup // dimm0 sPPR resource granularity
data4n+4:1 – dimm1 sPPR granularity; 0:Bank, 1:BankGroup // dimm1 sPPR resource granularity

Command Example

Set the bus size.

Request:

bash
ipmicmd -k "0f 00 30 92 db 07 00 17 00 01 00" smi 0

Response:

text
0f 31 00 92 c1

Back to Index