diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2019-09-20 12:53:09 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2020-01-06 10:56:09 +0000 |
commit | 9e877ec60d177565776b20e3d61f723a9552ee34 (patch) | |
tree | 8e5abc8ac1a90afaa24aa08a1d674fbd19a57694 /Documentation/mainboard/supermicro | |
parent | 9b5447b7819ac99ffc3787f2ecb0c4428eea8055 (diff) |
util/supermicro: Add and use new tool smcbiosinfo
The BMC and tools interacting with it depend on metadata placed inside
the ROM in order the flash the BIOS.
Add a new tool smcbiosinfo, integrate it into the build system, and
generate a 128byte metadata file called smcbiosinfo.bin on build.
You need to provide the BoardID for every SMC mainboard through a new
Kconfig symbol: SUPERMICRO_BOARDID
Some fields are unknown, but it's sufficient to flash it using SMC
vendor tools.
Tested on Supermicro X11SSH:
* Flashing using the WebUI works
* Flashing using SMCIPMITool works
No further validation is done on the firmware.
Change-Id: Id608c2ce78614b45a2fd0b26d97d666f02223998
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35484
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'Documentation/mainboard/supermicro')
-rw-r--r-- | Documentation/mainboard/supermicro/flashing_on_vendorbmc.md | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Documentation/mainboard/supermicro/flashing_on_vendorbmc.md b/Documentation/mainboard/supermicro/flashing_on_vendorbmc.md new file mode 100644 index 0000000000..e02c57bcc4 --- /dev/null +++ b/Documentation/mainboard/supermicro/flashing_on_vendorbmc.md @@ -0,0 +1,32 @@ +# Flashing coreboot using SMC IPMI (BMC) firmware + +## Metadata +In order to flash anything to the "BIOS" IC, it needs to contain a valid +BIOSINFO struct. + +The BIOSINFO struct contains a `$FID` marker at the beginning and is +128 bytes in total. Besides the *BoardID* it contains the *firmware version* +and *build date*. The BMC verifies that the BoardID is correct and refuses to +flash if it's not. + +The struct has no checksum or cryptographic protection. + +## The smcinfobios tool + +The smcbiosinfo tool can be found in `util/supermicro/smcbiosinfo`. + +It parses the `build/build.h` header to get the current coreboot version and +build timestamp. +The *board ID* is passed as command line argument. + +It will place a file in CBFS called `smcbiosinfo.bin`, which is then found +by the vendor tools. The file contains the struct described above. + +## Flashing using SMCIPMItool + +You can use the *SMCIPMITool* to remotely flash the BIOS: + +`SMCIPMITool <remote BMC IP> <user> <password> bios update build/coreboot.rom` + +Make sure that the ME isn't in recovery mode, otherwise you get an error +message on updating the BIOS. |