回覆: [phosphor-ipmi-flash]: Question about in-band update of BMC firmware

Chris Chen (TPI) Chris.Chen3 at flex.com
Thu Jul 14 21:39:47 AEST 2022


Hi Brandon and Willy,

The host platform I'm using is Intel eagle stream with Aspeed 2600-A1.

I am able to read/write to the dram memory on the BMC 0x98000000. Here is my result.
=====
root at hudsonbay-obmc:~# devmem 0x98000000 32
0xFFFFFFFF
root at hudsonbay-obmc:~# devmem 0x98000000 32 0x55AA66BB
root at hudsonbay-obmc:~#
root at hudsonbay-obmc:~# devmem 0x98000000 32
0x55AA66BB
=====

In addition, I found the "bmc-image" and "bmc.sig" files are with part of 0x55AA66BB after I finished the upper commands. It looks like that LPC/eSPI MMIO is not working in my case as you mentioned. So I am thinking is it possible that you could share how to set BIOS with me?

Thank you.

Regards,
Chris Chen

________________________________
寄件者: Brandon Kim <brandonkim at google.com>
寄件日期: 2022年7月14日 上午 12:45
收件者: Willy Tu <wltu at google.com>
副本: Chris Chen (TPI) <Chris.Chen3 at flex.com>; William Kennington <wak at google.com>; openbmc at lists.ozlabs.org <openbmc at lists.ozlabs.org>; chris6906 at gmail.com <chris6906 at gmail.com>
主旨: Re: [phosphor-ipmi-flash]: Question about in-band update of BMC firmware

Hi Chris,

The region you choose on both the BMC and the BIOS IS important as the
BMC and the BIOS usually has a dedicated address for such a shared
MMIO. I am not a BIOS expert so I had to ask the BIOS team for the
address that is dedicated for LPC / eSPI (if you plan on using LPC /
eSPI) and had to refer to the BMC's datasheet for the region (I
believe it's defaulted to the Nuvoton region currently). As Willy
pointed out, my guess is that a manual write to the memory won't work
for you.

Which BMC are you using if you don't mind me asking? Nuvoton vs. Aspeed?

Thanks,
Brandon

