<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;">Hi Brandon and Willy,</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;"></span></div>
<span style="font-family: Calibri, Helvetica, sans-serif;">The host platform I'm using is Intel eagle stream with Aspeed 2600-A1.</span>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;">I am able to read/write to the dram memory on the BMC 0x98000000. Here is my result.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">=====</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">root@hudsonbay-obmc:~# devmem 0x98000000 32</span><span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<div><span style="font-size: 12pt;">0xFFFFFFFF</span></div>
<div><span style="font-size: 12pt;">root@hudsonbay-obmc:~# devmem 0x98000000 32 0x55AA66BB</span></div>
<div><span style="font-size: 12pt;">root@hudsonbay-obmc:~#</span></div>
<div><span style="font-size: 12pt;">root@hudsonbay-obmc:~# devmem 0x98000000 32</span></div>
</span><span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">0x55AA66BB</span><span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">===== </span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
</div>
<div class="elementToProof"><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">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 </span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">I am thinking is it possible that you could share how to set BIOS with me?</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;">Thank you.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;">Regards,</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-size: 12pt;">Chris Chen</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>寄件者:</b> Brandon Kim <brandonkim@google.com><br>
<b>寄件日期:</b> 2022年7月14日 上午 12:45<br>
<b>收件者:</b> Willy Tu <wltu@google.com><br>
<b>副本:</b> Chris Chen (TPI) <Chris.Chen3@flex.com>; William Kennington <wak@google.com>; openbmc@lists.ozlabs.org <openbmc@lists.ozlabs.org>; chris6906@gmail.com <chris6906@gmail.com><br>
<b>主旨:</b> Re: [phosphor-ipmi-flash]: Question about in-band update of BMC firmware</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Hi Chris,<br>
<br>
The region you choose on both the BMC and the BIOS IS important as the<br>
BMC and the BIOS usually has a dedicated address for such a shared<br>
MMIO. I am not a BIOS expert so I had to ask the BIOS team for the<br>
address that is dedicated for LPC / eSPI (if you plan on using LPC /<br>
eSPI) and had to refer to the BMC's datasheet for the region (I<br>
believe it's defaulted to the Nuvoton region currently). As Willy<br>
pointed out, my guess is that a manual write to the memory won't work<br>
for you.<br>
<br>
Which BMC are you using if you don't mind me asking? Nuvoton vs. Aspeed?<br>
<br>
Thanks,<br>
Brandon<br>
<br>
On Wed, Jul 13, 2022 at 9:40 AM Willy Tu <wltu@google.com> wrote:<br>
><br>
> Hi Chris,<br>
><br>
> 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.<br>
><br>
> Willy Tu<br>
><br>
> On Wed, Jul 13, 2022 at 1:15 AM Chris Chen (TPI) <Chris.Chen3@flex.com> wrote:<br>
>><br>
>> Hi Brandon and William,<br>
>><br>
>><br>
>><br>
>> 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.<br>
>><br>
>><br>
>><br>
>> Host-side<br>
>><br>
>> =====<br>
>><br>
>> The e820 map of the Host system (just choose one area randomly, should I need to reserve a specific area for this??)<br>
>> ####<br>
>> archer@archer-ArcherCityM:mtd.all$ sudo dmesg | grep e820<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009dfff] usable<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009efff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] usable<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved                   <-- choose this area.<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000006d8effff] usable<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x000000006d8f0000-0x000000006f9effff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x000000006f9f0000-0x00000000702effff] ACPI data<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x00000000702f0000-0x0000000072c2ffff] ACPI NVS<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x0000000072c30000-0x00000000777fefff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x00000000777ff000-0x00000000777fffff] usable<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x0000000077800000-0x000000008fffffff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x00000000fe010000-0x00000000fe010fff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved<br>
>><br>
>> [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000047fffffff] usable<br>
>><br>
>> [    0.000000] e820: update [mem 0x624a8018-0x624b0057] usable ==> usable<br>
>><br>
>> [    0.000000] e820: update [mem 0x624a8018-0x624b0057] usable ==> usable<br>
>><br>
>> [    0.000022] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved<br>
>><br>
>> [    0.000027] e820: remove [mem 0x000a0000-0x000fffff] usable<br>
>><br>
>> [    0.003943] e820: update [mem 0x80000000-0xffffffff] usable ==> reserved<br>
>><br>
>> [    0.017281] e820: update [mem 0x69d87000-0x69d87fff] usable ==> reserved<br>
>><br>
>> [    0.017300] e820: update [mem 0x686c6000-0x686c6fff] usable ==> reserved<br>
>><br>
>> [    5.045333] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]<br>
>><br>
>> [    5.045336] e820: reserve RAM buffer [mem 0x624a8018-0x63ffffff]<br>
>><br>
>> [    5.045338] e820: reserve RAM buffer [mem 0x686c6000-0x6bffffff]<br>
>><br>
>> [    5.045340] e820: reserve RAM buffer [mem 0x69d87000-0x6bffffff]<br>
>><br>
>> [    5.045341] e820: reserve RAM buffer [mem 0x6d8f0000-0x6fffffff]<br>
>><br>
>> [    5.045342] e820: reserve RAM buffer [mem 0x77800000-0x77ffffff]<br>
>><br>
>> [   33.565052] systemd[1]: Mounting Mount unit for e820-bios, revision 9...<br>
>><br>
>> [   33.702641] systemd[1]: Mounted Mount unit for e820-bios, revision 9.<br>
>> ####<br>
>><br>
>> The executed command and its result.<br>
>> ####<br>
>> archer@archer-ArcherCityM:mtd.all$ time sudo burn_my_bmc \<br>
>>                                                             --command update \<br>
>><br>
>>                                                             --interface ipmilpc<br>
>>                                                             --image ./image-bmc \<br>
>>                                                             --sig ./image-bmc.sig \<br>
>>                                                             --type image \<br>
>>                                                             --address 0x000a0000 \<br>
>>                                                             --length 0x10000<br>
>><br>
>> Sending over the firmware image.<br>
>><br>
>> sending writeMeta<br>
>><br>
>> writemeta sent<br>
>><br>
>> Progress: 100.00%<br>
>><br>
>> Sending over the hash file.<br>
>><br>
>> sending writeMeta<br>
>><br>
>> writemeta sent<br>
>><br>
>> Progress: 100.00%<br>
>><br>
>> Opening the verification file<br>
>><br>
>> Committing to /flash/verify to trigger service<br>
>><br>
>> Calling stat on /flash/verify session to check status<br>
>><br>
>> success<br>
>><br>
>> succeeded<br>
>><br>
>> Opening the update file<br>
>><br>
>> Committing to /flash/update to trigger service<br>
>><br>
>> Calling stat on /flash/update session to check status<br>
>><br>
>> success<br>
>><br>
>> succeeded<br>
>><br>
>><br>
>><br>
>> real  0m17.616s<br>
>><br>
>> user  0m0.046s<br>
>><br>
>> sys   0m0.147s<br>
>><br>
>> ####<br>
>><br>
>> =====<br>
>><br>
>><br>
>><br>
>> BMC-side<br>
>><br>
>> =====<br>
>><br>
>> Code changes<br>
>><br>
>> Add to install "phosphor-ipmi-flash" and "phosphor-ipmi-blobs" these two packages in packagegroup recipe.<br>
>><br>
>> ####<br>
>> SUMMARY:${PN}-system = "Flex Ltd System"<br>
>><br>
>> RDEPENDS:${PN}-system = " \<br>
>><br>
>>         phosphor-ipmi-blobs \<br>
>><br>
>>         phosphor-ipmi-flash \<br>
>><br>
>>         "<br>
>><br>
>> ####<br>
>><br>
>> Add "phosphor-impi-flash_%.bbapend" recipe with these lines(Bold).<br>
>><br>
>> ####<br>
>> SRCREV = "c277935e6fe0cdcf8aefc45b53d11bd6ca20f964"<br>
>><br>
>><br>
>><br>
>> PACKAGECONFIG:append = " static-bmc"<br>
>><br>
>> PACKAGECONFIG:append = " aspeed-lpc"<br>
>><br>
>> PACKAGECONFIG:append = " reboot-update"<br>
>><br>
>> IPMI_FLASH_BMC_ADDRESS = "0x98000000"<br>
>><br>
>> ####<br>
>><br>
>> 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??<br>
>><br>
>> ####<br>
>> PACKAGECONFIG[static-bmc] = "-Dupdate-type=static-layout"<br>
>> ####<br>
>><br>
>> Add these lines(Bold). in Kernel dts file<br>
>><br>
>> ####<br>
>><br>
>> reserved-memory {<br>
>><br>
>>        #address-cells = <1>;<br>
>><br>
>>        #size-cells = <1>;<br>
>><br>
>>        ranges;<br>
>><br>
>><br>
>><br>
>>        video_engine_memory: video {<br>
>><br>
>>             size = <0x04000000>;<br>
>><br>
>>             alignment = <0x01000000>;<br>
>><br>
>>             compatible = "shared-dma-pool";<br>
>><br>
>>             reusable;<br>
>><br>
>>        };<br>
>><br>
>><br>
>><br>
>>        /* LPC FW cycle bridge region requires natural alignment */<br>
>><br>
>>        flash_memory: region@98000000 {<br>
>><br>
>>             no-map;<br>
>><br>
>>             reg = <0x98000000 0x04000000>; /* 64M */<br>
>><br>
>>        };<br>
>><br>
>> };<br>
>><br>
>> &lpc_ctrl {<br>
>><br>
>>       status = "okay";<br>
>><br>
>>       memory-region = <&flash_memory>;<br>
>><br>
>> };<br>
>><br>
>> ####<br>
>><br>
>> BMC console<br>
>><br>
>> 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.<br>
>> ####<br>
>> root@hudsonbay-obmc:~# cat /usr/share/phosphor-ipmi-flash/config-static-bmc-reboot.json<br>
>><br>
>> [{<br>
>><br>
>>         "blob": "/flash/image",<br>
>><br>
>>         "handler": {<br>
>><br>
>>                 "type": "file",<br>
>><br>
>>                 "path": "/run/initramfs/bmc-image"<br>
>><br>
>>         },<br>
>><br>
>>         "actions": {<br>
>><br>
>>                 "preparation": {<br>
>><br>
>>                         "type": "skip"<br>
>><br>
>>                 },<br>
>><br>
>>                 "verification": {<br>
>><br>
>>                         "type": "skip"<br>
>><br>
>>                 },<br>
>><br>
>>                 "update": {<br>
>><br>
>>                         "type": "skip"<br>
>><br>
>>                 }<br>
>><br>
>>         }<br>
>><br>
>> }]<br>
>> ####<br>
>><br>
>> Create "/run/initramfs" directory manually.<br>
>> ####<br>
>> root@hudsonbay-obmc:~# mkdir /run/initramfs<br>
>><br>
>> ####<br>
>><br>
>> Result after executing burn_my_bmc command. (the content of bmc-image and bmc.sig are all 0xff)<br>
>> ####<br>
>><br>
>> root@hudsonbay-obmc:~# ls -al /run/initramfs/bmc-image<br>
>> -rw-r--r--    1 root     root      67108864 Jan  1 01:47 /run/initramfs/bmc-image<br>
>><br>
>> root@hudsonbay-obmc:~# hexdump -C /run/initramfs/bmc-image<br>
>><br>
>> 00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|<br>
>><br>
>> *<br>
>><br>
>> 04000000<br>
>><br>
>> root@hudsonbay-obmc:~# ls -al /tmp/bmc.sig<br>
>><br>
>> -rw-r--r--    1 root     root           128 Jan  1 01:47 /tmp/bmc.sig<br>
>><br>
>> root@hudsonbay-obmc:~# hexdump -C /tmp/bmc.sig<br>
>><br>
>> 00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|<br>
>><br>
>> *<br>
>><br>
>> 00000080<br>
>> ####<br>
>><br>
>> =====<br>
>><br>
>><br>
>><br>
>> Regards,<br>
>><br>
>> Chris Chen<br>
>><br>
>> Legal Disclaimer :<br>
>> The information contained in this message may be privileged and confidential.<br>
>> It is intended to be read only by the individual or entity to whom it is addressed<br>
>> or by their designee. If the reader of this message is not the intended recipient,<br>
>> you are on notice that any distribution of this message, in any form,<br>
>> is strictly prohibited. If you have received this message in error,<br>
>> please immediately notify the sender and delete or destroy any copy of this message!<br>
</div>
</span></font></div>
</body>
</html>