M2适配问题

openUBMC:25.09

app.log:

丝印文件:

DiskSilk
0
ControlId 1
SocketId 0
SlotId 50
PhyId 1
RootBDF “0000:06:00.0”

lspci -tv:
-13.0-[06]----00.0 Silicon Motion, Inc. Device 2262

ls -al /sys/block:

lrwxrwxrwx. 1 root root 0 Feb 4 15:17 nvme0n1 → ../devices/pci0000:00/0000:00:13.0/0000:06:00.0/nvme/nvme0/nvme0n1

根据上面可以得出

SocketID=0

SlotID=50

Bus=6

Device=0

Function=0

当前加载:EXU→SEU→M2

EXU(14100513_920s.sr)更改如下:

SEU(14100665_00000001030302023954.sr)更改如下:

PcieAddrInfo_SAS_1根据上面的数据更改

重新编译VPD后,固件出包,更新固件,系统重启,web界面如下

完全是空白的

Ibma通讯正常

提问:如何解决界面这个问题,我当前的nvme还是官方未适配的,是不是还需要自己编写对应sr

补充SEU(14100665_00000001030302023954.sr)更改

根据实际硬件连接,将BUS改为I2C_6

盘都没显示
1.看下系统信息->组件->存储扩展组件里 硬盘背板加载成功没
2.mdbctl lsobj Drive 看下硬盘对象分发没
3.lsboj Scanner 看下硬盘的在位寄存器的读值是否为1,需要看下SMC命令字是否配置的正确,I2C是否传递的正确

您好,我想请教一个问题,我的板子上nvme是直出的,通过9545芯片,Hilink9拆分为2个PCIEx2

我现在需要配置这2个nvme,是必须加载SEU硬盘背板吗,因为我直接加载官方给的920l的BCU.sr,界面上是没有任何disk相关的

目前的csr层级必须加载硬盘背板的SEU 然后再加载nvme的csr
storage · openUBMC/storage - AtomGit | GitCode
可以查看storage仓的readme 最后一段文字 是nvme盘的加载流程,你可以参考适配

您好!我这边已经加载了硬盘背板SEU,组件下可以看到

os下dmidecode –type 9也可以看到丝印信息,与真实情况相符

但是目前web界面依然没有显示

我现在应该如何排查问题,我的2个nvme都不支持nvme -mi协议

你看看环境上硬盘的在位寄存器读值是否正确,这个Scanner_Drive0PresentAccessor是硬盘的在位寄存器

    "Drive_1": {
      "Id": 0,
      "Name": "Disk0",
      "PhysicalLocation": "HDD Plane",
      "NodeId": "HDDPlaneDisk0",
      "Presence": "<=/Scanner_Drive0PresentAccessor.Status;<=/Scanner_Drive0PresentAccessor.Value |> expr($1 == 4 ? 255 : $2)",
      "LocateLed": "<=/Scanner_Drive0LocateAccessor.Value",
      "FaultLed": "<=/Scanner_Drive0FalutAccessor.Value",
      "ActivationLed": "<=/Scanner_Drive0ActivationAccessor.Value",
      "TemperatureCelsius": 255,
      "Missing": 0,
      "Health": "<=/Component_Drive0.Health",
      "RebuildState": 0,
      "FirmwareStatus": 255,
      "PredictiveFailure": 0,
      "InAFailedArray": 0,
      "FirmwareStatusError": false,
      "SerialNumber": "",
      "IODeteriorationHealthCode": 0,
      "HddBackplaneStartSlot": "<=/HddBackplane_1.StartSlot",
      "RelativeSlot": 0
    },

Scanner_Drive1PCIeType这个寄存器表示在位的盘是否是PCIe类型

    "Connector_ComVPDConnect_1": {
      "Bom": "14140224",
      "Slot": 8,
      "Position": 1,  
      "Presence": "<=/Scanner_Drive8PresentAccessor.Value;<=/Scanner_Drive1PCIeType.Value|> expr(($1 == 1) && ($2 == 1))",
      "Id": "VPD",
      "AuxId": "0",
      "Buses": [
        "I2cMux_SMC_1"
      ],
      "SystemId": "${SystemId}",
      "ManagerId": "${ManagerId}",
      "ChassisId": "${ChassisId}",
      "SilkText": "J13",
      "IdentifyMode": 2,
      "Type": "NVMe"
    },

您好,我现在把Drive_1下的Presence写死为1,当前界面显示如下:

web界面有显示了,但是没有具体盘的信息,这个应该如何排查呢

目前ssh下查询host_agent,是有serialnumber信息的

