不经过Riser卡的NPU卡CSR应该如何配置?

可以发一份日志

日志已发送

按照这种方法已经能加载卡,bios已经上报了一张卡并且也有加Get id from PMU, vid:6629, did:54528, sub_vid:512, sub_did:272并进行了加载,但是这张卡的BDF为04:00.0,似乎和一张卡槽位配置的rootBDF重合,怀疑rootBDF没有配对,建议检查一下两张卡的rootBDF和PortID

另外,由于不参加拓扑建立,上行连接器不用配置(就算配置也不应配置serdes)

目前已经将两个BussnessConnector的UpstreamResources属性删除,同时将PcieAddrInfo对象中的Portid和rootbdf已同步为os下查询到的12和 00:0c.0,丝印文件正常生成,Connector默认在位,但web界面仍然没有出现Pcie卡在位信息,silkconfig和日志文件已发送,麻烦看一下现在是什么问题


BDF正常上报,但是加载时没有找到对应的连接器,原因是没有找到下行。

加载调用链:task_load_unload_device → load_unload_device → get_mgmt_connector → get_pcie_addr_info, 在最后一个函数处会去捞取所有的下行连接器,但是没有拿到。

建议加代码看两个问题:

  1. csr分发,看一下biz_topo.lua里的on_add_object里是否收到了下行连接器的分发
  2. 是否加入了target_pcie_connectors,在biz_topo_init里加打印查看

关于两块增加的代码

  1. csr分发,看一下biz_topo.lua里的on_add_object里是否收到了下行连接器的分发

相关日志如下:可以看到BusinessConnector_PCIeSlot1_010101这个下行连接器已经分发

1970-01-01 04:41:47.713198 pcie_device NOTICE: biz_topo.lua(144): [BizTopo][CSR] BusinessConnector: name=BusinessConnector_PCIeSlot1_010101 position=010101 Direction=Downstream RefPCIeAddrInfo=PcieAddrInfo_NPU_1_010101 Slot=1 is_pcie_target=true is_src=false
1970-01-01 04:41:47.713600 pcie_device NOTICE: biz_topo.lua(194): [BizTopo] Add object BusinessConnector_PCIeSlot1_010101 successfully
  1. 是否加入了target_pcie_connectors,在biz_topo_init里加打印查看
但加入后并无相关日志,相关分析是这样的:UnitConfiguration 依然没分发到(长度 0),导致 psr_add_complete 路径不成立,进而 pcie_container_complete 不会 emit,self.biz_topo:main() 不会被调用。

3.还有一些错误日志比如这些,其中get device silk for b=0 d=12 f=0 failed for invalid bdf这一条,应该是与实际的卡的rootbdf相对应的,实际卡为 00:0c.0

1970-01-01 05:35:18.763963 pcie_device ERROR: pcie_device_app.lua(240): get device silk for b=0 d=12 f=0 failed for invalid bdf

4.create_mdb_object错误,Add persistance PCIeLoadInfo, Type=PCIeCard, SlotID=1, DevBus=4, MultiPresence=1成功,但No matching BusinessConnector found,不知道这里又是什么问题导致的,因为下行连接器已经分发,看起来是没匹配上

1970-01-01 05:31:56.669413 pcie_device ERROR: hook.lua(79): database process commit list failed: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/libmc/lualib/mc/orm/object.lua:560: attempt to call field 'create_mdb_object' (a nil value)
1970-01-01 05:31:56.670269 pcie_device ERROR: device_loader.lua(428): [BizTopoLoader] Add persistance PCIeLoadInfo, Type=PCIeCard, SlotID=1, DevBus=4, MultiPresence=1
1970-01-01 05:32:01.613223 pcie_device ERROR: device_loader.lua(236): [BizTopoLoader] No matching BusinessConnector found, position=nil
1970-01-01 05:32:01.614337 pcie_device ERROR: device_loader.lua(236): [BizTopoLoader] No matching BusinessConnector found, position=nil
1970-01-01 05:32:01.614770 pcie_device ERROR: device_loader.lua(236): [BizTopoLoader] No matching BusinessConnector found, position=nil

5.一键收集的完整日志已发送邮箱,麻烦看一下

现在看起来就是没有触发PSR分发完成日志,建议在以下位置加打印一步一步排查:

  1. pcie_device_app.lua的object_manage.on_add_object_complete附近,观察是否调用回调
  2. biz_topo_service的on_add_object_complete函数,看下if self.biz_topo.psr_position == position then有没有进去
  3. 其他涉及on_add_object_complete的地方

打印的时候建议使用log:notice_easy,方式SDK误屏蔽打印

我在pcie_device_app.lua,biz_topo_service.lua,business_connector.lua,pcie_device_mgmt.lua这几个文件的on_add_object_complete附近都加了打印,但都没有日志打印
添加的打印日志代码如下

if self.biz_topo.psr_position == position then
        log:notice_easy("[BizTopoService] psr_add_complete")
        self.biz_topo.psr_add_complete = true
    end

log:notice_easy('[BusinessConnector] on_add_object_complete position=%s', self.position)

log:notice_easy('[DeviceService] on_add_object_complete position=%s', position)

log:notice_easy('[device_mgmt]on_add_object_complete position=%s', position)
~ # cat /var/log/app.log | grep -i on_add_object_complete
1970-01-01 00:00:35.016714 fault_diagnosis NOTICE: system_ras_object.lua(263): [system_ras_obj] on_add_object_complete system_id: 1
1970-01-02 02:51:05.189720 fault_diagnosis NOTICE: system_ras_object.lua(263): [system_ras_obj] on_add_object_complete system_id: 1

是我BCU的sr配置有问题吗?最新日志已发送

这边建议排查一下psr,可以用二分debug的方法,怀疑是有什么东西导致分发阻塞