Read smbios2 file failed

Brandon Kim brandonkim at google.com
Thu Aug 25 02:37:19 AEST 2022


Hi Chris, thanks for adding more debug messages.

We don't see this failure.. I'm guessing we're 100% sure that IPMI is
not an issue here (I think not, since we're able to enumerate the
blobs)? Could you check to see if the open was actually successful and
that it was written with the correct flags?

Could you also ensure you're at the very latest SRCREV of OpenBMC as well?

Thanks,
Brandon

On Wed, Aug 24, 2022 at 2:25 AM Chris Chen (TPI) <Chris.Chen3 at flex.com> wrote:
>
> Hi Brandon and Jie,
>
>
>
> I think I have added "smbios-ipmi-blob" library and also updated the SRCREV to the latest in the smbios-mdr_git.bbappend file.
>
>
>
> So, I added some debug messages in the "phosphor-ipmi-blobs" and the "u-root" repos respectively. I figured out one weird thing that is the BMC-side doesn't receive the "bmcBlobWrite" command, and then Host-side gets failed due to no response. Following are the messages I captured, could you help to have a look at it and give some clues? Thank you.
>
>
>
> === Host-side ===
>
> $ sudo ./smbios_transfer -num_retries 1
>
> 2022/08/24 16:40:53 Transferring SMBIOS tables, attempt 1/1
>
> 2022/08/24 16:40:53 BlobGetCount
>
> 2022/08/24 16:40:53 ctransferSmbiosData - total blobCount=4
>
> 2022/08/24 16:40:53 BlobEnumerate
>
> 2022/08/24 16:40:53 ctransferSmbiosData id=/flash/hash
>
> 2022/08/24 16:40:53 BlobEnumerate
>
> 2022/08/24 16:40:53 ctransferSmbiosData id=/flash/image
>
> 2022/08/24 16:40:53 BlobEnumerate
>
> 2022/08/24 16:40:53 ctransferSmbiosData id=/smbios
>
> 2022/08/24 16:40:53 BlobOpen
>
> 2022/08/24 16:40:53 BlobWrite
>
> 2022/08/24 16:41:03 ReceiveResponse - failed to read rawconn: i/o timeout
>
> 2022/08/24 16:41:03 BlobClose
>
> 2022/08/24 16:41:13 ReceiveResponse - failed to read rawconn: i/o timeout
>
> 2022/08/24 16:41:13 Error tranferring SMBIOS tables over IPMI: failed to write and commit blob /smbios: IPMI BlobWrite /smbios failed: failed to read rawconn: i/o timeout; IPMI BlobClose /smbios failed: failed to read rawconn: i/o timeout
>
> ==============
>
>
>
> === BMC-side ===
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: Registering OEM:[0X00C2CF], Cmd:[0X80] for Blob Commands
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries - Enter
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries dlopen:/usr/lib/blob-ipmid/libfirmwareblob.so
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: config loaded: /flash/image
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries dlopen:/usr/lib/blob-ipmid/libsmbiosstore.so.0
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler - createHandler
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries dlopen:/usr/lib/blob-ipmid/liblogblob.so
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries dlopen:/usr/lib/blob-ipmid/libversionblob.so
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries dlopen:/usr/lib/blob-ipmid/libfirmwarecleanupblob.so
>
> Jan 01 00:00:16 hudsonbay-obmc ipmid[190]: loadLibraries – Exit
>
>>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=0
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: Blob::getBlobCount - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler::getBlobIds - blobId=/smbios
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: Blob::getBlobCount - Exit
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Exit
>
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=1
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: BlobManager::getBlobId - ids=/flash/hash
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Exit
>
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=1
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: BlobManager::getBlobId - ids=/flash/image
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Exit
>
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=1
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: BlobManager::getBlobId - ids=/smbios
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Exit
>
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=2
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: Blob::openBlob - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: openBlob path=/smbios
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler::open - Enter
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler::open - Exit
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: Blob::openBlob - Exit
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Exit
>
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand - Enter
>
> Jan 01 00:08:35 hudsonbay-obmc ipmid[190]: handleBlobCommand - cmd num=6
>
> Jan 01 00:08:35 hudsonbay-obmc ipmid[190]: Blob::closeBlob - Enter
>
> Jan 01 00:08:35 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler::close - Enter
>
> Jan 01 00:08:35 hudsonbay-obmc ipmid[190]: SmbiosBlobHandler::close - Exit
>
> Jan 01 00:08:35 hudsonbay-obmc ipmid[190]: Blob::closeBlob - Exit
>
> Jan 01 00:08:25 hudsonbay-obmc ipmid[190]: handleBlobCommand (replyLength==0) - Exit
>
> ==============
>
>
>
> Regards,
>
> Chris Chen
>
> ________________________________
>
> 寄件者: Brandon Kim <brandonkim at google.com>
> 寄件日期: 2022年8月24日 上午 12:43
> 收件者: Chris Chen (TPI) <Chris.Chen3 at flex.com>
> 副本: Jie Yang <jjy at google.com>; openbmc <openbmc at lists.ozlabs.org>
> 主旨: Re: Read smbios2 file failed
>
>
>
> !-------------------------------------------------------------------|
>
>   This email was sent from someone outside of Flex. Do not
>   click on any links, reply or open attachments unless you
>   recognize the sender and know the content is safe. If
>   suspicious, report it to spamsample at flex.com.
> |-------------------------------------------------------------------!
>
> Hi Chris,
>
> Yes, running the go program you compile and running smbios_transfer
> binary as you did, should do what you expect. However, there is a
> PACKAGE_CONFIG you will have to append for the ipmi-blob side of
> things to work:
>
> Please try building with the following line in your meta layer's
> recipes-phosphor/smbios/smbios-mdr_%.bbappend
>
> ```
> PACKAGECONFIG:append = " smbios-ipmi-blob"
> ```
>
> Cheers,
> Brandon
>
>
> On Tue, Aug 23, 2022 at 12:40 AM Chris Chen (TPI) <Chris.Chen3 at flex.com> wrote:
> >
> > Hi Brandon and Jie,
> >
> > I would like to send the SMBIOS table from Host to BMC by using "smbios-ipmi-blobs" interface. And according to Jie's clue (can send the smbios tables to BMC either through LinuxBoot or host), and then I saw both of you were contributing to the "https://urldefense.com/v3/__https://github.com/u-root/u-root/blob/main/cmds/exp/smbios_transfer/smbios_transfer.go__;!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS55JUTxghw$  ". Therefore, I have some questions about this, could you help to answer them?
> >
> > I'm assuming that I can build "smbios_transfer" command and execute it on the Host-side (with installed Ubuntu 20.04), am i correct?
> >
> > In fact, I'm not familiar with u-root and GO language. However, after referring to some websites to install GO and download u-root, I for now have built the cmd out and run it on my Host. Unfortunately, the result looks like failed.
> > ===
> > $ sudo ./smbios_transfer
> > 2022/08/23 14:47:14 Transferring SMBIOS tables, attempt 1/2
> > 2022/08/23 14:47:34 Error tranferring SMBIOS tables over IPMI: failed to write and commit blob /smbios: IPMI BlobWrite /smbios failed: failed to read rawconn: i/o timeout; IPMI BlobClose /smbios failed: failed to read rawconn: i/o timeout
> > 2022/08/23 14:47:34 Transferring SMBIOS tables, attempt 2/2
> > 2022/08/23 14:47:54 Error tranferring SMBIOS tables over IPMI: failed to write and commit blob /smbios: IPMI BlobWrite /smbios failed: failed to read rawconn: i/o timeout; IPMI BlobClose /smbios failed: failed to read rawconn: i/o timeout
> > ===
> >
> > Do you have any suggestions on this error?
> >
> > ps. I'm sure the IPMI BT interface is workable.
> >
> > On the BMC-side, I just need to enable smbios-mdr package, correct? or anything else?
> >
> >
> > Thanks.
> >
> > Regards,
> > Chris Chen
> >
> > ________________________________
> > 寄件者: Chris Chen (TPI) <Chris.Chen3 at flex.com>
> > 寄件日期: 2022年8月19日 下午 05:50
> > 收件者: Thang Nguyen <thang at amperemail.onmicrosoft.com>; Jie Yang <jjy at google.com>
> > 副本: Garrett, Mike (HPE Server Firmware) <mike.garrett at hpe.com>; Andrei Kartashev <a.kartashev at yadro.com>; CS20 CHLi30 <chli30 at nuvoton.com>; openbmc <openbmc at lists.ozlabs.org>
> > 主旨: 回覆: Read smbios2 file failed
> >
> > Hello everyone,
> >
> > I would like to send the SMBIOS table from Host to BMC by using "smbios-ipmi-blobs" interface. But, after reviewing all your discussions, I still have no idea how to enable the feature. Could you help to share more details with me? for example,
> >
> > How to generate a raw SMBIOS table with MDRv2 header? (like using "dmidecode --dump-bin" and what else?)
> > How do start sending SMBIOS binary file at Host-side? (As I know, the FW update mechanism through IPMI blob would need to build a host-tool, named burn-my-bmc, on the Host and then run the tool to start image data transformation. Does the "smbios-ipmi-blobs" with the same method?)
> >
> >
> > p.s. The OS running on the Host is Ubuntu 20.04.
> >
> > Thanks.
> >
> > Regards,
> > Chris Chen
> >
> > ________________________________
> > 寄件者: openbmc <openbmc-bounces+chris.chen3=flex.com at lists.ozlabs.org> 代表 Thang Nguyen <thang at amperemail.onmicrosoft.com>
> > 寄件日期: 2021年9月17日 下午 09:40
> > 收件者: Jie Yang <jjy at google.com>
> > 副本: Garrett, Mike (HPE Server Firmware) <mike.garrett at hpe.com>; Andrei Kartashev <a.kartashev at yadro.com>; CS20 CHLi30 <chli30 at nuvoton.com>; openbmc <openbmc at lists.ozlabs.org>
> > 主旨: Re: Read smbios2 file failed
> >
> >
> > Thanks Jia for your information
> >
> > On 17/09/2021 05:36, Jie Yang wrote:
> >
> > Hi,
> >
> > Actually I added an ipmi blob interface to smbios-mdr https://urldefense.com/v3/__https://github.com/openbmc/smbios-mdr/tree/master/src/smbios-ipmi-blobs__;!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS54qpIAumA$  . With this interface you can send the smbios tables to BMC either through LinuxBoot or host. The LinuxBoot code https://urldefense.com/v3/__https://github.com/u-root/u-root/tree/master/cmds/exp/smbios_transfer__;!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS54GUWKtiw$  . Writing and committing to this blob will generate the MDR header.
> >
> > -Jie
> >
> > On Thu, Sep 16, 2021 at 4:19 AM Thang Nguyen <thang at amperemail.onmicrosoft.com> wrote:
> >
> > Thanks Tim, Mike and Andrei for very useful information. We can make it
> > work by adding MDRv2 header.
> >
> > I am finding some information about the IPMI blobs commands. I can see
> > some notes at
> >
> > https://urldefense.com/v3/__https://github.com/openbmc/docs/blob/master/designs/binarystore-via-blobs.md__;!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS57DJil0FA$
> >
> > https://urldefense.com/v3/__https://github.com/openbmc/phosphor-ipmi-blobs/blob/master/README.md__;!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS56DlU_SCA$
> >
> > But I have not found more description about the IPMI blob commands like
> > NetFn, Func, ... that I can send a file from Host to BMC. Do you have
> > any information about them?
> >
> >
> > Thanks,
> >
> > Thang Q. Nguyen
> >
> > On 16/09/2021 09:40, CS20 CHLi30 wrote:
> > > Hi Thang,
> > > Did you try to use smbios_entry_point or DMI from host to BMC /var/lib/smbios/smbios2 for parsing?
> > >
> > > You can refer this sysfs-firmware-dmi-tables as below:
> > >
> > > The firmware provides DMI structures as a packed list of data referenced by a SMBIOS table entry point.
> > > The SMBIOS entry point contains general information, like SMBIOS version, DMI table size, etc.
> > > The structure, content and size of SMBIOS entry point is dependent on SMBIOS version.
> > >
> > > The format of SMBIOS entry point and DMI structures can be read in SMBIOS specification.
> > > The dmi/tables provides raw SMBIOS entry point and DMI tables through sysfs as an alternative to utilities reading them from /dev/mem.
> > >
> > > The raw SMBIOS entry point and DMI table are presented as binary attributes and are accessible via:
> > > /sys/firmware/dmi/tables/smbios_entry_point
> > > /sys/firmware/dmi/tables/DMI
> > >
> > > Best regards,
> > > Tim
> > >
> > > -----Original Message-----
> > > From: openbmc [mailto:openbmc-bounces+chli30=nuvoton.com at lists.ozlabs.org] On Behalf Of Garrett, Mike (HPE Server Firmware)
> > > Sent: Wednesday, September 15, 2021 9:19 PM
> > > To: Andrei Kartashev <a.kartashev at yadro.com>; Thang Nguyen <thang at amperemail.onmicrosoft.com>; openbmc <openbmc at lists.ozlabs.org>
> > > Subject: RE: Read smbios2 file failed
> > >
> > > We recently did the same thing and got it working.  All you have to do is take the RAW smbios records blob in binary form (delivered as noted below in whatever way you choose) and prepend a specific header:  https://urldefense.com/v3/__https://apc01.safelinks.protection.outlook.com/?url=https*3A*2F*2Fgithub.com*2Fopenbmc*2Fsmbios-mdr*2Fblob*2F33c948a473bd273fea0cff82d4c99b70b7784be6*2Finclude*2Fsmbios_mdrv2.hpp*23L114&data=04*7C01*7Cchli30*40nuvoton.com*7C81a4bd29e4904bf4d84608d978510b92*7Ca3f24931d4034b4a94f17d83ac638e07*7C0*7C0*7C637673526954552742*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjo__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS56BTyjjfg$   iV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=oQwcozsSoGlgSFwztPFV3FAoPpRZGYoZ7pc0%2BxDi1MA%3D&reserved=0
> > >
> > > It is a little bit fragile as it introduces a dependency on the file download logic to write a non-standard header defined in another service that could potentially change.
> > >
> > > Mike
> > >
> > >> -----Original Message-----
> > >> From: openbmc <openbmc-
> > >> bounces+mike.garrett=hpe.com at lists.ozlabs.org> On Behalf Of Andrei
> > >> Kartashev
> > >> Sent: Wednesday, September 15, 2021 3:17 AM
> > >> To: Thang Nguyen <thang at amperemail.onmicrosoft.com>; openbmc
> > >> <openbmc at lists.ozlabs.org>
> > >> Subject: Re: Read smbios2 file failed
> > >>
> > >> I don't know what is format of "dmidecode --dump-bin", but if it just
> > >> raw dump of smbios then you only need to add mdr header.
> > >>
> > >> See answer for the same question here:
> > >> INVALID URI REMOVED
> > >> 021-July/026882.html__;!!NpxR!2w0FkPs2KyaB6XOvB8et52bWKqAMLImmL-
> > >> iUk9A_zZbJ8WLhMeXdvRAp-pcxt8Q$
> > >>
> > >> On Wed, 2021-09-15 at 12:41 +0700, Thang Nguyen wrote:
> > >>> Hi Andrei,
> > >>>
> > >>> I see output of "dmidecode --dump-bin" follows SMBIOS specification.
> > >>> As
> > >>> the data for smbios-mdr does not follow this, do you know about the
> > >>> document or any information I can reference to prepare data to send
> > >>> to BMC??
> > >>>
> > >>>
> > >>> Best Regards,
> > >>>
> > >>> Thang Q. Nguyen
> > >>>
> > >>> On 14/09/2021 15:51, Andrei Kartashev wrote:
> > >>>> No, it is not same as "dmidecode --dump-bin".
> > >>>>
> > >>>> On Tue, 2021-09-14 at 13:46 +0700, Thang Nguyen wrote:
> > >>>>> On 13/09/2021 23:56, Andrei Kartashev wrote:
> > >>>>>> You need to somehow deliver smbios data image to BMC. This
> > >>>>>> means, your BIOS should implementat some logic to transfer
> > >>>>>> this data.
> > >>>>>> For BMC side see example here:
> > >>>>>> https://urldefense.com/v3/__https://apc01.safelinks.protection.outlook.com/?url=https*3A*2__;JSU!!HSntlCg!TV2b4jzad6O_WAZAI1wboTdRw8KbITIWTzC2fn5GNRJ7DifQr1xCsFKxRrh5vW0XmDcRgtYvjcRTS57ySTDXQQ$
> > >>>>>> F%2Fgithub.com%2Fopenbmc%2Fintel-ipmi-&data=04%7C01%7Cchli
> > >>>>>> 30%40nuvoton.com%7C81a4bd29e4904bf4d84608d978510b92%7Ca3f24931
> > >>>>>> d4034b4a94f17d83ac638e07%7C0%7C0%7C637673526954552742%7CUnknow
> > >>>>>> n%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> > >>>>>> 1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=cG6ZZzOSXkuUtcQuuoymsRdP
> > >>>>>> p24mINa%2FhCy%2BYhe%2FNmk%3D&reserved=0
> > >> oem/blob/master/src/smbios
> > >>>>>> mdrv2handler.cpp
> > >>>>> Hi Andrei,
> > >>>>>
> > >>>>> What is the format of smbios data to transfer to BMC? Is it the
> > >>>>> same content of "dmidecode --dump-bin" command from Host Linux?
> > >> or
> > >>>>> anything special in formatting the content to send?
> > >>>>>
> > >>>>>> On Mon, 2021-09-13 at 17:40 +0300, Alexander Raih wrote:
> > >>>>>>> Hi guys, I am beginner in openbmc I build openbmc with
> > >>>>>>> smbios-mdr repository and I have error:
> > >>>>>>>
> > >>>>>>> Read data from flash error - Open MDRV2 table file failure
> > >>>>>>>
> > >>>>>>> There isnt file in /var/lib/smbios/smbios2
> > >>>>>>>
> > >>>>>>> How I can resolve this problem?
> > >>>>>>> Help me please!!!
> > >>
> > >> --
> > >> Best regards,
> > >> Andrei Kartashev
> > >>
> > > ________________________________
> > > ________________________________
> > >   The privileged confidential information contained in this email is intended for use only by the addressees as indicated by the original sender of this email. If you are not the addressee indicated in this email or are not responsible for delivery of the email to such a person, please kindly reply to the sender indicating this fact and delete all copies of it from your computer and network server immediately. Your cooperation is highly appreciated. It is advised that any unauthorized use of confidential information of Nuvoton is strictly prohibited; and any information in this email irrelevant to the official business of Nuvoton shall be deemed as neither given nor endorsed by Nuvoton.
> >
> > Legal Disclaimer :
> > The information contained in this message may be privileged and confidential.
> > It is intended to be read only by the individual or entity to whom it is addressed
> > or by their designee. If the reader of this message is not the intended recipient,
> > you are on notice that any distribution of this message, in any form,
> > is strictly prohibited. If you have received this message in error,
> > please immediately notify the sender and delete or destroy any copy of this message!


More information about the openbmc mailing list