当前web界面没有详细显示,是否是因为我的消费级nvme不支持nvme-mi协议,导致无法通过serialnumber匹配信息

是的 nvme盘与bma匹配的逻辑是依据 SN,目前nvme盘的sn通过vpd读取的,你也可以试试通过bdf匹配

好的,我这边先采购一个支持nvme-mi协议的盘试一下

可以,你需要先检查,你目前csr的配置 环境上是否加载了14140224_PROTOCOL_0.sr这个csr,里面有NVMe对象

        "Nvme_1": {
            "Slot": "${Slot}",
            "TemperatureCelsius": "<=/Scanner_Temp.Value",
            "MediaType": 1,
            "Protocol": 6,
            "PredictedMediaLifeLeftPercent": "<=/Scanner_Remtime.Value",
            "RefComponent": "#/Component_PCIeCard1",
            "Failure": "<=/Scanner_SSD_Fault.Value",
            "PredictiveFailure": "<=/Scanner_SSD_Pre_Fault.Value",
            "VPDChip": "#/Chip_Virtual_SSD",
            "SSDChip": "#/Chip_SSD"
        },

代码里会走i2c 根据VPDChip和SSDChip 读一些nvme盘的信息

nvme盘的加载流程可以看storage仓的Readme中最后的章节: 配置NVME盘

您好!我这边支持nvme-mi协议的盘到了,但是界面依然没有显示。

一键收集中

SEU1下加载了两块nvme

14140224_VPD_0.sr中Connector_ComVPD加载14140224_PROTOCOL_0.sr

但是一键收集中

Connector_ComVPD中.LoadStatus一直为0,现在我应该如何排查

LoadStatus为0表示下级板卡的加载成功 web如果没显示硬盘 你需要看下Drive的Presence关联的在位寄存器是否Value为1

这边presence已强制在位,界面只能显示这几项,

不然拉个会看下把

有没有拉会的流程啊,我还没拉过 :smiling_face_with_tear:

您好,我这边又重新梳理了一下流程,按照SEU→14140224_VPD_0.sr→14140224_PROTOCOL_0.sr流程加载,SEU参考的Huawei/TianChi/SEU/14100665_00000001030302044496.sr

配置好后,os下丝印正常打印

Handle 0x0016, DMI type 9, 24 bytes
System Slot Information
Designation: DISK2
Type: x2 PCI Express x2
Current Usage: In Use
Length: Other
ID: 2
Characteristics: None
Bus Address: 0000:06:00.0

Handle 0x0017, DMI type 9, 24 bytes
System Slot Information
Designation: DISK3
Type: x2 PCI Express x2
Current Usage: In Use
Length: Other
ID: 3
Characteristics: None
Bus Address: 0000:05:00.0

web端依然是没有详细数据,iBMA运行正常

NAME TYPE SIGNATURE RESULT/VALUE FLAGS
bmc.kepler.sms interface - - -
._40odata_2Econtext property v s "/redfish/v1/$metadata#Systems/Member… -
._40odata_2Eid property v s "/bmc/kepler/Systems/1/Sms/1/Computer… -
._40odata_2Etype property v s “#Storage.v1_0_0.OemPCIE_SSD” -
bmc.kepler.sms.redfish interface - - -
.CapableSpeedGbs property v s “null” -
.CapacityBytes property v x 240057409536 -
.Description property v s “null” -
.DeviceID property v s “0x5024” -
.DeviceLocation property v s “null” -
.DeviceName property v s “null” -
.DeviceSilkScreen property v s “null” -
.FirmwareVersion property v s “EIEK51.3” -
.Id property v s “0000:00:13.0_0000:06:00.0” -
.Manufacturer property v s “null” -
.MediaType property v s “null” -
.Model property v s “KINGSTON SEDC2000BYM8240G” -
.Name property v s “nvme1” -
.NegotiatedSpeedGbs property v s “null” -
.Protocol property v s “null” -
.SerialNumber property v s “50026B728395F71E” -
.Status property v s “healthy” -
.SubsystemDeviceID property v s “0x5024” -
.SubsystemVendorID property v s “0x2646” -
.VendorID property v s “0x2646” -
._40odata_2Econtext property v s "/redfish/v1/$metadata#Systems/Member… -
._40odata_2Eid property v s "/bmc/kepler/Systems/1/Sms/1/Computer… -
._40odata_2Etype property v s “#Storage.v1_0_0.OemPCIE_SSD” -
bmc.kepler.sms.redfish.BDFNumber interface - - -
.BDF property v s “0000:06:00.0” -
.RootBDF property v s “0000:00:13.0” -

