NVMe盘适配遇到问题


    "I2c_6": {
      "Chips": [
        "Pca9545_i2c6_chip"
      ]
    },
    "I2c_7": {
      "Chips": [
        "Pca9545_i2c7_chip"
      ]
    },
    "Pca9545_i2c6_chip": {
      "Buses": [
        "I2cMux_Pca9545_i2c6_chan4",
        "I2cMux_Pca9545_i2c6_chan3",
        "I2cMux_Pca9545_i2c6_chan2",
        "I2cMux_Pca9545_i2c6_chan1"
      ]
    },
    "Pca9545_i2c7_chip": {
      "Buses": [
        "I2cMux_Pca9545_i2c7_chan4",
        "I2cMux_Pca9545_i2c7_chan3",
        "I2cMux_Pca9545_i2c7_chan2",
        "I2cMux_Pca9545_i2c7_chan1"
      ]
    },
    "I2cMux_Pca9545_i2c6_chan1": {
      "Connectors": [
        "Connector_ComVPDConnect_1"
      ]
    },
    "I2cMux_Pca9545_i2c6_chan2": {
      "Connectors": [
        "Connector_ComVPDConnect_2"
      ]
    },
    "I2cMux_Pca9545_i2c6_chan3": {
      "Connectors": [
        "Connector_ComVPDConnect_3"
      ]
    },
    "I2cMux_Pca9545_i2c6_chan4": {
      "Connectors": [
        "Connector_ComVPDConnect_4"
      ]
    },
    "I2cMux_Pca9545_i2c7_chan1": {
      "Connectors": [
        "Connector_ComVPDConnect_5"
      ]
    },
    "I2cMux_Pca9545_i2c7_chan2": {
      "Connectors": [
        "Connector_ComVPDConnect_6"
      ]
    },
    "I2cMux_Pca9545_i2c7_chan3": {
      "Connectors": [
        "Connector_ComVPDConnect_7"
      ]
    },
    "I2cMux_Pca9545_i2c7_chan4": {
      "Connectors": [
        "Connector_ComVPDConnect_8"
      ]
    }
  },

    "Pca9545_i2c6_chip": {
        "OffsetWidth": 0,
        "AddrWidth": 1,
        "Address": 224,
        "WriteTmout": 100,
        "ReadTmout": 100,
        "HealthStatus": 0
    },
    "Pca9545_i2c7_chip": {
        "OffsetWidth": 0,
        "AddrWidth": 1,
        "Address": 224,
        "WriteTmout": 100,
        "ReadTmout": 100,
        "HealthStatus": 0
    },
    "I2cMux_Pca9545_i2c6_chan1": {
      "ChannelId": 0
    },
    "I2cMux_Pca9545_i2c6_chan2": {
      "ChannelId": 1
    },
    "I2cMux_Pca9545_i2c6_chan3": {
      "ChannelId": 2
    },
    "I2cMux_Pca9545_i2c6_chan4": {
      "ChannelId": 3
    },
    "I2cMux_Pca9545_i2c7_chan1": {
      "ChannelId": 0
    },
    "I2cMux_Pca9545_i2c7_chan2": {
      "ChannelId": 1
    },
    "I2cMux_Pca9545_i2c7_chan3": {
      "ChannelId": 2
    },
    "I2cMux_Pca9545_i2c7_chan4": {
      "ChannelId": 3
    },
    "Connector_ComVPDConnect_1": {
      "Bom": "14140224",
      "Slot": 0,
      "Position": 1,  
      "Presence": "<=/Scanner_Drive0PresentAccessor.Value",
      "Id": "VPD",
      "AuxId": "0",
      "Buses": [
        "I2cMux_Pca9545_i2c6_chan1"
      ],
      "SystemId": "${SystemId}",
      "ManagerId": "${ManagerId}",
      "ChassisId": "${ChassisId}",
      "IdentifyMode": 2,
      "Type": "NVMe"
    },

i2c6和i2c7上都有个pca9545,下面各挂4个NVMe盘,想通过标准NVMe协议去获取信息。

定位问题时发现Storage日志里都会报读取header失败的问题,看了下就是去读0x53这个fru的地址。