On Wed, Jul 13, 2022 at 9:40 AM Willy Tu <wltu at google.com> wrote:
>
> Hi Chris,
>
> I think you were able to set it up correctly. Can you check if you can read/write to the flash memory on the BMC 0x98000000? I am also wondering if that address is correct  or not. Like if that address is mapped to the BMC's memory. I have hit an issue where the image transferred does not match because the BIOS didn't set that up properly. I am unsure how to set that up.
>
> Willy Tu
>
> On Wed, Jul 13, 2022 at 1:15 AM Chris Chen (TPI) <Chris.Chen3 at flex.com> wrote:
>>
>> Hi Brandon and William,
>>
>>
>>
>> As you know, I have already built the "burn_my_bmc" on my Host (Eagle Stream with Aspeed 2600). I for now tried to use it to do the in-band update of BMC firmware, the debug messages of the "burn_my_bmc" look good and I also got "bmc-image" and "bmc.sig" file in the "/run/initramfs" and "/tmp" directory respectively via LPC data transfer mechanism on the BMC. However, one thing is strange which is the content of the "bmcimage" and "bmc.sig" file are all 0xff. I think this should not be the normal case, perhaps I made a mistake. Following are my steps/changes on the Host-side and BMC-side, could you please take a look at it, is there anything wrong? Or do you have any suggestions for enabling the feature? Thanks.
>>
>>
>>
>> Host-side
>>
>> =====
>>
>> The e820 map of the Host system (just choose one area randomly, should I need to reserve a specific area for this??)
>> ####
>> archer at archer-ArcherCityM:mtd.all$ sudo dmesg | grep e820
>>
>> [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009dfff] usable
>>
>> [    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009efff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] usable
>>
>> [    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved                   <-- choose this area.
>>
>> [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000006d8effff] usable
>>
>> [    0.000000] BIOS-e820: [mem 0x000000006d8f0000-0x000000006f9effff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x000000006f9f0000-0x00000000702effff] ACPI data
>>
>> [    0.000000] BIOS-e820: [mem 0x00000000702f0000-0x0000000072c2ffff] ACPI NVS
>>
>> [    0.000000] BIOS-e820: [mem 0x0000000072c30000-0x00000000777fefff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x00000000777ff000-0x00000000777fffff] usable
>>
>> [    0.000000] BIOS-e820: [mem 0x0000000077800000-0x000000008fffffff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x00000000fe010000-0x00000000fe010fff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
>>
>> [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000047fffffff] usable
>>
>> [    0.000000] e820: update [mem 0x624a8018-0x624b0057] usable ==> usable
>>
>> [    0.000000] e820: update [mem 0x624a8018-0x624b0057] usable ==> usable
>>
>> [    0.000022] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
>>
>> [    0.000027] e820: remove [mem 0x000a0000-0x000fffff] usable
>>
>> [    0.003943] e820: update [mem 0x80000000-0xffffffff] usable ==> reserved
>>
>> [    0.017281] e820: update [mem 0x69d87000-0x69d87fff] usable ==> reserved
>>
>> [    0.017300] e820: update [mem 0x686c6000-0x686c6fff] usable ==> reserved
>>
>> [    5.045333] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
>>
>> [    5.045336] e820: reserve RAM buffer [mem 0x624a8018-0x63ffffff]
>>
>> [    5.045338] e820: reserve RAM buffer [mem 0x686c6000-0x6bffffff]
>>
>> [    5.045340] e820: reserve RAM buffer [mem 0x69d87000-0x6bffffff]
>>
>> [    5.045341] e820: reserve RAM buffer [mem 0x6d8f0000-0x6fffffff]
>>
>> [    5.045342] e820: reserve RAM buffer [mem 0x77800000-0x77ffffff]
>>
>> [   33.565052] systemd[1]: Mounting Mount unit for e820-bios, revision 9...
>>
>> [   33.702641] systemd[1]: Mounted Mount unit for e820-bios, revision 9.
>> ####
>>
>> The executed command and its result.
>> ####
>> archer at archer-ArcherCityM:mtd.all$ time sudo burn_my_bmc \
>>                                                             --command update \
>>
>>                                                             --interface ipmilpc
>>                                                             --image ./image-bmc \
>>                                                             --sig ./image-bmc.sig \
>>                                                             --type image \
>>                                                             --address 0x000a0000 \
>>                                                             --length 0x10000
>>
>> Sending over the firmware image.
>>
>> sending writeMeta
>>
>> writemeta sent
>>
>> Progress: 100.00%
>>
>> Sending over the hash file.
>>
>> sending writeMeta
>>
>> writemeta sent
>>
>> Progress: 100.00%
>>
>> Opening the verification file
>>
>> Committing to /flash/verify to trigger service
>>
>> Calling stat on /flash/verify session to check status
>>
>> success
>>
>> succeeded
>>
>> Opening the update file
>>
>> Committing to /flash/update to trigger service
>>
>> Calling stat on /flash/update session to check status
>>
>> success
>>
>> succeeded
>>
>>
>>
>> real  0m17.616s
>>
>> user  0m0.046s
>>
>> sys   0m0.147s
>>
>> ####
>>
>> =====
>>
>>
>>
>> BMC-side
>>
>> =====
>>
>> Code changes
>>
>> Add to install "phosphor-ipmi-flash" and "phosphor-ipmi-blobs" these two packages in packagegroup recipe.
>>
>> ####
>> SUMMARY:${PN}-system = "Flex Ltd System"
>>
>> RDEPENDS:${PN}-system = " \
>>
>>         phosphor-ipmi-blobs \
>>
>>         phosphor-ipmi-flash \
>>
>>         "
>>
>> ####
>>
>> Add "phosphor-impi-flash_%.bbapend" recipe with these lines(Bold).
>>
>> ####
>> SRCREV = "c277935e6fe0cdcf8aefc45b53d11bd6ca20f964"
>>
>>
>>
>> PACKAGECONFIG:append = " static-bmc"
>>
>> PACKAGECONFIG:append = " aspeed-lpc"
>>
>> PACKAGECONFIG:append = " reboot-update"
>>
>> IPMI_FLASH_BMC_ADDRESS = "0x98000000"
>>
>> ####
>>
>> Remove ",-Dupdate-type=none" in the phosphor-ipmi-flash_git.bb recipe as below, because the "Enabled Firmware Update Features" and "config-static-bmc-reboot.json" are not be included. This seems the "update-type" would always pass "none" to "phosphor-impi-flash" package without this change, but I'm not sure??
>>
>> ####
>> PACKAGECONFIG[static-bmc] = "-Dupdate-type=static-layout"
>> ####
>>
>> Add these lines(Bold). in Kernel dts file
>>
>> ####
>>
>> reserved-memory {
>>
>>        #address-cells = <1>;
>>
>>        #size-cells = <1>;
>>
>>        ranges;
>>
>>
>>
>>        video_engine_memory: video {
>>
>>             size = <0x04000000>;
>>
>>             alignment = <0x01000000>;
>>
>>             compatible = "shared-dma-pool";
>>
>>             reusable;
>>
>>        };
>>
>>
>>
>>        /* LPC FW cycle bridge region requires natural alignment */
>>
>>        flash_memory: region at 98000000 {
>>
>>             no-map;
>>
>>             reg = <0x98000000 0x04000000>; /* 64M */
>>
>>        };
>>
>> };
>>
>> &lpc_ctrl {
>>
>>       status = "okay";
>>
>>       memory-region = <&flash_memory>;
>>
>> };
>>
>> ####
>>
>> BMC console
>>
>> Manually modify "config-static-bmc-reboot.json" to skip "preparation", "verification", and "update" actions because I want to make sure image file transfer is okay first.
>> ####
>> root at hudsonbay-obmc:~# cat /usr/share/phosphor-ipmi-flash/config-static-bmc-reboot.json
>>
>> [{
>>
>>         "blob": "/flash/image",
>>
>>         "handler": {
>>
>>                 "type": "file",
>>
>>                 "path": "/run/initramfs/bmc-image"
>>
>>         },
>>
>>         "actions": {
>>
>>                 "preparation": {
>>
>>                         "type": "skip"
>>
>>                 },
>>
>>                 "verification": {
>>
>>                         "type": "skip"
>>
>>                 },
>>
>>                 "update": {
>>
>>                         "type": "skip"
>>
>>                 }
>>
>>         }
>>
>> }]
>> ####
>>
>> Create "/run/initramfs" directory manually.
>> ####
>> root at hudsonbay-obmc:~# mkdir /run/initramfs
>>
>> ####
>>
>> Result after executing burn_my_bmc command. (the content of bmc-image and bmc.sig are all 0xff)
>> ####
>>
>> root at hudsonbay-obmc:~# ls -al /run/initramfs/bmc-image
>> -rw-r--r--    1 root     root      67108864 Jan  1 01:47 /run/initramfs/bmc-image
>>
>> root at hudsonbay-obmc:~# hexdump -C /run/initramfs/bmc-image
>>
>> 00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
>>
>> *
>>
>> 04000000
>>
>> root at hudsonbay-obmc:~# ls -al /tmp/bmc.sig
>>
>> -rw-r--r--    1 root     root           128 Jan  1 01:47 /tmp/bmc.sig
>>
>> root at hudsonbay-obmc:~# hexdump -C /tmp/bmc.sig
>>
>> 00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
>>
>> *
>>
>> 00000080
>> ####
>>
>> =====
>>
>>
>>
>> Regards,
>>
>> Chris Chen
>>
>> 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!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20220714/7b9fbd9f/attachment-0001.htm>


More information about the openbmc mailing list