bmc下可以看到nvme的SerialNumber 等信息,当前nvme支持nvme-mi协议

mdbctl lsobj Drive命令查询结果如下:

Drive_3_010102
Drive_4_010102

mdbctl lsprop Drive_3_010102查询结果如下:

bmc.kepler.Inventory.Hardware
AssetName=“Disk2”
AssetTag=“N/A”
AssetType=“Disk”
FirmwareVersion=“N/A”
ManufactureDate=“N/A”
Manufacturer=“N/A”
Model=“N/A”
PCBVersion=“N/A”
PartNumber=“N/A”
SerialNumber=“”
Slot=“2”
UUID=“”
bmc.kepler.Object.Properties
ClassName=“Drive”
ObjectIdentifier=[1,“1”,“1”,“010102”]
ObjectName=“Drive_3_010102”
TraceSamplingRate=0
bmc.kepler.Systems.Storage.Drive
BlockSizeBytes=65535
BootPriority=255
CapableSpeedGbs=255
CapacityMiB=4294967295
ContainerPhysicalContext=“Front”
DeviceName=“N/A”
EnclosureId=65535
FaultLed=0
FirmwareStatus=255
HotspareType=255
Id=2
LocateLed=0
Location=“HDD Plane”
LocationIndicatorState=0
Manufacturer=“N/A”
ManufacturerId=0
MediaErrorCount=4294967295
MediaType=255
Model=“N/A”
Name=“Disk2”
NegotiatedSpeedGbs=255
NodeId=“HDDPlaneDisk2”
OtherErrorCount=4294967295
PCIeLinkSpeed=0
PatrolState=0
PowerOnHours=4294967295
PowerState=255
PredictedFailCount=4294967295
PredictedMediaLifeLeftPercent=100
Presence=1
Protocol=255
RebuildProgress=255
RebuildState=0
RefControllerId=255
RefDiskArrayId=65535
RefVolumeList=
ResourceId=0
Revision=“N/A”
RotationSpeedRPM=65535
SASAddress1=“N/A”
SASAddress2=“N/A”
SerialNumber=“”
SlotNumber=255
TemperatureCelsius=0
bmc.kepler.Systems.Storage.Drive.AddrInfo
PortId=0
RootBDF=“N/A”
SlotId=0
SocketId=0
Type=“N/A”
bmc.kepler.Systems.Storage.Drive.DriveStatus
CapacityError=false
Failure=false
FirmwareStatusError=false
Health=0
InAFailedArray=0
Missing=0
PredictiveFailure=0
bmc.kepler.Systems.Storage.Drive.DriveSubHealth
EstimatedRemainingLifespan=4294967295
EstimatedRemainingLifespanInsufficient=0
IODeteriorationHealthCode=0
SLCSpareBlockPercentage=255
TLCSpareBlockPercentage=255
bmc.kepler.Systems.Storage.Drive.NVMe
LifeUsedPercentage=255
bmc.kepler.Systems.Storage.Drive.NVMe.SMART
AvailableSpare=255
CriticalWarning=255
Status=255
UsedPercentage=255
bmc.kepler.Systems.Storage.Drive.SAS.SMART
BlocksReceivedFromInitiator=4294967295
BlocksSentToInitiator=4294967295
ElementsInGrownDefectList=4294967295
ElementsInPrimaryDefectList=4294967295
LastPrefailEventSeqNum=4294967295
ManufacturedInWeekOfYear=“N/A”
StripTemperatureCelsius=4294967295
UntilNextInterSMARTTestMinutes=4294967295
Private
ActivationLed=0
CommandTimeoutTimes=0
FaultReg=0
HddBackplaneStartSlot=0
LinkFault=false
LocateReg=0
PassThrough=255
PhysicalLocation=“HDD Plane”
RelativeSlot=2
SetFaultLed=0
SetLocateLed=0
UnexpectedSenseTimes=0

其中bmc.kepler.Systems.Storage.Drive.AddrInfo中portid/bdf全是N/A,感觉是哪里配置异常,如何排查呢

看下nvme对象的SerialNumber更新没 ,下面加个日志打印出来

    if self.SerialNumber == common_def.INVALID_STRING then
        local raw_sn_str = self:vpd_nvme_mi_get_product_info(common_def.RECORD_ITEM_SERIAL_NUMBER)
        if type(raw_sn_str) == 'string' and utils_core.utf8_validate(raw_sn_str) and not nvme_utils.has_invisible_chars(raw_sn_str) then 
            self.SerialNumber = raw_sn_str
        end
    end

您这个代码是在哪个组件呢,我现在更新storage组件

app.log中没有任何关于c_nvme:serial number update的打印