手动切换通道并且去读取是ok的,重启bmc后也会有对应的硬盘信息,但是每路i2c上4个盘都是同样的信息显示,猜测就是bmc那边切通道失败了。

请问csr配置上有什么问题吗?我是通过SEU下的csr配置修改来的,这种类似pcie卡加载的形式支持吗?还是说缺少了什么别的对象需要配置

日志有什么关键词可以查看bmc去切pca9545吗?暂时好像没有看到尝试切换或者切换失败的信息。该怎么定位问题呢

需要大佬支援 :sob:

@changxingOpenUBMC 兴哥,帮忙看看配置的思路是否有问题

从目前的信息看CSR配置没啥问题,建议一键日志收集后把数据通过PAE传递回来定位

把I2cMux_Pca9545_chan 放到上一层传递下来就可以了,具体原因不知道。

原本的实现是这些配置都放在了SEU的sr里面,上层EXU传递i2c6和i2c7下来。现在改成了pca9545在EXU中定义,直接把对应的通道给传递给SEU,然后就行了

按这种方式配置后,目前又出现了一个新的问题,重启BMC后会概率获取NVME盘信息失败,错误信息也是报读取header失败,应该还是切通道失败了。

@changxingOpenUBMC 兴哥,有空还得帮忙再看看,一键日志已通过邮件发送。

//pca9545在EXU中定义,直接把对应的通道给传递给SEU
"Connector_SEU_1": {
	"Bom": "14100665",
	"Slot": 1,
	"Position": 5,
	"Presence": 1,
	"Id": "SEU",
	"AuxId": "yuqia",
	"Buses": [
		"I2c_5",
		"I2cMux_Pca9545_i2c6_chan1",
		"I2cMux_Pca9545_i2c6_chan2",
		"I2cMux_Pca9545_i2c6_chan3",
		"I2cMux_Pca9545_i2c6_chan4",
		"I2cMux_Pca9545_i2c7_chan1",
		"I2cMux_Pca9545_i2c7_chan2",
		"I2cMux_Pca9545_i2c7_chan3",
		"I2cMux_Pca9545_i2c7_chan4"
	],
	"SystemId": "${SystemId}",
	"ManagerId": "${ManagerId}",
	"ChassisId": "${ChassisId}",
	"IdentifyMode": 2
},
2025-12-04 11:55:07.155596 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:117: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Chip_Virtual_SSD_01010508, bus: I2c_7, read failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{"has_error":false,"requestor":"bmc.kepler.storage","offset":0,"type":1,"rw_type":1,"name":"Chip_Virtual_SSD_01010508","offsetWidth":1,"len":8,"addr":166,"is_trace":false,"addrWidth":1,"mask":4294967295}
2025-12-04 11:55:07.157010 storage NOTICE: vpd_connector.lua(144): vpd_connector7 get common header failed
2025-12-04 11:55:07.158093 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255
2025-12-04 11:55:07.491074 storage NOTICE: vpd_connector.lua(187): begin update_connector3
2025-12-04 11:55:07.548193 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:117: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Chip_Virtual_SSD_01010504, bus: I2c_6, read failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{"name":"Chip_Virtual_SSD_01010504","offset":0,"rw_type":1,"offsetWidth":1,"addrWidth":1,"addr":166,"has_error":false,"requestor":"bmc.kepler.storage","type":1,"mask":4294967295,"is_trace":false,"len":8}
2025-12-04 11:55:07.551875 storage NOTICE: vpd_connector.lua(144): vpd_connector3 get common header failed
2025-12-04 11:55:07.553093 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255
2025-12-04 11:55:07.699023 storage NOTICE: vpd_connector.lua(187): begin update_connector0
2025-12-04 11:55:07.759975 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:117: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Chip_Virtual_SSD_01010501, bus: I2c_6, read failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{"name":"Chip_Virtual_SSD_01010501","rw_type":1,"offsetWidth":1,"addrWidth":1,"addr":166,"requestor":"bmc.kepler.storage","type":1,"len":8,"mask":4294967295,"is_trace":false,"has_error":false,"offset":0}
2025-12-04 11:55:07.760762 storage NOTICE: vpd_connector.lua(144): vpd_connector0 get common header failed
2025-12-04 11:55:07.761353 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255

邮件没收到,你发的那个邮箱?

发的这个邮箱 changdexing@huawei.com

