我们硬件参照00000001040302046574这张Riser卡设计新Riser卡,基本配置信息也差不多。BMC在适配时就根据这种这种Riser的CSR修改的,同时配置了PSR中的线缆检测。
"UnitConfiguration_IEU2": {
"SlotType": "IEU",
"SlotNumber": 2,
"SlotSilkText": "IEUSlot2",
"ContainerSlot": 2,
"Configurations": [
{
"UID": "XXXXXX",
"Index": 2,
"SrcPortName": ["D4b"],
"TargetPortID": [17],
"Slot": [21],
"Device": []
}
],
"Port1LinkInfo": ""
}
现在有问题,设备上电后RAID卡也能正常识别,在Web页面也能“系统信息”->“其他”->"PCIe卡"中也能显示RAID卡相关消息,但是RAID的位置信息显示为空,如果调整PSR中线缆检测,位置信息会显示为另外一张Riser卡上。这个问题需要如何定位?
这种情况需要结合连接器信息定位一下,Riser卡中的${Slot}信息是从上级连接器下来的(注意不是SlotID,可以看一下实机环境上的ContainerSlot,确定按照低速线匹配的Riser线缆信息正确。
拓扑建立会按照PcieAddrInfo中获取到的ContainerUnitType和ContainerSlot匹配上对应的UnitConfiguration,再结合线缆信息找出最接近的配置。
这个是PcieAddrInfo配置,在实际设备上查看了一下ContainerSlot值是配置中写的值和配置的一样,都是2。
"PcieAddrInfo_1": {
"Location": "RiserCard${Slot}",
"ComponentType": 8,
"ContainerSlot": "${Slot}",
"ContainerUID": "XXXXXX",
"ContainerUnitType": "IEU",
"GroupPosition": "PcieAddrInfo_1_${GroupPosition}"
},
这个是在设备上查看的PcieAddrInfo信息
lsprop PcieAddrInfo_1_01010111
bmc.kepler.Object.Properties
ClassName="PcieAddrInfo"
ObjectIdentifier=[1,"1","1","01010111"]
ObjectName="PcieAddrInfo_1_01010111"
TraceSamplingRate=0
bmc.kepler.Systems.PcieAddrInfo
Bus=213
ComponentType=8
ControllerIndex=5
ControllerType=0
Device=4
DeviceID=0
Function=0
GroupID=0
Lanes=8
PCIeType="Gen3"
PortID=36
ReadyToEnumerate=true
Segment=0
SlotID=21
SlotType=""
SocketID=1
VendorID=0
Private
ContainerSlot=2
ContainerUID="XXXXXX"
ContainerUnitType="IEU"
DevBus=0
DevDevice=0
DevFunction=0
GroupPosition="PcieAddrInfo_1_01010111"
Location="RiserCard2"
MultihostPresence=0
这个是UnitConfigration是设备中信息
% lsprop UnitConfiguration_IEU2_01010A
bmc.kepler.Object.Properties
ClassName="UnitConfiguration"
ObjectIdentifier=[1,"1","1","01010A"]
ObjectName="UnitConfiguration_IEU2_01010A"
TraceSamplingRate=0
bmc.kepler.Systems.UnitConfigError
AbsenceAllowed=0
Port1LinkInfo="XXXXXX(IEUSlot2)"
Port1Status=1
Port2LinkInfo=""
Port2Status=255
Private
Configurations=[{"SrcPortName":["D4b"],"UID":"XXXXXX","Slot":[21],"Index":2,"Device":[],"TargetPortID":[33]}]
ContainerSlot=2
ContainerUID=""
SlotNumber=2
SlotSilkText="IEUSlot2"
SlotType="IEU"
这边看到您有一张UID以58结尾的RiserCard,里面的连接器引用了Component_RiserCard,但是没有配置Component_RiserCard对象,这样会导致下级的PcieDevice对象拿不到Container对象,从而使得根据这个对象匹配不到Position。
代码在pcie_device组件中,可以搜索 local container_obj_name = self:get_prop(‘Container’) 这个语句。
感谢,对比了一下正常的Riser卡配置,确实缺少了Component_RiserCard对象。向请问一下如今这种问题具体如何定位,在app.log上没找到对应的配置错误信息。