通过查找,发现是pcie_device仓里面的biz_topo.lua代码里面的local override_root_bdf映射不对,可能只是对我这个机型不对:
local override_root_bdf = {
[0x0] = {
[0] = { 0x01, 0, 0 },
[2] = { 0x01, 0x2, 0 },
[4] = { 0x01, 0x4, 0 },
[6] = { 0x01, 0x6, 0 },
[8] = { 0x16, 0, 0 },
[10] = { 0x16, 0x4, 0 },
[12] = { 0x40, 0, 0 },
[14] = { 0x40, 0x2, 0 },
[16] = { 0x40, 0x4, 0 },
[18] = { 0x40, 0x6, 0 },
[20] = { 0x56, 0, 0 },
[22] = { 0x56, 0x2, 0 },
[24] = { 0x56, 0x4, 0 },
[26] = { 0x56, 0x6, 0 },
[32] = { 0x5F, 0, 0 },
[34] = { 0x5F, 0x2, 0 },
[36] = { 0x5F, 0x4, 0 },
[38] = { 0x5F, 0x6, 0 }
},
[0x1] = {
[0] = { 0x80, 0, 0 },
[2] = { 0x80, 0x2, 0 },
[4] = { 0x80, 0x4, 0 },
[6] = { 0x80, 0x6, 0 },
[8] = { 0x95, 0, 0 },
[10] = { 0x95, 0x4, 0 },
[12] = { 0xAA, 0, 0 },
[14] = { 0xAA, 0x2, 0 },
[16] = { 0xAA, 0x4, 0 },
[18] = { 0xAA, 0x6, 0 },
[20] = { 0xC0, 0, 0 },
[22] = { 0xC0, 0x2, 0 },
[24] = { 0xC0, 0x4, 0 },
[26] = { 0xC0, 0x6, 0 },
[32] = { 0xD5, 0, 0 },
[34] = { 0xD5, 0x2, 0 },
[36] = { 0xD5, 0x4, 0 },
[38] = { 0xD5, 0x6, 0 }
}
}
我的卡的一个插槽:
~ ~ $ mdbctl lsprop PcieAddrInfo_1_01010109 | grep -E “SocketID|PortID”
PortID=12
SocketID=1
对应这个表格的:
[0x1] = {
[0] = { 0x80, 0, 0 },
[2] = { 0x80, 0x2, 0 },
[4] = { 0x80, 0x4, 0 },
[6] = { 0x80, 0x6, 0 },
[8] = { 0x95, 0, 0 },
[10] = { 0x95, 0x4, 0 },
[12] = { 0xAA, 0, 0 },
因此就是0xAA了,应该是0x80才对。关键是如果硬编码了,是不是其他型号的服务器又不对了?