2025-12-04 11:55:07.548193 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:117: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: …bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Chip_Virtual_SSD_01010504, bus: I2c_6, read failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{“name”:“Chip_Virtual_SSD_01010504”,“offset”:0,“rw_type”:1,“offsetWidth”:1,“addrWidth”:1,“addr”:166,“has_error”:false,“requestor”:“bmc.kepler.storage”,“type”:1,“mask”:4294967295,“is_trace”:false,“len”:8}
这个报错不是切通道失败啊,这个单纯是读器件失败

image
切通道查看上面的日志

2025-12-04T19:12:34.368579+08:00 iBMC kernel: [I2C-06-RT<-5|-5>] M<0x53|0x1|0x0|1|10> L<1|8|0> C<1|0|8> E<0x801|0x0|0x0|0x1> I<0x0|0x710|0x0>
从linux_kernel日志看,硬件错误码是0x801,表示软件还有剩余的的数据没有读到。
可能的原因有:从器件地址错误;从器件不响应;链路异常;
可以看下是不是链路异常

141402224_VPD_0.sr

{
  "FormatVersion": "1.11",
  "DataVersion": "1.11",
  "ManagementTopology": {
    "Anchor": {
      "Buses": [
        "I2cMux_SMC"
      ]
    },
    "I2cMux_SMC": {
      "Chips": [
        "Chip_Virtual_SSD"
      ]
    }
  },
  "Objects": {
    。。。
    "VirtualVPDConnect": {
      "Slot": "${Slot}",
      "RefVPDChip": "#/Chip_Virtual_SSD",
      "RefConnector": "#/Connector_ComVPD"
    },
    "Chip_Virtual_SSD": {
      "Address": 166,
      "AddrWidth": 1,
      "OffsetWidth": 1,
      "WriteTmout": 100,
      "ReadTmout": 100,
      "HealthStatus": 0
    },
    "Connector_ComVPD": {
      "Bom": "14140224",
      "Slot": "${Slot}",
      "Position": 1,
      "Presence": 0,
      "Id": "PROTOCOL",
      "AuxId": "255",
      "Buses": [
        "I2cMux_SMC"
      ],
      "SystemId": "${SystemId}",
      "ManagerId": "${ManagerId}",
      "ChassisId": "${ChassisId}",
      "SilkText": "",
      "IdentifyMode": 2,
      "Type": "NVMe"
    },
   。。。
  }
}


概率异常状态时,感觉像是框架没有初始化topo,RefVPDChip:Read时并没有切换到对应的通道,导致找不到器件所以读取失败了

感觉切通道也只是表面现象,可能还是相关对象没初始化导致

RROR: factory.lua(63): c_factory:create_object failed: unknown class VirtualVPDConnect

日志中还报了这么一行错误,如果VirtualVPDConnect对象都创建失败的话,后续的操作肯也是失败的。

2025-12-11 14:10:24.772754 storage NOTICE: object_manage.lua(176): start to add objects, path: /bmc/kepler/ObjectGroup/01010502, life cycle id: 1, count: 1
2025-12-11 14:10:24.817965 storage NOTICE: vpd_connector_collection.lua(24): vpd connector 1 add
2025-12-11 14:10:24.825068 storage ERROR: factory.lua(63): c_factory:create_object failed: unknown class VirtualVPDConnect
2025-12-11 14:10:24.826504 storage NOTICE: object_manage.lua(224): add objects callback, path: /bmc/kepler/ObjectGroup/01010502, life cycle id: 1, count: 1, took 50ms
2025-12-11 14:10:24.827846 storage NOTICE: object_manage.lua(233): add objects completely, path: /bmc/kepler/ObjectGroup/01010502, life cycle id: 1, took 0ms
2025-12-11 14:10:24.831084 storage NOTICE: tasks.lua(72): task [update_vpd_connector1] start
2025-12-11 14:10:24.847843 storage NOTICE: vpd_connector.lua(187): begin update_connector1



