openbmc / smbios-mdr

Apache License 2.0
6 stars 6 forks source link

ipmi blob commit command failed #2

Open wangzcheng opened 2 years ago

wangzcheng commented 2 years ago

Note on bugs

When I use SMbios-ipmi-blob , I encounter some problems.

After the write operation, execute commit ipmitool raw 0x2e 0x80 0xcf 0xc2 0x00 0x05 ... ... It returns an unspecified error.

View ipmid logs:

Jan 01 00:01:13 s2500 ipmid[306]: Set restrictedMode = false Jan 01 00:01:13 s2500 ipmid[306]: New interface mapping Jan 01 00:01:14 s2500 ipmid[306]: New interface mapping Jan 01 00:01:14 s2500 ipmid[306]: New interface mapping Jan 01 00:14:23 s2500 ipmid[306]: Sync data with service ailure

This error is found in the returned status when calling the DBUS method agentsynchronizedata. And the agentsynchronizedata method is implemented in the smbiosmdrv2app application and is defined in mdrv2.cpp

View smbiosmdrv2app logs:

Jan 01 00:14:23 s2500 smbiosmdrv2app[332]: MDR V2 file size is smaller than mdr header Jan 01 00:14:23 s2500 smbiosmdrv2app[332]: agent data sync failed - read data from flash failed

We find that when reading data from the file /var/lib/SMBIOS/smbios2, the length of the obtained file data is 0, resulting in this error. In fact, there are datas in the file.

cat /lib/smbios/smbios2

����TEST LTDv2.18Dec 30 2021

Then we found that when writing data to the file, it seems that the close action is not executed. So, adding smbiosFile. Close() in commit function. It seems that this error can be resolved.

In addition, there is a confused problem. The function systeminfoupdate calls a dbus method ReScan without return values. However, it is called with a return value, and it will also produce an error.

Jan 10 09:41:24 s2500 smbiosmdrv2app[333]: Failed to query system motherboard

So, is this a problem? Or has the rescan method been updated? At the same time, I also want to know where the associated path motherboardpath will be called.

I would appreciate it if someone could solve my confusion.