支持MCTP的直通NVMe获取不到SMART信息

在设备树上可以看到有nvme的mctp端点,与NVMe硬盘关联的SMART信息也没有更新到设备树上。

image

busctl --user introspect bmc.kepler.storage /bmc/kepler/Systems/1/Storage/Drives/Drive_20_010102

image

image

从创建MCTP端点信息的流程上看,追代码在日志中只看到了通过pcall进行调用mctp_lib,但没有见到从其中退出来的迹象。对应的c_drive对象涉及的周期更新SMART的任务也没有运行。看起来像是卡在lib里面了,这种会是什么原因导致的呢?

现在是mctpd接口上对应的NVMe盘的bus信息是获取成功了的吗。storage如果获取NVMe盘的ep成功会有日志打印,请确定是否有对应日志。

在app.log没有成功获取ep的日志,当前可以只能明确的是进入的mctp over smbus的create流程中。

那应该就是endponit未获取到,先确定一下带内lspci -tv查询的bus和mctpd的是否一致

你好,我在mctpd中查看到的有两个endpoint是使用到了msgtype 4,但是查看内容mediumtype是pcie,这里面没有smbus的ep。

mctpd:

从lua中看storage组件中pcie的ep创建失败时会尝试使用smbus的方式创建,然后在storage组件看到了smbus的对象。

storage:

你好,我还有一个疑问,就是我查看属性值,在PCIe场景下,taget phyaddr他的类型是q,但是只显示一个字节,如下图:

这个NVMe在OS内的bdf应该是57:00.0,那么转换成phyaddr的形式也应该是0x5700,用十进制显示也应该是22272才对,这个显示是什么逻辑呢?

请在framework.log搜下smbus看看有没有报错

搜索了日志,没有看到明显的报错,只有以下日志

image

搜索了framework日志没有看到明显错误打印

image


从日志看,器件在SMC扩展的i2c通道,需要smc硬件支持mctp over smbus主从切换,目前smc硬件还未支持该功能,导致信息获取失败。

好的,了解了。

但是目前的代码他是会在创建pcie ep失败之后自动走smbus ep创建流程,但是在之前的测试中发现,在调用下图的mctp_lib创建smbus ep时会task流程会卡在这个地方,这应该是一个异常吧。我可以直接把smbus ep的创建流程给注释了吗?

image

如果确实不可用可以注释掉。但是公共代码直接注释也不合适。
1230会上线带超时的创建smbus ep的函数

创建MCTP over pcie端点时我看到有一个地方会出现这样的打印,这个在任何场景下,都能够满足在调用创建端点时,pcie bdf信息是能够获取的吗?是有固定的时序保证是吗?

最后解决方案是什么? mctp无法获取直通nvme的smart信息?硬件smc不支持,那直通盘nvme无法获取smart信息算正常现象?