bmc需要向bios提供nvme丝印文件,bios才能获取nvme的信息。
请问nvme的丝印格式及数据来源是如何的呢?
1.丝印文件格式:json格式,可以在telent中执行 find / -name silkconfig.json,找到丝印文件,查看其中的数据内容
2.silkconfig.json是在bios仓中生成的,可以看一下bios_service.lua中的get_pcie_silk_node函数
您说的以上都知道的。我的理解是,NVME盘信息先上树,当NVME盘信息上树后bmc可获取,具体见get_pcie_silk_config,从get_pcie_silk_node分析NVME信息应属于PCIeSilk。如果确实如此,数据链路就非常清晰了。
1.在csr中配置pcieaddrinfo_nvme对象,BMC启动阶段会上树
2.pcie组件为pcieaddrinfo对象进行topo属性更新
3.OS上电,bios向BMC发送获取丝印信息的命令
4.BMC收到命令,创建/更新丝印文件,并返回给BIOS
不知道你想捋的是不是这个流程。
但nvme盘的信息,是上到bmc.kepler.storage /bmc/kepler/Systems/1/Storage/Drives/Drive_11_010102。
所以要在丝印中加入nvme的丝印信息,是否应该修改get_pcie_silk_config函数中的pcie路径为storage?
在下面链接中描述,在一键收集的日志里有记录silkconfig.json,但实际上无论V2还是V3的日志,都没有这份文件,请问是什么原因?
https://support.huawei.com/enterprise/zh/doc/EDOC1100235158/f40a8c00
不用换。
NVMe的丝印信息在PcieAddrInfo对象中,硬盘信息在drive对象中,这两者并不冲突。
你需要搞清楚传递丝印信息的目的:
丝印主要起一个设备配准的功能:socketid+portid可以精准定位到OS下的一个设备,slotid则是定位BMC侧的一个设备,丝印信息将socketid+portid和slotid组合起来,就实现了BMC侧与OS侧的设备配准。PcieAddrInfo对象重点服务该功能(另外还支持高速拓扑建立)。
经过设备配准之后,才会进入对应的组件对设备对象进行信息赋值。