2025-12-11 14:10:24.974148 storage NOTICE: object_manage.lua(176): start to add objects, path: /bmc/kepler/ObjectGroup/01010505, life cycle id: 1, count: 1
2025-12-11 14:10:25.053859 storage NOTICE: vpd_connector_collection.lua(24): vpd connector 4 add
2025-12-11 14:10:25.069745 storage ERROR: factory.lua(63): c_factory:create_object failed: unknown class VirtualVPDConnect
2025-12-11 14:10:25.072296 storage NOTICE: object_manage.lua(224): add objects callback, path: /bmc/kepler/ObjectGroup/01010505, life cycle id: 1, count: 1, took 100ms
2025-12-11 14:10:25.074388 storage NOTICE: object_manage.lua(233): add objects completely, path: /bmc/kepler/ObjectGroup/01010505, life cycle id: 1, took 0ms
2025-12-11 14:10:25.076740 storage NOTICE: tasks.lua(72): task [update_vpd_connector4] start
2025-12-11 14:10:25.089388 storage NOTICE: vpd_connector.lua(187): begin update_connector4
2025-12-11 14:10:25.107141 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_pt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:78: chip: Chip_Virtual_SSD_01010502, bus: I2c_6, read failed: iror, i2c read fail, ret: 5, input:{"len":8,"mask":4294967295,"name":"Chip_Virtual_SSD_01010502","has_error":false,"requestor":"bmc.kepler.storage","offsetWidth":1,"addrWidth":1,"addr"":false,"rw_type":1,"offset":0}
2025-12-11 14:10:25.126605 storage NOTICE: vpd_connector.lua(144): vpd_connector1 get common header failed
2025-12-11 14:10:25.130184 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255


2025-12-11 14:10:25.174697 storage NOTICE: object_manage.lua(176): start to add objects, path: /bmc/kepler/ObjectGroup/01010503, life cycle id: 1, count: 1
2025-12-11 14:10:25.264811 storage NOTICE: vpd_connector_collection.lua(24): vpd connector 2 add
2025-12-11 14:10:25.271791 storage ERROR: factory.lua(63): c_factory:create_object failed: unknown class VirtualVPDConnect
2025-12-11 14:10:25.272314 storage NOTICE: object_manage.lua(224): add objects callback, path: /bmc/kepler/ObjectGroup/01010503, life cycle id: 1, count: 1, took 100ms
2025-12-11 14:10:25.288761 storage NOTICE: object_manage.lua(233): add objects completely, path: /bmc/kepler/ObjectGroup/01010503, life cycle id: 1, took 10ms
2025-12-11 14:10:25.293769 storage NOTICE: tasks.lua(72): task [update_vpd_connector2] start
2025-12-11 14:10:25.330831 storage NOTICE: vpd_connector.lua(187): begin update_connector2
2025-12-11 14:10:25.348741 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_pt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:78: chip: Chip_Virtual_SSD_01010505, bus: I2c_7, read failed: iror, i2c read fail, ret: 5, input:{"mask":4294967295,"has_error":false,"len":8,"name":"Chip_Virtual_SSD_01010505","type":1,"offset":0,"rw_type":1,"offsetWidth":1,"addrWidth":1,"addr":pler.storage","is_trace":false}
2025-12-11 14:10:25.365205 storage NOTICE: vpd_connector.lua(144): vpd_connector4 get common header failed
2025-12-11 14:10:25.365501 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255
2025-12-11 14:10:25.474802 storage NOTICE: mctp_service.lua(95): [Storage] mctp prepare finished. bmc_eid = 9 bmc_phy = 1792 state = true
2025-12-11 14:10:25.514311 storage ERROR: vpd_connector.lua(56): get header data failed, ret is BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_pt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:78: chip: Chip_Virtual_SSD_01010503, bus: I2c_6, read failed: iror, i2c read fail, ret: 5, input:{"len":8,"requestor":"bmc.kepler.storage","mask":4294967295,"name":"Chip_Virtual_SSD_01010503","has_error":false,"offsetWidth":1,"addrWidth":1,"addr"":false,"rw_type":1,"offset":0}
2025-12-11 14:10:25.519951 storage NOTICE: vpd_connector.lua(144): vpd_connector2 get common header failed
2025-12-11 14:10:25.520205 storage NOTICE: vpd_connector.lua(168): connector get protocol is 255

“factory.lua(63): c_factory:create_object failed: unknown class VirtualVPDConnect” 这行日志表示类未注册,得组件看下什么时候注册这个类和对应的回调