Set FDM Info
更新时间: 2025/06/26
在Gitcode上查看源码17h-设置故障诊断特性辅助信息(Set-FDM-Info)
修订记录
| openUBMC版本号 | 修订日期 | 修订内容 |
|---|---|---|
| 25.06 | 2025/06/26 | 初稿,新增命令详情 |
基本信息
功能说明
设置故障诊断特性辅助信息。
权限
DiagnoseMgnt
命令信息
请求信息
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| CMD | 92h |
| 1:3 | Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。 |
| 4 | Sub command,子命令=17h |
| 5 | FDM Configuration Parameter,见 表1 。 |
| 6 | 写入数据长度 |
| 7:N | 写入的数据 |
响应信息
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code |
| 2:4 | Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。 |
命令样例
设置bus size
请求:
ipmicmd -k "0f 00 30 92 db 07 00 17 00 01 00" smi 0响应:
0f 31 00 92 c1附表1 FDM configuration parameters
| Parameter | Parameter Data | #(10进制) |
|---|---|---|
| CPU BusNO. (write only) | data1: CPU Count (一个平台支持的最大CPU个数) data2:N Bus Start Address (按顺序上报每个CPU的Bus0 ,下 CPU0Bus0, CPU1Bus0, CPU2Bus0, CPU3Bus0…...) dataN+1:2N-1 Bus Size (按顺序上报每个CPU分配的bus数目),在现有bus均分模式下,256个bus都分配掉时,对4P来说这些字段都是0x40,8P都是0x20。 | 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 寄存器地址,mce部分寄存器无法通过ME获取,只能由BIOS上报 data3:10 RegVal 寄存器值 …… (以寄存器地址和寄存器值的格式排列循环) MaxLength 240Bytes | 4 |
| PCIE Addr Info (write only) | data1:1-状态码 data2:n-数据,详见 表2 。 | 5 |
| Memory Addr Info (write only) | data1:1-状态码 data2:1-类型: Purley之前:1-SAD,2-TAD,3 – RIR Purley(包含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-数据,详见 表3 。 | 6 |
| FDM Version (read only) | data1:1-FDM版本的主版本,1-FDM 1.0,2-FDM2.0,以此类推 data2:1-FDM版本的次版本,从0开始 | 7 |
| IERR Status | data1:1-是否发生过IERR,当发生IERR时,会手动或自动热复位系统,然后BIOS收集故障数据并上报给BMC,但发生IERR故障时,BIOS需要将系统冷复位一次,才能确保初始化彻底;该参数就是告诉BIOS最近发生过IERR,BIOS上报完故障数据后,再将系统冷复位 0-未发生过IERR 1-发生过IERR | 8 |
| CPU Threads Info | data1:1-socket_id data2:n-对应socket的线程信息 | 9 |
| Address Space Info | data1:1-地址类型: 1:TF地址段 data2:8-起始地址,低字节在前 data10:8-地址范围,低字节在前 | 10 |
| CPU Threads Info (whitley-icelake) | data1:1-socket_id data2:1-core count data3:1-Hyper Thread //是否使能 data4:n-ThreadsID[cores] //cores范围 0~core count-1;上报值参考MSR:0x53,只上报Thread0 Id信息。 | 11 |
| Reg Report Version | data1:1-sub_cmd 0x21 data2:1-支持上报ARM寄存器的版本号(2021.8.12,VERSION_1: 支持DDRC_V2) | 13 |
| Integrated PCIe Addr Info (write only) | 上报Socket内集成的PCIe化控制器(Integrated PCIe Controller)的BDF信息: data1:1-Socket:CPU的逻辑Id, 从0开始取值 data2:1-Report Controller Count:上报PCIe化控制器信息个数,按命令实际上报个数填写 data3:1-Integrated Controller Type:PCIe化控制器类型;0:PCIeCore,1:PCIe化Nic控制器,2:PCIe化NIC控制器,3:PCIe化SAS控制器,4:PCIe化SATA控制器,5:PCIe化ZIP控制器,6:PCIe化SEC控制器; data4:1-Integrated Controller Index:表示data3类型的索引,取值[0,1,2...n] data5:1-Bus data6:1-Device data7:1-Function data8:12-格式与data3:7一致,表示为第2个控制器信息 datan:n+4-格式与data3:7一致,表示为第n个控制器信息 | 14 |
| Device Health Status (read only) | NPU设备健康状态查询 data1:1-查询dev_type的数量; data2:n-待查dev_type列表,NPU (0),XPU_CARRIER_BOARD (1) 响应: data1:1-查询到的设备数量 data2:1-设备dev_type data3:1-设备id data4:1-健康状态;0:Good,1:Degrade,2:Fail,255:Unknow data5:1-预留字段 data6:4-格式与data2:5一致,表示为第2个查询设备的健康状态 datan:n+4-格式与data2:5一致,表示为第n个查询设备的健康状态 | 16 |
| Memory Controller Configuration (write only) | 内存配置信息上报 data1:1-Platform Id:用来区分不同平台对应不同的CPU Id data2:1-Memory Controller Type:用来指示CPU内存控制器类型;0:DDRC,1:HBMC data3:1-状态码;1:开始,2:上报中,3:结束,4:热插拔更新内存地址结束; data4:1-类型:1:内存控制器交织配置信息 data5:n-数据,详见表9-4。 | 17 |
| MultiSystem Memory Space Info (write only) | 支持多系统的内存配置参数上报 data1:1-Global System Id:全局系统编号 data2:1-Local System Id:局部系统编号 data3:1-Soc Id:用于区分不同的芯片平台代次 data4:1-Memory Controller Type:内存控制器类型;0:DDRC,1:HBMC data5:1-State:状态码;1:开始上报,2:上报过程中,3:结束上报 data6:1-Data Type:数据类型;详见 表4 data7:n-Data:数据;详见 表4 | 18 |
| MultiSystem Address Config Info (write only) | 支持多系统的系统地址空间配置上报 data1:1-Global System Id:全局系统编号 data2:1-Local System Id:局部系统编号 data3:1-Address Type:地址类型;详见 表5 data4:n-Data:数据;详见 表5 | 19 |
| MultiSystem PCIe Addr Info (write only) | 支持多系统的PCIe配置资源上报 data1:1-Global System Id:全局系统编号 data2:1-Local System Id:局部系统编号 data3:n-Data:数据;详见 表2 | 20 |
| Bios Report Memory RAS Resource | 上报内存容错资源信息 data1:1 – Source Type:表示不同资源的类型;0-ACLS资源数量,1-sPPR资源粒度 data2:1 – Global System Id:全局系统编号 data3:1 – Local System Id:局部系统编号 data4:n – 数据,详情见 表6 | 21 |
附表2 PCIE Address Parameter
| 状态 | 数据 | 状态码 |
|---|---|---|
| 开始 | 无 | 1 |
| 传输 | data1:1 – Segment //9032等8路产品以上时需要区分不同的4P,1 based, 0表示不涉及 data2:1 – Socket Id //CPU的逻辑Id,从0开始编号 data3:1-Bus //与PCIE Slot一一对应的 root port BDF data4:1-Device data5:1-Function data6:1-Component Type //在上报PCIE SWITCH下的PCIE Slot地址信息时需要上报该PCIE Slot支持的部件类型,对未挂在PCIE SWITCH下的PCIE Slot上报时填0xff , 目前只有部分OSCA单板的MEZZ卡和PCIE标卡接到PCIE SWITCH上。 data7:1-Group Id //产品存在Slot Id重复时,使用Group Id区分,从1开始,目前只有X6800的单板上PCIE有多个Group,其他产品填1,在上报PCIE SWITCH下的PCIE Slot地址信息时需要上报该PCIE Slot所属group id,对未挂在PCIE SWITCH下的PCIE Slot上报时填0xff。 data8:1-Slot Id //在上报PCIE SWITCH下的PCIE Slot地址信息时需要上报该PCIE Slot的slot id,对未挂在PCIE SWITCH下的PCIE Slot上报时填0xff。 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序号,一个部件可能有一个或多个BDF,都按序号上报,0 based data16:1 – Reserved //预留字节,BIOS上报时填0。 data17:4 – PciCfg Low Base Addr Start //PCI的内存地址空间低地址开始,小字节序,下同。 data21:4 – PciCfg Low Base Addr Start //PCI的内存地址空间低地址结束,小字节序,下同。 data25:8 – PciCfg High Base Addr Start //PCI的内存地址空间高地址开始,小字节序,下同。 data33:8 – PciCfg High Base Addr End //PCI的内存地址空间高地址结束,小字节序,下同。 data41:3-reserved //预留字节,BIOS上报时填0。 data44:1 – MMIO Addr Range Count data45:8-MMIO Addr Range0 Base //LS-byte first,小字节序,下同。 data53:8-MMIO Addr Range0 Len ...... | 2 |
| 启动阶段上报PCIE地址信息结束 | 无 | 3 |
| 运行过程中PCIE地址信息更新结束 | 无 | 4 |
附表3 Memory Address Parameter
| 状态 | 类型 | 数据 | 状态码 |
|---|---|---|---|
| 开始 | 无 | 无 | 1 |
| 传输 | SAD(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 COMM | data1: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:[144] mRemoteDramRuleCfgN0[14] data89:[14*4]-mRemoteDramRuleCfgN1[14] data145:48-reserved | - | |
| 0X41-SAD CHA | data1:1-socket data2:3-reserved data5:[164] mDramRuleCfgCha[16] data69:[164] mInterleaveListCfgCha[16] data133:48-reserved | - | |
| 0X42-SAD MC | data1: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 SNC | data1: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:[2424]-mDramTgtRouteTable[cluster][4][2] //cluster=2,当前配置只有一个cluster时,未使用的cluster数组填0。 data101:[2324]-mDramChRouteTable[cluster][3][2] //cluster=2,当前配置只有一个cluster时,未使用的cluster数组填0。 data101:[2324]-mDramChRouteTable[cluster][3][2] //cluster==2,当前配置只有一个cluster时,未使用的cluster数组填0; data149:48-Reserved data149:48-Reserved | - | |
| 0x44-SAD MC RuleCFG | data1:1 – socket data2:1-channel data3:2-iMC data5:[84]-mMcDramRuleCfgN0[8] data37:[84] – mMcDramRuleCfgN1[8] data69:48-Reserved | - | |
| 0x50-TAD | data1:1 – socket data2:1-reserved data3:2 – iMC data5:4-reserved data9:4 – MIRRORFAILOVER data13:4-MIRRORCHNLS data17:[20*8] – SAD2TAD[20] //通过写TAD_RD_N0_M2MEM_MAIN_REG寄存器,然后读TAD_RD_N0/N1_M2MEM_MAIN_REG获取。 data177:48-Reserved | - | |
| 0x51 – TAD CH interleave | data1:1 – socket data2:1-channel data3:2 – iMC data5:[124] – TadChnIlvOffsetN0[12] data53:[124]-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 BASE | data1:1 – socket data2:1-channel data3:2-iMC data5:4 – mcMtr data9:[24] – DimmMtrOffset[2] data17:4 – AMAP_MC_MAIN_REG data21:[44] – RirWaynessLimit[4] data37:[484] – RirIlvOffset[4][8] data165:[44]-FmRirWaynessLimit[4] data181:[42*4]-FmRirIlvOffset[4][2] data213:16-Reserved | - | |
| 0X61-ADDDC region | data1: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-Platform | data1: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 段地址空间 data45:4-MESEGLimit data49:4-TSEGBase //TSEG 段地址空间 data53:4-TSEGLimit data57:8-tolm //高4byte填0 data65:8-tohm data73:1-mTotCHA //当前CPU的CHA数目 data74:47-reserved | - | |
| HHA_INTLV (0x80) | data1:1-socket //0~3 data2:1-totem //totem编号,非序号,totemA为1,totemB为3。 data3:2-reserved data5:4-intlv_addr_cfg data9:48-msd_ctrl data41:48-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 | - | |
| 启动阶段上报内存地址信息结束 | 无 | 无 | 3 |
| 热插拔更新内存地址信息结束 | 无 | 无 | 4 |
附表4 MultiSystem Memory Space Info Parameter
| Soc Id | Memory Controller Type | State | Data Type | Data |
|---|---|---|---|---|
| 3 | 0-DDRC | 1-开始上报 | 无 | 无 |
| 2-上报过程中 | 1-DDRC_INTLV | data1:1-socket data2:[14]-COM_MSD_EN data6:[84]-COM_MSD_CTRL[8] data38:[84]-COM_MSDDMCMAP_TA[8] data70:[84]-COM_MSDDMCMAP_TB[8] data102:[84]-COM_MSDDMCMAP_TC[8] data134:[44]-COM_MSDSKTMAP[4] data150:[14]-COM_DDR_INTLV_ADDR data154:[84]-reserved | ||
| 2-上报过程中 | 2- Memory Address Matrix | data1:1-socket data2:1-die:TA为0,TB为3 data3:1-channel:局部通道,每个Totem下4通道,取值[0-3] data4:4-offset 写入的数据偏移,从0开始,要求顺序写入 data8:4-len 写入数据的长度 data9:[8*N]-AddrMatric[N] | ||
| 3-结束上报 | 无 | 无 |
附表5 MultiSystem Address Config Info Parameter
| Address Type | 对应地址类型 | 数据 |
|---|---|---|
| 1-TF space | TF地址段 | data1:8-BaseAddr:TF起始地址 data9:8-AddrLen:TF地址范围长度 |
| 2-HBM Mirror Window and Address Range | HBM镜像地址范围 | data1:1-socket data2:1-die data3:1-WorkingMode:工作模式配置;6或9:PG,15:AG data4:1-TotalMirrorWindowNum,主备镜像窗口个数 data5:1-WindowIndex, 窗口索引,从0开始编号 data6:1-MasterAddrRangeNum:主区地址范围数,从1开始(示例:2) data7:1-SparingAddrRangeNum:备区地址范围数,从1开始(示例:1) data8:8-BaseAddr:窗口0主区1起始地址 data16:8-AddrLen data24:8-BaseAddr:窗口0主区2起始地址 data32:8-AddrLen data40:8-BaseAddr:窗口0备区1起始地址 data48:8-AddrLen … data n:1-WindowIndex n,窗口n data n:1-MasterAddrRangeNum:窗口n主区地址范围数(示例1) data n:1-SparingAddrRangeNum:窗口n备区地址范围数(示例1) data n:8-BaseAddr:窗口n主区1起始地址 data n:8-AddrLen data n:8-BaseAddr:窗口n备区1起始地址 data n:8-AddrLen |
附表6 Bios Report Memory RAS Resource
| Source Type | 对应资源 | 数据 |
|---|---|---|
| 0 | ACLS | data1:1-socket data2:1-logical channel // 逻辑通道 data3:1-SubChannel0 ACLS total // SubChannel0 ACLS资源总量 data4:1-SubChannel0 ACLS current // SubChannel0 ACLS资源剩余量 data5:1-SubChannel1 ACLS total // SubChannel1 ACLS资源总量 data6:1-SubChannel1 ACLS current // SubChannel1 ACLS资源剩余量 … // 该条消息中包含多个通道的数据 data6n+1:1-socket data6n+2:1-logical channel // 逻辑通道 data6n+3:1-SubChannel0 ACLS total // SubChannel0 ACLS资源总量 data6n+4:1-SubChannel0 ACLS current // SubChannel0 ACLS资源剩余量 data6n+5:1-SubChannel1 ACLS total // SubChannel1 ACLS资源总量 data6n+6:1-SubChannel1 ACLS current // SubChannel1 ACLS资源剩余量 |
| 1 | sPPR | data1:1 – cpu data2:1 – logical channel // 逻辑通道 data3:1 – dimm0 sPPR granularity; 0:Bank, 1:BankGroup // dimm0 sPPR资源粒度 data4:1 – dimm1 sPPR granularity; 0:Bank, 1:BankGroup // dimm1 sPPR资源粒度 ...//该条消息中包含多个通道的数据 data4n+1:1 – cpu data4n+2:1 – logical channel // 逻辑通道 data4n+3:1 – dimm0 sPPR granularity; 0:Bank, 1:BankGroup // dimm0 sPPR资源粒度 data4n+4:1 – dimm1 sPPR granularity; 0:Bank, 1:BankGroup // dimm1 sPPR资源粒度 |